mmserv/radioutility/radioserver/Session/stub/src/StubRadioSession.h
author hgs
Fri, 06 Aug 2010 16:55:00 -0500
changeset 38 9e9fc5ab059f
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  This class is the main interface to the RadioServer. It implements
hgs
parents:
diff changeset
    15
*				 the client-side session. It also contains M-observer classes that
hgs
parents:
diff changeset
    16
*				 the client must implement to receive completion notification for
hgs
parents:
diff changeset
    17
*				 asynchronous requests and spontaneous event notifications.
hgs
parents:
diff changeset
    18
*
hgs
parents:
diff changeset
    19
*/
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#ifndef RADIOSESSION_H
hgs
parents:
diff changeset
    24
#define RADIOSESSION_H
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
//  INCLUDES
hgs
parents:
diff changeset
    27
#include <mmf/common/mmfbase.h>
hgs
parents:
diff changeset
    28
#include <mmf/common/mmfcontrollerframework.h>
hgs
parents:
diff changeset
    29
#include <MCustomCommand.h>
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
#include "RadioServerData.h"
hgs
parents:
diff changeset
    32
#include "RadioStubManager.h"
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    35
class CRadioRequest;
hgs
parents:
diff changeset
    36
class CRadioEventHandler;
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
// CLASS DECLARATION
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
/**
hgs
parents:
diff changeset
    41
*  Defines functions that client must implement in order to receive
hgs
parents:
diff changeset
    42
*  events from the radio server.
hgs
parents:
diff changeset
    43
*
hgs
parents:
diff changeset
    44
*  @lib RadioSession.lib
hgs
parents:
diff changeset
    45
*  @since S60 3.0
hgs
parents:
diff changeset
    46
*/
hgs
parents:
diff changeset
    47
class MRadioObserver
hgs
parents:
diff changeset
    48
    {
hgs
parents:
diff changeset
    49
public: // New functions
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
//********** Tuner related
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
	/**
hgs
parents:
diff changeset
    54
     * Completion message for RequestTunerControl request.
hgs
parents:
diff changeset
    55
     *
hgs
parents:
diff changeset
    56
     * @since S60 3.2
hgs
parents:
diff changeset
    57
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
    58
     */
hgs
parents:
diff changeset
    59
	virtual void RequestTunerControlComplete( TRadioServerError aError ) = 0;
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
	/**
hgs
parents:
diff changeset
    62
     * Completion message for SetFrequencyRange request.
hgs
parents:
diff changeset
    63
     *
hgs
parents:
diff changeset
    64
     * @since S60 3.2
hgs
parents:
diff changeset
    65
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
    66
     */
hgs
parents:
diff changeset
    67
	virtual void SetFrequencyRangeComplete( TRadioServerError aError ) = 0;
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
	/**
hgs
parents:
diff changeset
    70
     * Completion message for SetFrequency request.
hgs
parents:
diff changeset
    71
     *
hgs
parents:
diff changeset
    72
     * @since S60 3.0
hgs
parents:
diff changeset
    73
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
    74
     */
hgs
parents:
diff changeset
    75
	virtual void SetFrequencyComplete( TRadioServerError aError ) = 0;
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
	/**
hgs
parents:
diff changeset
    78
     * Completion message for StationSeek request.
hgs
parents:
diff changeset
    79
     *
hgs
parents:
diff changeset
    80
     * @since S60 3.0
hgs
parents:
diff changeset
    81
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
    82
     * @param aFrequency Valid only if aError is KErrNone. Contains the new frequency in Hz.
hgs
parents:
diff changeset
    83
     */
hgs
parents:
diff changeset
    84
	virtual void StationSeekComplete( TRadioServerError aError, TInt aFrequency ) = 0;
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
	/**
hgs
parents:
diff changeset
    87
     * Event notification indicating FM transmitter status change. Radio receiver
hgs
parents:
diff changeset
    88
     * is turned off when FM transmitter is active.
hgs
parents:
diff changeset
    89
     *
hgs
parents:
diff changeset
    90
     * @since S60 3.2
hgs
parents:
diff changeset
    91
     * @param aActive ETrue if FM transmitter is active; EFalse otherwise.
hgs
parents:
diff changeset
    92
     */
hgs
parents:
diff changeset
    93
	virtual void RadioEventTransmitterStatusChange( TBool aActive ) = 0;
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
	/**
hgs
parents:
diff changeset
    96
     * Event notification indicating antenna status change.
hgs
parents:
diff changeset
    97
     *
hgs
parents:
diff changeset
    98
     * @since S60 3.0
hgs
parents:
diff changeset
    99
     * @param aAttached ETrue if antenna is attached.
hgs
parents:
diff changeset
   100
     */
hgs
parents:
diff changeset
   101
	virtual void RadioEventAntennaStatusChange( TBool aAttached ) = 0;
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
	/**
hgs
parents:
diff changeset
   104
     * Event notification indicating offline mode change.
hgs
parents:
diff changeset
   105
     *
hgs
parents:
diff changeset
   106
     * @since S60 3.0
hgs
parents:
diff changeset
   107
     * @param aOfflineMode ETrue if device is in offline mode.
hgs
parents:
diff changeset
   108
     */
hgs
parents:
diff changeset
   109
	virtual void RadioEventOfflineModeChange( TBool aOfflineMode ) = 0;
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
	/**
hgs
parents:
diff changeset
   112
     * Event notification indicating frequency range change. This may be caused by
hgs
parents:
diff changeset
   113
     * other applications.
hgs
parents:
diff changeset
   114
     *
hgs
parents:
diff changeset
   115
     * @since S60 3.2
hgs
parents:
diff changeset
   116
     * @param aNewRange New frequency range.
hgs
parents:
diff changeset
   117
     */
hgs
parents:
diff changeset
   118
	virtual void RadioEventFrequencyRangeChanged( TRsFrequencyRange aNewRange ) = 0;
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
	/**
hgs
parents:
diff changeset
   121
     * Event notification indicating frequency(Hz) change. This may be caused by
hgs
parents:
diff changeset
   122
     * other applications or RDS if AF/TA is enabled.
hgs
parents:
diff changeset
   123
     *
hgs
parents:
diff changeset
   124
     * @since S60 3.2
hgs
parents:
diff changeset
   125
     * @param aFrequency New frequency where tuner is currently tuned.
hgs
parents:
diff changeset
   126
     */
hgs
parents:
diff changeset
   127
	virtual void RadioEventFrequencyChange( TInt aFrequency ) = 0;
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
	/**
hgs
parents:
diff changeset
   130
     * Event notification indicating forced mono status change.
hgs
parents:
diff changeset
   131
     *
hgs
parents:
diff changeset
   132
     * @since S60 3.2
hgs
parents:
diff changeset
   133
     * @param aForcedMono ETrue if forced mode is enabled; EFalse otherwise.
hgs
parents:
diff changeset
   134
     */
hgs
parents:
diff changeset
   135
	virtual void RadioEventForcedMonoChanged( TBool aForcedMono ) = 0;
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
	/**
hgs
parents:
diff changeset
   138
     * Event notification indicating squelch (muting the frequencies without broadcast) status change.
hgs
parents:
diff changeset
   139
     *
hgs
parents:
diff changeset
   140
     * @since S60 3.2
hgs
parents:
diff changeset
   141
     * @param aSquelch ETrue if squelch is enabled; EFalse otherwise.
hgs
parents:
diff changeset
   142
     */
hgs
parents:
diff changeset
   143
	virtual void RadioEventSquelchChanged( TBool aSquelch ) = 0;
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
//********** Player related
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
	/**
hgs
parents:
diff changeset
   148
     * Event notification indicating radio player state change. This may be caused by
hgs
parents:
diff changeset
   149
     * other applications.
hgs
parents:
diff changeset
   150
     *
hgs
parents:
diff changeset
   151
     * @since S60 3.0
hgs
parents:
diff changeset
   152
     * @param aRadioOn ETrue if radio is playing, otherwise radio is off.
hgs
parents:
diff changeset
   153
     * @param aError Valid only if aRadioOn is EFalse. Contains the reason why radio is off.
hgs
parents:
diff changeset
   154
     */
hgs
parents:
diff changeset
   155
	virtual void RadioEventStateChange( TBool aRadioOn, TRadioServerError aError ) = 0;
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
	/**
hgs
parents:
diff changeset
   158
     * Event notification indicating volume change.
hgs
parents:
diff changeset
   159
     *
hgs
parents:
diff changeset
   160
     * @since S60 3.2
hgs
parents:
diff changeset
   161
     * @param aVolume New volume.
hgs
parents:
diff changeset
   162
     */
hgs
parents:
diff changeset
   163
	virtual void RadioEventVolumeChange( TInt aVolume ) = 0;
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
	/**
hgs
parents:
diff changeset
   166
     * Event notification indicating mute setting change.
hgs
parents:
diff changeset
   167
     *
hgs
parents:
diff changeset
   168
     * @since S60 3.2
hgs
parents:
diff changeset
   169
     * @param aMute ETrue indicates audio is muted.
hgs
parents:
diff changeset
   170
     */
hgs
parents:
diff changeset
   171
	virtual void RadioEventMuteChange( TBool aMute ) = 0;
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
	/**
hgs
parents:
diff changeset
   174
     * Event notification indicating balance setting change.
hgs
parents:
diff changeset
   175
     *
hgs
parents:
diff changeset
   176
     * @since S60 3.2
hgs
parents:
diff changeset
   177
     * @param aLeftPercentage Left speaker volume percentage. This value ranges from 0 to 100.
hgs
parents:
diff changeset
   178
     * @param aRightPercentage Right speaker volume percentage. This value ranges from 0 to 100.
hgs
parents:
diff changeset
   179
     */
hgs
parents:
diff changeset
   180
	virtual void RadioEventBalanceChange( TInt aLeftPercentage, TInt aRightPercentage ) = 0;
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
//********** RDS related
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
	/**
hgs
parents:
diff changeset
   185
     * Completion message for StationSeekByPTY request.
hgs
parents:
diff changeset
   186
     *
hgs
parents:
diff changeset
   187
     * @since S60 3.2
hgs
parents:
diff changeset
   188
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
   189
     * @param aFrequency The frequency(Hz) of the radio station that was found.
hgs
parents:
diff changeset
   190
     */
hgs
parents:
diff changeset
   191
	virtual void StationSeekByPTYComplete( TRadioServerError aError, TInt aFrequency ) = 0;
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
	/**
hgs
parents:
diff changeset
   194
     * Completion message for StationSeekByTA request.
hgs
parents:
diff changeset
   195
     *
hgs
parents:
diff changeset
   196
     * @since S60 3.2
hgs
parents:
diff changeset
   197
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
   198
     * @param aFrequency The frequency(Hz) of the radio station that was found.
hgs
parents:
diff changeset
   199
     */
hgs
parents:
diff changeset
   200
	virtual void StationSeekByTAComplete( TRadioServerError aError, TInt aFrequency ) = 0;
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
	/**
hgs
parents:
diff changeset
   203
     * Completion message for StationSeekByTP request.
hgs
parents:
diff changeset
   204
     *
hgs
parents:
diff changeset
   205
     * @since S60 3.2
hgs
parents:
diff changeset
   206
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
   207
     * @param aFrequency The frequency(Hz) of the radio station that was found.
hgs
parents:
diff changeset
   208
     */
hgs
parents:
diff changeset
   209
	virtual void StationSeekByTPComplete( TRadioServerError aError, TInt aFrequency ) = 0;
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
	/**
hgs
parents:
diff changeset
   212
     * Completion message for GetFreqByPTY request.
hgs
parents:
diff changeset
   213
     *
hgs
parents:
diff changeset
   214
     * @since S60 3.2
hgs
parents:
diff changeset
   215
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
   216
     * @param aFreqList Array of frequencies (Hz), valid only if aError is KErrNone.
hgs
parents:
diff changeset
   217
     */
hgs
parents:
diff changeset
   218
	virtual void GetFreqByPTYComplete( TRadioServerError aError, RArray<TInt>& aFreqList ) = 0;
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
	/**
hgs
parents:
diff changeset
   221
     * Completion message for GetFreqByTA request.
hgs
parents:
diff changeset
   222
     *
hgs
parents:
diff changeset
   223
     * @since S60 3.2
hgs
parents:
diff changeset
   224
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
   225
     * @param aFreqList Array of frequencies (Hz), valid only if aError is KErrNone.
hgs
parents:
diff changeset
   226
     */
hgs
parents:
diff changeset
   227
	virtual void GetFreqByTAComplete( TRadioServerError aError, RArray<TInt>& aFreqList ) = 0;
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
	/**
hgs
parents:
diff changeset
   230
     * Completion message for StatGetPSByPTY request.
hgs
parents:
diff changeset
   231
     *
hgs
parents:
diff changeset
   232
     * @since S60 3.2
hgs
parents:
diff changeset
   233
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
   234
     * @param aPsList Array of programme service names, valid only if aError is KErrNone.
hgs
parents:
diff changeset
   235
     */
hgs
parents:
diff changeset
   236
	virtual void GetPSByPTYComplete( TRadioServerError aError, RArray<TRsRdsPSName>& aPsList ) = 0;
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
	/**
hgs
parents:
diff changeset
   239
     * Completion message for GetPSByTA request.
hgs
parents:
diff changeset
   240
     *
hgs
parents:
diff changeset
   241
     * @since S60 3.2
hgs
parents:
diff changeset
   242
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
   243
     * @param aPsList Array of programme service names, valid only if aError is KErrNone.
hgs
parents:
diff changeset
   244
     */
hgs
parents:
diff changeset
   245
	virtual void GetPSByTAComplete( TRadioServerError aError, RArray<TRsRdsPSName>& aPsList ) = 0;
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
	/**
hgs
parents:
diff changeset
   248
     * Event notification indicating new Programme Identification(PI) is available.
hgs
parents:
diff changeset
   249
     *
hgs
parents:
diff changeset
   250
     * @since S60 3.2
hgs
parents:
diff changeset
   251
     * @param aPi Programme identification
hgs
parents:
diff changeset
   252
     */
hgs
parents:
diff changeset
   253
	virtual void RadioEventRdsDataPI( TInt aPi ) = 0;
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
	/**
hgs
parents:
diff changeset
   256
     * Event notification indicating new Programme Type(PTY) is available.
hgs
parents:
diff changeset
   257
     *
hgs
parents:
diff changeset
   258
     * @since S60 3.2
hgs
parents:
diff changeset
   259
     * @param aPty Programme type
hgs
parents:
diff changeset
   260
     */
hgs
parents:
diff changeset
   261
	virtual void RadioEventRdsDataPTY( TRsRdsProgrammeType aPty ) = 0;
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
	/**
hgs
parents:
diff changeset
   264
     * Event notification indicating new Programme Service(PS) is available.
hgs
parents:
diff changeset
   265
     *
hgs
parents:
diff changeset
   266
     * @since S60 3.2
hgs
parents:
diff changeset
   267
     * @param aPs Programme service
hgs
parents:
diff changeset
   268
     */
hgs
parents:
diff changeset
   269
	virtual void RadioEventRdsDataPS( TRsRdsPSName& aPs ) = 0;
hgs
parents:
diff changeset
   270
hgs
parents:
diff changeset
   271
	/**
hgs
parents:
diff changeset
   272
     * Event notification indicating new Radio Text(RT) is available.
hgs
parents:
diff changeset
   273
     *
hgs
parents:
diff changeset
   274
     * @since S60 3.2
hgs
parents:
diff changeset
   275
     * @param aRt Radio text
hgs
parents:
diff changeset
   276
     */
hgs
parents:
diff changeset
   277
	virtual void RadioEventRdsDataRT( TRsRdsRadioText& aRt ) = 0;
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
	/**
hgs
parents:
diff changeset
   280
     * Event notification indicating new Clock Time(CT) is available.
hgs
parents:
diff changeset
   281
     *
hgs
parents:
diff changeset
   282
     * @since S60 3.2
hgs
parents:
diff changeset
   283
     * @param aCt Clock time
hgs
parents:
diff changeset
   284
     */
hgs
parents:
diff changeset
   285
	virtual void RadioEventRdsDataCT( TDateTime& aCt ) = 0;
hgs
parents:
diff changeset
   286
hgs
parents:
diff changeset
   287
	/**
hgs
parents:
diff changeset
   288
     * Event notification indicating Traffice Announcement(TA) status change.
hgs
parents:
diff changeset
   289
     *
hgs
parents:
diff changeset
   290
     * @since S60 3.2
hgs
parents:
diff changeset
   291
     * @param aTaOn ETrue indicates that Traffic Announcement is on.
hgs
parents:
diff changeset
   292
     */
hgs
parents:
diff changeset
   293
	virtual void RadioEventRdsDataTA( TBool aTaOn ) = 0;
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
	/**
hgs
parents:
diff changeset
   296
     * Event notification indicating new Radio Text+(RT+) is available.
hgs
parents:
diff changeset
   297
     *
hgs
parents:
diff changeset
   298
     * @since S60 3.2
hgs
parents:
diff changeset
   299
	 * @param aRtPlusClass Radio text plus class
hgs
parents:
diff changeset
   300
	 * @param aRtPlusData Radio text plus data
hgs
parents:
diff changeset
   301
	 */
hgs
parents:
diff changeset
   302
	virtual void RadioEventRdsDataRTplus( TRsRdsRTplusClass aRtPlusClass, TRsRdsRadioText& aRtPlusData ) = 0;
hgs
parents:
diff changeset
   303
hgs
parents:
diff changeset
   304
	/**
hgs
parents:
diff changeset
   305
     * Event notification indicating the beginning of Alternate Frequency(AF) search.
hgs
parents:
diff changeset
   306
     *
hgs
parents:
diff changeset
   307
     * @since S60 3.2
hgs
parents:
diff changeset
   308
     */
hgs
parents:
diff changeset
   309
	virtual void RadioEventRdsSearchBeginAF() = 0;
hgs
parents:
diff changeset
   310
hgs
parents:
diff changeset
   311
	/**
hgs
parents:
diff changeset
   312
     * Event notification indicating the end of Alternate Frequency(AF) search.
hgs
parents:
diff changeset
   313
     *
hgs
parents:
diff changeset
   314
     * @since S60 3.2
hgs
parents:
diff changeset
   315
     * @param aError KErrNone if successful, otherwise one of the system/RadioServer errors.
hgs
parents:
diff changeset
   316
     * @param aFrequency The frequency(Hz) of the radio station that was found.
hgs
parents:
diff changeset
   317
     */
hgs
parents:
diff changeset
   318
	virtual void RadioEventRdsSearchEndAF( TRadioServerError aError, TInt aFrequency ) = 0;
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
	/**
hgs
parents:
diff changeset
   321
     * Event notification indicating station change to another frequency(Hz) that is
hgs
parents:
diff changeset
   322
     * broadcasting Traffic Announcement(TA).
hgs
parents:
diff changeset
   323
     *
hgs
parents:
diff changeset
   324
     * @since S60 3.2
hgs
parents:
diff changeset
   325
     * @param aFrequency The frequency(Hz) of the radio station that was found.
hgs
parents:
diff changeset
   326
     */
hgs
parents:
diff changeset
   327
	virtual void RadioEventRdsStationChangeTA( TInt aFrequency ) = 0;
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
	/**
hgs
parents:
diff changeset
   330
     * Event notification indicating automatic switching (AF) setting change.
hgs
parents:
diff changeset
   331
     *
hgs
parents:
diff changeset
   332
     * @since S60 3.2
hgs
parents:
diff changeset
   333
     * @param aAuto ETrue indicates that automatic switching is on.
hgs
parents:
diff changeset
   334
     */
hgs
parents:
diff changeset
   335
	virtual void RadioEventRdsAutomaticSwitchingChange( TBool aAuto ) = 0;
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
	/**
hgs
parents:
diff changeset
   338
     * Event notification indicating automatic traffic announcement setting change.
hgs
parents:
diff changeset
   339
     *
hgs
parents:
diff changeset
   340
     * @since S60 3.2
hgs
parents:
diff changeset
   341
     * @param aAuto ETrue indicates that automatic traffic announcement is on.
hgs
parents:
diff changeset
   342
     */
hgs
parents:
diff changeset
   343
	virtual void RadioEventRdsAutomaticTrafficAnnouncement( TBool aAuto ) = 0;
hgs
parents:
diff changeset
   344
hgs
parents:
diff changeset
   345
	/**
hgs
parents:
diff changeset
   346
     * Event notification indicating RDS signal status change (i.e. signal is lost/restored).
hgs
parents:
diff changeset
   347
     *
hgs
parents:
diff changeset
   348
     * @since S60 3.2
hgs
parents:
diff changeset
   349
     * @param aSignal ETrue indicates that RDS signal is available in the tuned frequency.
hgs
parents:
diff changeset
   350
     */
hgs
parents:
diff changeset
   351
	virtual void RadioEventRdsSignalChange( TBool aSignal ) = 0;
hgs
parents:
diff changeset
   352
    };
hgs
parents:
diff changeset
   353
hgs
parents:
diff changeset
   354
/**
hgs
parents:
diff changeset
   355
*  Main interface to the Radio Server.
hgs
parents:
diff changeset
   356
*  Implements the client-side session.
hgs
parents:
diff changeset
   357
*
hgs
parents:
diff changeset
   358
*  @lib RadioSession.lib
hgs
parents:
diff changeset
   359
*  @since S60 3.0
hgs
parents:
diff changeset
   360
*/
hgs
parents:
diff changeset
   361
class RRadioSession : public RSessionBase,
hgs
parents:
diff changeset
   362
					  public MCustomCommand
hgs
parents:
diff changeset
   363
    {
hgs
parents:
diff changeset
   364
public: // New functions
hgs
parents:
diff changeset
   365
    IMPORT_C static RRadioSession* NewL();
hgs
parents:
diff changeset
   366
    
hgs
parents:
diff changeset
   367
public:  // Constructors and destructor
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
	/**
hgs
parents:
diff changeset
   370
     * C++ default constructor.
hgs
parents:
diff changeset
   371
     */
hgs
parents:
diff changeset
   372
	IMPORT_C RRadioSession();
hgs
parents:
diff changeset
   373
hgs
parents:
diff changeset
   374
public: // New functions
hgs
parents:
diff changeset
   375
hgs
parents:
diff changeset
   376
    /**
hgs
parents:
diff changeset
   377
     * Connects a client to the radio server.
hgs
parents:
diff changeset
   378
     * @since S60 3.0
hgs
parents:
diff changeset
   379
     *
hgs
parents:
diff changeset
   380
     * @param aObserver The observer object for receiving async completion callbacks.
hgs
parents:
diff changeset
   381
     * @param aPrimaryClient Indicates whether the client is a primary client. Primary
hgs
parents:
diff changeset
   382
     * clients are clients that can control the radio tuner such as FM Radio Application,
hgs
parents:
diff changeset
   383
     * Visual Radio, or a Java Radio App.  Non-primary clients are observers of the tuner,
hgs
parents:
diff changeset
   384
     * player, and RDS utilities and cannot exist without a primary client such as Active
hgs
parents:
diff changeset
   385
     * Idle, Cover UI, or a smart accessory driver.
hgs
parents:
diff changeset
   386
     * @return A standard system error code.
hgs
parents:
diff changeset
   387
     */
hgs
parents:
diff changeset
   388
	IMPORT_C TInt Connect( MRadioObserver& aObserver, TBool aPrimaryClient );
hgs
parents:
diff changeset
   389
hgs
parents:
diff changeset
   390
	/**
hgs
parents:
diff changeset
   391
     * Gets the client side version number.
hgs
parents:
diff changeset
   392
     *
hgs
parents:
diff changeset
   393
     * @since S60 3.0
hgs
parents:
diff changeset
   394
     * @return The client side version number.
hgs
parents:
diff changeset
   395
     */
hgs
parents:
diff changeset
   396
	IMPORT_C TVersion Version() const;
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
	/**
hgs
parents:
diff changeset
   399
     * Closes connection to the radio server.
hgs
parents:
diff changeset
   400
     *
hgs
parents:
diff changeset
   401
     * @since S60 3.0
hgs
parents:
diff changeset
   402
     */
hgs
parents:
diff changeset
   403
	IMPORT_C void Close();
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
//********** TunerUtility control begins
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
	/**
hgs
parents:
diff changeset
   408
     * Request for control of a tuner. If this method returns KErrNone, control of
hgs
parents:
diff changeset
   409
     * the tuner has been granted. Control to the tuner must be granted before any
hgs
parents:
diff changeset
   410
     * other request can be made.
hgs
parents:
diff changeset
   411
     *
hgs
parents:
diff changeset
   412
     * @since S60 3.2
hgs
parents:
diff changeset
   413
     * @param Tuner type (e.g. FM, AM)
hgs
parents:
diff changeset
   414
     * @return A standard system error code.
hgs
parents:
diff changeset
   415
     * @see MRadioObserver::RequestTunerControlComplete
hgs
parents:
diff changeset
   416
     */
hgs
parents:
diff changeset
   417
	IMPORT_C void RequestTunerControl( TRsTuner aTuner );
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
	/**
hgs
parents:
diff changeset
   420
     * Get the capabilities of the radio on the device.
hgs
parents:
diff changeset
   421
     *
hgs
parents:
diff changeset
   422
     * @since S60 3.2
hgs
parents:
diff changeset
   423
     * @param aCaps The capabilities object to fill
hgs
parents:
diff changeset
   424
     * @return A standard system error code.
hgs
parents:
diff changeset
   425
     */
hgs
parents:
diff changeset
   426
	IMPORT_C TInt GetTunerCapabilities( TRsTunerCapabilities& aCaps ) const;
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
	/**
hgs
parents:
diff changeset
   429
     * EnableTunerInOfflineMode on the device.
hgs
parents:
diff changeset
   430
     *
hgs
parents:
diff changeset
   431
     * @since S60 3.2
hgs
parents:
diff changeset
   432
     * @param aEnable ETrue to enable tuner functions in offline mode, EFalse to disable.
hgs
parents:
diff changeset
   433
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   434
     */
hgs
parents:
diff changeset
   435
	IMPORT_C TInt EnableTunerInOfflineMode( TBool aEnable );
hgs
parents:
diff changeset
   436
hgs
parents:
diff changeset
   437
	/**
hgs
parents:
diff changeset
   438
     * Asynchronous request to set the frequency range. If the frequency range is not set,
hgs
parents:
diff changeset
   439
     * it will be defaulted to ERsTunerFM.
hgs
parents:
diff changeset
   440
     *
hgs
parents:
diff changeset
   441
     * @since S60 3.2
hgs
parents:
diff changeset
   442
     * @param aRange Frequency range
hgs
parents:
diff changeset
   443
     * @see MRadioObserver::SetFrequencyRangeComplete
hgs
parents:
diff changeset
   444
     */
hgs
parents:
diff changeset
   445
	IMPORT_C void SetFrequencyRange( TRsFrequencyRange aRange );
hgs
parents:
diff changeset
   446
hgs
parents:
diff changeset
   447
	/**
hgs
parents:
diff changeset
   448
     * Cancels an outstanding SetFrequencyRange request. Note that SetFrequencyRange may
hgs
parents:
diff changeset
   449
     * complete before cancel can occur and a callback may occur.
hgs
parents:
diff changeset
   450
     *
hgs
parents:
diff changeset
   451
     * @since S60 3.2
hgs
parents:
diff changeset
   452
     * @return A standard system error code.
hgs
parents:
diff changeset
   453
     */
hgs
parents:
diff changeset
   454
	IMPORT_C void CancelSetFrequencyRange();
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
	/**
hgs
parents:
diff changeset
   457
     * Get the current frequency range. It also returns the minimum and maximum frequencies(Hz)
hgs
parents:
diff changeset
   458
     * for the returned range.
hgs
parents:
diff changeset
   459
     *
hgs
parents:
diff changeset
   460
     * @since S60 3.2
hgs
parents:
diff changeset
   461
     * @param aRange On return contains the current frequency range.
hgs
parents:
diff changeset
   462
     * @param aMinFreq On return contains the minimum frequency for the current frequency range.
hgs
parents:
diff changeset
   463
     * @param aMaxFreq On return contains the maximum frequency for the current frequency range.
hgs
parents:
diff changeset
   464
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   465
     */
hgs
parents:
diff changeset
   466
	IMPORT_C TInt GetFrequencyRange( TRsFrequencyRange& aRange, TInt& aMinFreq, TInt& aMaxFreq ) const;
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
	/**
hgs
parents:
diff changeset
   469
     * Asynchronous request to tune the tuner to the specified frequency.
hgs
parents:
diff changeset
   470
     *
hgs
parents:
diff changeset
   471
     * @since S60 3.2
hgs
parents:
diff changeset
   472
     * @param aFrequency The frequency (Hz) to tune to
hgs
parents:
diff changeset
   473
     * @see MRadioObserver::SetFrequecyComplete
hgs
parents:
diff changeset
   474
     */
hgs
parents:
diff changeset
   475
	IMPORT_C void SetFrequency( TInt aFrequency );
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
	/**
hgs
parents:
diff changeset
   478
     * Cancels an outstanding SetFrequency request. Note that SetFrequency may complete before
hgs
parents:
diff changeset
   479
     * cancel can occur and a callback to MRadioObserver::SetFrequencyComplete may occur.
hgs
parents:
diff changeset
   480
     *
hgs
parents:
diff changeset
   481
     * @since S60 3.0
hgs
parents:
diff changeset
   482
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   483
     */
hgs
parents:
diff changeset
   484
	IMPORT_C void CancelSetFrequency();
hgs
parents:
diff changeset
   485
hgs
parents:
diff changeset
   486
	/**
hgs
parents:
diff changeset
   487
     * Get the current frequency.
hgs
parents:
diff changeset
   488
     *
hgs
parents:
diff changeset
   489
     * @since S60 3.2
hgs
parents:
diff changeset
   490
     * @param aFrequency On return contains the current frequency(Hz).
hgs
parents:
diff changeset
   491
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   492
     */
hgs
parents:
diff changeset
   493
	IMPORT_C TInt GetFrequency( TInt& aFrequency ) const;
hgs
parents:
diff changeset
   494
hgs
parents:
diff changeset
   495
	/**
hgs
parents:
diff changeset
   496
     * Asynchronous request to find a radio station, starting from current frequency and
hgs
parents:
diff changeset
   497
     * seaching in the direction specified (i.e. up or down).
hgs
parents:
diff changeset
   498
     *
hgs
parents:
diff changeset
   499
     * @since S60 3.0
hgs
parents:
diff changeset
   500
     * @param aSeekUp Search direction
hgs
parents:
diff changeset
   501
     * @see MRadioObserver::StationSeekComplete
hgs
parents:
diff changeset
   502
     */
hgs
parents:
diff changeset
   503
	IMPORT_C void StationSeek( TBool aUpwards );
hgs
parents:
diff changeset
   504
hgs
parents:
diff changeset
   505
	/**
hgs
parents:
diff changeset
   506
     * Cancels an outstanding StationSeek request. Note that StationSeek may complete before
hgs
parents:
diff changeset
   507
     * cancel can occur and a callback to MRadioObserver::StationSeekComplete may occur.
hgs
parents:
diff changeset
   508
     *
hgs
parents:
diff changeset
   509
     * @since S60 3.0
hgs
parents:
diff changeset
   510
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   511
     */
hgs
parents:
diff changeset
   512
	IMPORT_C void CancelStationSeek();
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
	/**
hgs
parents:
diff changeset
   515
     * Gets the signal strength of the currently tuned signal.
hgs
parents:
diff changeset
   516
     *
hgs
parents:
diff changeset
   517
     * @since S60 3.2
hgs
parents:
diff changeset
   518
     * @param aStrength On return contains the current signal strength.
hgs
parents:
diff changeset
   519
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   520
     */
hgs
parents:
diff changeset
   521
	IMPORT_C TInt GetSignalStrength( TInt& aSignalStrength ) const;
hgs
parents:
diff changeset
   522
hgs
parents:
diff changeset
   523
	/**
hgs
parents:
diff changeset
   524
     * Gets the maximum possible signal strength of a tuned signal.
hgs
parents:
diff changeset
   525
     *
hgs
parents:
diff changeset
   526
     * @since S60 3.2
hgs
parents:
diff changeset
   527
     * @param aMaxStrength On return contains the maximum signal strength.
hgs
parents:
diff changeset
   528
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   529
     */
hgs
parents:
diff changeset
   530
	IMPORT_C TInt GetMaxSignalStrength( TInt& aMaxSignalStrength ) const;
hgs
parents:
diff changeset
   531
hgs
parents:
diff changeset
   532
	/**
hgs
parents:
diff changeset
   533
     * Get the stereo mode of the radio.
hgs
parents:
diff changeset
   534
     *
hgs
parents:
diff changeset
   535
     * @since S60 3.2
hgs
parents:
diff changeset
   536
     * @param aStereo On return, will be ETrue if signal is stereo.
hgs
parents:
diff changeset
   537
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   538
     */
hgs
parents:
diff changeset
   539
	IMPORT_C TInt GetStereoMode( TBool& aStereo ) const;
hgs
parents:
diff changeset
   540
hgs
parents:
diff changeset
   541
	/**
hgs
parents:
diff changeset
   542
     * Indicates whether the reception should be forced into monophonic mode.
hgs
parents:
diff changeset
   543
     *
hgs
parents:
diff changeset
   544
     * @since S60 3.2
hgs
parents:
diff changeset
   545
     * @param aMono If ETrue, all reception will be in mono mode even if a stereo signal is
hgs
parents:
diff changeset
   546
     *		 available. If EFalse, a stereo signal will be received when possible.
hgs
parents:
diff changeset
   547
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   548
     */
hgs
parents:
diff changeset
   549
	IMPORT_C TInt ForceMonoReception( TBool aForcedMono );
hgs
parents:
diff changeset
   550
hgs
parents:
diff changeset
   551
	/**
hgs
parents:
diff changeset
   552
     * Checks whether force mono reception is on or not.
hgs
parents:
diff changeset
   553
     * @since S60 3.2
hgs
parents:
diff changeset
   554
     * @param aForceMono ETrue if force mono is on, EFalse otherwise.
hgs
parents:
diff changeset
   555
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   556
     */
hgs
parents:
diff changeset
   557
	IMPORT_C TInt GetForceMonoReception( TBool& aForcedMono ) const;
hgs
parents:
diff changeset
   558
hgs
parents:
diff changeset
   559
	/**
hgs
parents:
diff changeset
   560
     * Enable or disable quelch.
hgs
parents:
diff changeset
   561
     *
hgs
parents:
diff changeset
   562
     * @since S60 3.2
hgs
parents:
diff changeset
   563
     * @param aEnabled ETrue to enable squelching, EFalse to disable it.
hgs
parents:
diff changeset
   564
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   565
     */
hgs
parents:
diff changeset
   566
	IMPORT_C TInt SetSquelch( TBool aEnabled );
hgs
parents:
diff changeset
   567
hgs
parents:
diff changeset
   568
	/**
hgs
parents:
diff changeset
   569
	 * Retrieves the current squelching (muting in frequencies without reception) setting
hgs
parents:
diff changeset
   570
     *
hgs
parents:
diff changeset
   571
     * @since S60 3.2
hgs
parents:
diff changeset
   572
     * @param aSquelch ETrue if a squelching is currently enabled
hgs
parents:
diff changeset
   573
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   574
     */
hgs
parents:
diff changeset
   575
	IMPORT_C TInt GetSquelch( TBool& aSquelch ) const;
hgs
parents:
diff changeset
   576
hgs
parents:
diff changeset
   577
//********** PlayerUtility control begins
hgs
parents:
diff changeset
   578
hgs
parents:
diff changeset
   579
	/**
hgs
parents:
diff changeset
   580
     * Retrieve the current state of the player.
hgs
parents:
diff changeset
   581
	 * If the radio is already playing, client should simply retrieve current settings such
hgs
parents:
diff changeset
   582
     * as volume, etc.
hgs
parents:
diff changeset
   583
     *
hgs
parents:
diff changeset
   584
     * @since S60 3.2
hgs
parents:
diff changeset
   585
     * @return Radio player state.
hgs
parents:
diff changeset
   586
     */
hgs
parents:
diff changeset
   587
	IMPORT_C TInt PlayerState( TRsPlayerState& aState ) const;
hgs
parents:
diff changeset
   588
hgs
parents:
diff changeset
   589
	/**
hgs
parents:
diff changeset
   590
     * Starts radio playback.
hgs
parents:
diff changeset
   591
     *
hgs
parents:
diff changeset
   592
     * @since S60 3.0
hgs
parents:
diff changeset
   593
     */
hgs
parents:
diff changeset
   594
	IMPORT_C void Play();
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
	/**
hgs
parents:
diff changeset
   597
     * Stops playback, and release the output device for use by other clients.
hgs
parents:
diff changeset
   598
     *
hgs
parents:
diff changeset
   599
     * @since S60 3.0
hgs
parents:
diff changeset
   600
     * @param aIfOnlyPrimaryClient ETrue to stop playback only if there are no other primary clients
hgs
parents:
diff changeset
   601
     */
hgs
parents:
diff changeset
   602
	IMPORT_C void Stop( TBool aIfOnlyPrimaryClient = EFalse );
hgs
parents:
diff changeset
   603
hgs
parents:
diff changeset
   604
	/**
hgs
parents:
diff changeset
   605
     * Retrieves the maximum volume supported.
hgs
parents:
diff changeset
   606
     *
hgs
parents:
diff changeset
   607
     * @since S60 3.0
hgs
parents:
diff changeset
   608
     * @param aVolume On return contains the maximum volume.
hgs
parents:
diff changeset
   609
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   610
     */
hgs
parents:
diff changeset
   611
	IMPORT_C TInt GetMaxVolume( TInt& aMaxVolume ) const;
hgs
parents:
diff changeset
   612
hgs
parents:
diff changeset
   613
	/**
hgs
parents:
diff changeset
   614
     * Sets the volume to the specified level.
hgs
parents:
diff changeset
   615
     *
hgs
parents:
diff changeset
   616
     * @since S60 3.0
hgs
parents:
diff changeset
   617
     * @param aVolume The volume level to set
hgs
parents:
diff changeset
   618
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   619
     */
hgs
parents:
diff changeset
   620
	IMPORT_C TInt SetVolume( TInt aVolume );
hgs
parents:
diff changeset
   621
hgs
parents:
diff changeset
   622
	/**
hgs
parents:
diff changeset
   623
     * Get the current volume.
hgs
parents:
diff changeset
   624
     *
hgs
parents:
diff changeset
   625
     * @since S60 3.2
hgs
parents:
diff changeset
   626
     * @param aVolume On return contains the current volume.
hgs
parents:
diff changeset
   627
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   628
     */
hgs
parents:
diff changeset
   629
	IMPORT_C TInt GetVolume( TInt& aVolume ) const;
hgs
parents:
diff changeset
   630
hgs
parents:
diff changeset
   631
	/**
hgs
parents:
diff changeset
   632
     * Set a volume ramp.
hgs
parents:
diff changeset
   633
     *
hgs
parents:
diff changeset
   634
     * @since S60 3.2
hgs
parents:
diff changeset
   635
     * @param aRampInterval The time interval over which the volume should be increased from
hgs
parents:
diff changeset
   636
     *		 zero to the current volume setting.
hgs
parents:
diff changeset
   637
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   638
     */
hgs
parents:
diff changeset
   639
	IMPORT_C TInt SetVolumeRamp( const TTimeIntervalMicroSeconds& aRampInterval );
hgs
parents:
diff changeset
   640
hgs
parents:
diff changeset
   641
	/**
hgs
parents:
diff changeset
   642
     * Mutes or unmutes playback.
hgs
parents:
diff changeset
   643
     *
hgs
parents:
diff changeset
   644
     * @since S60 3.0
hgs
parents:
diff changeset
   645
     * @param aMute ETrue to mute the audio, EFalse to unmute it.
hgs
parents:
diff changeset
   646
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   647
     */
hgs
parents:
diff changeset
   648
	IMPORT_C TInt Mute( TBool aMute );
hgs
parents:
diff changeset
   649
hgs
parents:
diff changeset
   650
	/**
hgs
parents:
diff changeset
   651
     * Find out if the audio is muted or not.
hgs
parents:
diff changeset
   652
     *
hgs
parents:
diff changeset
   653
     * @since S60 3.2
hgs
parents:
diff changeset
   654
     * @param aVolume On return set to ETrue if audio is muted.
hgs
parents:
diff changeset
   655
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   656
     */
hgs
parents:
diff changeset
   657
	IMPORT_C TInt GetMuteStatus( TBool& aMute ) const;
hgs
parents:
diff changeset
   658
hgs
parents:
diff changeset
   659
	/**
hgs
parents:
diff changeset
   660
     * Set the speaker balance for playing.
hgs
parents:
diff changeset
   661
     *
hgs
parents:
diff changeset
   662
     * @since S60 3.2
hgs
parents:
diff changeset
   663
     * @param aLeftPercentage Left speaker volume percentage. This value ranges from 0 to 100.
hgs
parents:
diff changeset
   664
     * @param aRightPercentage Right speaker volume percentage. This value ranges from 0 to 100.
hgs
parents:
diff changeset
   665
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   666
     */
hgs
parents:
diff changeset
   667
	IMPORT_C TInt SetBalance( TInt aLeftPercentage, TInt aRightPercentage );
hgs
parents:
diff changeset
   668
hgs
parents:
diff changeset
   669
	/**
hgs
parents:
diff changeset
   670
     * Get the current speaker balance setting.
hgs
parents:
diff changeset
   671
     *
hgs
parents:
diff changeset
   672
     * @since S60 3.2
hgs
parents:
diff changeset
   673
     * @param aLeftPercentage On return contains the left speaker volume percentage.
hgs
parents:
diff changeset
   674
     * @param aRightPercentage On return contains the right speaker volume percentage.
hgs
parents:
diff changeset
   675
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   676
     */
hgs
parents:
diff changeset
   677
	IMPORT_C TInt GetBalance( TInt& aLeftPercentage, TInt& aRightPercentage ) const;
hgs
parents:
diff changeset
   678
hgs
parents:
diff changeset
   679
//********** RDSUtility control begins
hgs
parents:
diff changeset
   680
hgs
parents:
diff changeset
   681
	/**
hgs
parents:
diff changeset
   682
     * Get the capabilities of the RDS control on the device.
hgs
parents:
diff changeset
   683
     *
hgs
parents:
diff changeset
   684
     * @since S60 3.2
hgs
parents:
diff changeset
   685
     * @param aCaps The capabilities object to fill
hgs
parents:
diff changeset
   686
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   687
     */
hgs
parents:
diff changeset
   688
	IMPORT_C TInt GetRdsCapabilities( TRsRdsCapabilities& aCaps ) const;
hgs
parents:
diff changeset
   689
hgs
parents:
diff changeset
   690
	/**
hgs
parents:
diff changeset
   691
     * Get the status of the RDS reception.
hgs
parents:
diff changeset
   692
     *
hgs
parents:
diff changeset
   693
     * @since S60 3.2
hgs
parents:
diff changeset
   694
     * @param aRdsSignal On return, will be ETrue if RDS signal can be recepted, EFalse otherwise.
hgs
parents:
diff changeset
   695
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   696
     */
hgs
parents:
diff changeset
   697
	IMPORT_C TInt GetRdsSignalStatus( TBool& aRdsSignal ) const;
hgs
parents:
diff changeset
   698
hgs
parents:
diff changeset
   699
	/**
hgs
parents:
diff changeset
   700
     * Subscribe for notification for the specified RDS data. Client should first check
hgs
parents:
diff changeset
   701
     * the capabilities to see if a feature is supported.
hgs
parents:
diff changeset
   702
     * Request for notification for non-supported features will simply be ignored.
hgs
parents:
diff changeset
   703
     *
hgs
parents:
diff changeset
   704
     * @since S60 3.2
hgs
parents:
diff changeset
   705
     * @param aRdsData Bitfield indicating notification request.
hgs
parents:
diff changeset
   706
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   707
     * @see MRadioObserver::RadioEventRdsDataPI
hgs
parents:
diff changeset
   708
     * @see MRadioObserver::RadioEventRdsDataPTY
hgs
parents:
diff changeset
   709
     * @see MRadioObserver::RadioEventRdsDataPS
hgs
parents:
diff changeset
   710
     * @see MRadioObserver::RadioEventRdsDataRT
hgs
parents:
diff changeset
   711
     * @see MRadioObserver::RadioEventRdsDataCT
hgs
parents:
diff changeset
   712
     * @see MRadioObserver::RadioEventRdsDataTA
hgs
parents:
diff changeset
   713
     */
hgs
parents:
diff changeset
   714
	IMPORT_C TInt NotifyRdsDataChange( TRsRdsData aRdsData );
hgs
parents:
diff changeset
   715
hgs
parents:
diff changeset
   716
	/**
hgs
parents:
diff changeset
   717
     * Cancel NotifyRdsDataChange request.
hgs
parents:
diff changeset
   718
     *
hgs
parents:
diff changeset
   719
     * @since S60 3.2
hgs
parents:
diff changeset
   720
     */
hgs
parents:
diff changeset
   721
	IMPORT_C void CancelNotifyRdsDataChange();
hgs
parents:
diff changeset
   722
hgs
parents:
diff changeset
   723
    /**
hgs
parents:
diff changeset
   724
     * Subscribe for notification for the specified RadioText+ data. Client should first check
hgs
parents:
diff changeset
   725
     * the capabilities to see if RT+ feature is supported.
hgs
parents:
diff changeset
   726
     * Returns KErrNotSupported if RT+ is not supported.
hgs
parents:
diff changeset
   727
     *
hgs
parents:
diff changeset
   728
     * Note that if the client wishes to receive the entire radio text data chunk, client should
hgs
parents:
diff changeset
   729
     * subscribe for ERsRdsRadioText using NotifyRdsDataChange instead.
hgs
parents:
diff changeset
   730
     *
hgs
parents:
diff changeset
   731
     * @since S60 3.2
hgs
parents:
diff changeset
   732
     * @param aRtPlusClasses Array of RT+ class to be notified
hgs
parents:
diff changeset
   733
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   734
     * @see MRadioObserver::RadioEventRdsDataRTplus
hgs
parents:
diff changeset
   735
     */
hgs
parents:
diff changeset
   736
    IMPORT_C TInt NotifyRadioTextPlusChange( RArray<TInt>& aRtPlusClasses );
hgs
parents:
diff changeset
   737
hgs
parents:
diff changeset
   738
	/**
hgs
parents:
diff changeset
   739
     * Cancel NotifyRadioTextPlusChange request.
hgs
parents:
diff changeset
   740
     *
hgs
parents:
diff changeset
   741
     * @since S60 3.2
hgs
parents:
diff changeset
   742
     */
hgs
parents:
diff changeset
   743
	IMPORT_C void CancelNotifyRadioTextPlusChange();
hgs
parents:
diff changeset
   744
hgs
parents:
diff changeset
   745
	/**
hgs
parents:
diff changeset
   746
     * Turn on/off automatic switching of frequency based on Alternate Frequency.
hgs
parents:
diff changeset
   747
     * This will cause RDS device to search for alternate frequency when the signal strength
hgs
parents:
diff changeset
   748
     * deteriorates. User should be ready to receive RadioEventRdsSearchBeginAF and
hgs
parents:
diff changeset
   749
     * RadioEventRdsSearchEndAF. Automatic switching is off by default.
hgs
parents:
diff changeset
   750
     *
hgs
parents:
diff changeset
   751
     * @since S60 3.2
hgs
parents:
diff changeset
   752
     * @param aAuto ETrue to turn automatic switching on, EFalse to turn it off.
hgs
parents:
diff changeset
   753
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   754
     * @see MRadioObserver::RadioEventRdsSearchBeginAF
hgs
parents:
diff changeset
   755
	 * @see MRadioObserver::RadioEventRdsSearchEndAF
hgs
parents:
diff changeset
   756
     */
hgs
parents:
diff changeset
   757
	IMPORT_C TInt SetAutomaticSwitching( TBool aAuto );
hgs
parents:
diff changeset
   758
hgs
parents:
diff changeset
   759
	/**
hgs
parents:
diff changeset
   760
     * Find out whether automatic switching is on or off.
hgs
parents:
diff changeset
   761
     *
hgs
parents:
diff changeset
   762
     * @since S60 3.2
hgs
parents:
diff changeset
   763
     * @param aAuto On return, ETrue indicates that automatic switching is enabled.
hgs
parents:
diff changeset
   764
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   765
     */
hgs
parents:
diff changeset
   766
	IMPORT_C TInt GetAutomaticSwitching( TBool& aAuto );
hgs
parents:
diff changeset
   767
hgs
parents:
diff changeset
   768
	/**
hgs
parents:
diff changeset
   769
     * Cancel ongoing search for an Alternate Frequency (AF) with stronger signal.
hgs
parents:
diff changeset
   770
     *
hgs
parents:
diff changeset
   771
     * Client can issue this request to interrupt the search indicated with
hgs
parents:
diff changeset
   772
     * MRadioObserver::RadioEventRdsSearchBeginAF.
hgs
parents:
diff changeset
   773
     *
hgs
parents:
diff changeset
   774
     * @since S60 3.2
hgs
parents:
diff changeset
   775
     */
hgs
parents:
diff changeset
   776
	IMPORT_C void CancelAFSearch();
hgs
parents:
diff changeset
   777
hgs
parents:
diff changeset
   778
	/**
hgs
parents:
diff changeset
   779
     * Turns on/off automatic switching of frequency based on Traffic Announcement.
hgs
parents:
diff changeset
   780
     * This will cause RDS device to search for frequencies broadcasting traffic announcement.
hgs
parents:
diff changeset
   781
     * Client will be notified of frequency change though the tuner event.
hgs
parents:
diff changeset
   782
     * It's up to the client to return to the previous frequency when the traffic announcement
hgs
parents:
diff changeset
   783
     * is finished.
hgs
parents:
diff changeset
   784
     *
hgs
parents:
diff changeset
   785
     * NOTE: This is only supported in dual tuner configuration since the secondary tuner
hgs
parents:
diff changeset
   786
     * needs to perform continuous scanning for frequency broadcasting traffic announcement,
hgs
parents:
diff changeset
   787
     * while the primary tuner is used for normal tuner activities.
hgs
parents:
diff changeset
   788
     *
hgs
parents:
diff changeset
   789
     * @since S60 3.2
hgs
parents:
diff changeset
   790
     * @param aAuto ETrue indicates that automatic switching is on.
hgs
parents:
diff changeset
   791
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   792
     */
hgs
parents:
diff changeset
   793
	IMPORT_C TInt SetAutomaticTrafficAnnouncement( TBool aAuto );
hgs
parents:
diff changeset
   794
hgs
parents:
diff changeset
   795
	/**
hgs
parents:
diff changeset
   796
     * Find out whether automatic traffic announcement is enabled.
hgs
parents:
diff changeset
   797
     *
hgs
parents:
diff changeset
   798
     * @since S60 3.2
hgs
parents:
diff changeset
   799
     * @param aAuto On return, ETrue indicates that automatic traffic announcement is on.
hgs
parents:
diff changeset
   800
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   801
     */
hgs
parents:
diff changeset
   802
	IMPORT_C TInt GetAutomaticTrafficAnnouncement( TBool& aAuto );
hgs
parents:
diff changeset
   803
hgs
parents:
diff changeset
   804
	/**
hgs
parents:
diff changeset
   805
     * Asynchronous request to find a radio station with the specified Programme Type(PTY),
hgs
parents:
diff changeset
   806
     * starting from the currently tuned frequency and searching in the direction specified
hgs
parents:
diff changeset
   807
     * (i.e. up or down). User must be ready to receive callback method StationSeekByPTYComplete
hgs
parents:
diff changeset
   808
     * The station found is returned in the callback.
hgs
parents:
diff changeset
   809
     *
hgs
parents:
diff changeset
   810
     * @since S60 3.2
hgs
parents:
diff changeset
   811
     * @param aPty The type of programme to search for.
hgs
parents:
diff changeset
   812
     * @param aSeekUp The direction to search in. Searches upwards if set to ETrue.
hgs
parents:
diff changeset
   813
     * @see MRadioObserver::StationSeekByPTYComplete
hgs
parents:
diff changeset
   814
     */
hgs
parents:
diff changeset
   815
	IMPORT_C void StationSeekByPTY( TRsRdsProgrammeType aPty, TBool aSeekUp );
hgs
parents:
diff changeset
   816
hgs
parents:
diff changeset
   817
	/**
hgs
parents:
diff changeset
   818
     * Asynchronous request to find a radio station with Traffic Announcement(TA),
hgs
parents:
diff changeset
   819
     * starting from the currently tuned frequency and searching in the direction specified
hgs
parents:
diff changeset
   820
     * (i.e. up or down). User must be ready to receive callback method StationSeekByTAComplete
hgs
parents:
diff changeset
   821
     * The station found is returned in the callback.
hgs
parents:
diff changeset
   822
     *
hgs
parents:
diff changeset
   823
     * @since S60 3.2
hgs
parents:
diff changeset
   824
     * @param aSeekUp The direction to search in. Searches upwards if set to ETrue.
hgs
parents:
diff changeset
   825
     * @see MRadioObserver::StationSeekByTAComplete
hgs
parents:
diff changeset
   826
     */
hgs
parents:
diff changeset
   827
	IMPORT_C void StationSeekByTA( TBool aSeekUp );
hgs
parents:
diff changeset
   828
hgs
parents:
diff changeset
   829
	/**
hgs
parents:
diff changeset
   830
     * Asynchronous request to find a radio station with Traffic Programme(TP),
hgs
parents:
diff changeset
   831
     * starting from the currently tuned frequency and searching in the direction specified
hgs
parents:
diff changeset
   832
     * (i.e. up or down). User must be ready to receive callback method StationSeekByTPComplete
hgs
parents:
diff changeset
   833
     * The station found is returned in the callback.
hgs
parents:
diff changeset
   834
     *
hgs
parents:
diff changeset
   835
     * @since S60 3.2
hgs
parents:
diff changeset
   836
     * @param aSeekUp The direction to search in. Searches upwards if set to ETrue.
hgs
parents:
diff changeset
   837
     * @see MRadioObserver::StationSeekByTPComplete
hgs
parents:
diff changeset
   838
     */
hgs
parents:
diff changeset
   839
	IMPORT_C void StationSeekByTP( TBool aSeekUp );
hgs
parents:
diff changeset
   840
hgs
parents:
diff changeset
   841
	/**
hgs
parents:
diff changeset
   842
     * Cancels an ongoing retune operation, as initiated by a call to StationSeekByPTY,
hgs
parents:
diff changeset
   843
     * StationSeekByTA, or StationSeekByTP.
hgs
parents:
diff changeset
   844
     * The usual callback will not occur if this has been called.
hgs
parents:
diff changeset
   845
     *
hgs
parents:
diff changeset
   846
     * @since S60 3.2
hgs
parents:
diff changeset
   847
     */
hgs
parents:
diff changeset
   848
	IMPORT_C void CancelRdsStationSeek();
hgs
parents:
diff changeset
   849
hgs
parents:
diff changeset
   850
	/**
hgs
parents:
diff changeset
   851
     * Asynchronous request to find all frequencies sending the given Programme Type (PTY).
hgs
parents:
diff changeset
   852
     * User must be ready to receive callback method GetFreqByPTYComplete.
hgs
parents:
diff changeset
   853
     *
hgs
parents:
diff changeset
   854
     * NOTE: This is only supported in dual tuner configuration since the secondary tuner
hgs
parents:
diff changeset
   855
     * needs to perform continuous scanning for frequencies broadcasting given Programme Type
hgs
parents:
diff changeset
   856
     * while the primary tuner is used for normal tuner activities.
hgs
parents:
diff changeset
   857
     * Client should first check the tuner capabilities. Will return KErrNotSupported in
hgs
parents:
diff changeset
   858
     * callback method if this feature is not supported.
hgs
parents:
diff changeset
   859
     *
hgs
parents:
diff changeset
   860
     * @since S60 3.2
hgs
parents:
diff changeset
   861
     * @param aPty The type of programme to search for
hgs
parents:
diff changeset
   862
     * @see MRadioObserver::GetFreqByPTYComplete
hgs
parents:
diff changeset
   863
     */
hgs
parents:
diff changeset
   864
	IMPORT_C void GetFreqByPTY( TRsRdsProgrammeType aPty );
hgs
parents:
diff changeset
   865
hgs
parents:
diff changeset
   866
	/**
hgs
parents:
diff changeset
   867
     * Cancels an ongoing request to find all frequencies sending a given Programme Type (PTY).
hgs
parents:
diff changeset
   868
     * The usual callback will not occur if this has been called.
hgs
parents:
diff changeset
   869
     *
hgs
parents:
diff changeset
   870
     * @since S60 3.2
hgs
parents:
diff changeset
   871
     */
hgs
parents:
diff changeset
   872
	IMPORT_C void CancelGetFreqByPTY();
hgs
parents:
diff changeset
   873
hgs
parents:
diff changeset
   874
	/**
hgs
parents:
diff changeset
   875
     * Asynchronous request to find all frequencies sending Traffic Announcement (TA). User must
hgs
parents:
diff changeset
   876
     * be ready to receive callback method GetFreqByTAComplete.
hgs
parents:
diff changeset
   877
     *
hgs
parents:
diff changeset
   878
     * NOTE: This is only supported in dual tuner configuration since the secondary tuner
hgs
parents:
diff changeset
   879
     * needs to perform continuous scanning for frequencies broadcasting given Traffic Announcement
hgs
parents:
diff changeset
   880
     * while the primary tuner is used for normal tuner activities.
hgs
parents:
diff changeset
   881
     * Client should first check the tuner capabilities. Will return KErrNotSupported in
hgs
parents:
diff changeset
   882
     * callback method if this feature is not supported.
hgs
parents:
diff changeset
   883
     *
hgs
parents:
diff changeset
   884
     * @since S60 3.2
hgs
parents:
diff changeset
   885
     * @see MRadioObserver::GetFreqByTAComplete
hgs
parents:
diff changeset
   886
     */
hgs
parents:
diff changeset
   887
	IMPORT_C void GetFreqByTA();
hgs
parents:
diff changeset
   888
hgs
parents:
diff changeset
   889
	/**
hgs
parents:
diff changeset
   890
     * Cancels an ongoing request to find all frequencies sending Traffic Announcement.
hgs
parents:
diff changeset
   891
     * The usual callback will not occur if this has been called.
hgs
parents:
diff changeset
   892
     *
hgs
parents:
diff changeset
   893
     * @since S60 3.2
hgs
parents:
diff changeset
   894
     */
hgs
parents:
diff changeset
   895
	IMPORT_C void CancelGetFreqByTA();
hgs
parents:
diff changeset
   896
hgs
parents:
diff changeset
   897
	/**
hgs
parents:
diff changeset
   898
     * Asynchronous request to find all Programme Service names (PS) sending the given Programme
hgs
parents:
diff changeset
   899
     * Type (PTY). User must be ready to receive callback method GetPSByPTYComplete.
hgs
parents:
diff changeset
   900
     *
hgs
parents:
diff changeset
   901
     * NOTE: This is only supported in dual tuner configuration since the secondary tuner
hgs
parents:
diff changeset
   902
     * needs to perform continuous scanning for frequencies broadcasting given Programme Type
hgs
parents:
diff changeset
   903
     * while the primary tuner is used for normal tuner activities.
hgs
parents:
diff changeset
   904
     * Client should first check the tuner capabilities. Will return KErrNotSupported in
hgs
parents:
diff changeset
   905
     * callback method if this feature is not supported.
hgs
parents:
diff changeset
   906
     *
hgs
parents:
diff changeset
   907
     * @since S60 3.2
hgs
parents:
diff changeset
   908
     * @param aPty The type of programme to search for
hgs
parents:
diff changeset
   909
     * @see MRadioObserver::GetPSByPTYComplete
hgs
parents:
diff changeset
   910
     */
hgs
parents:
diff changeset
   911
	IMPORT_C void GetPSByPTY( TRsRdsProgrammeType aPty );
hgs
parents:
diff changeset
   912
hgs
parents:
diff changeset
   913
	/**
hgs
parents:
diff changeset
   914
     * Cancels an ongoing request to find all Programme Service names (PS) sending a given
hgs
parents:
diff changeset
   915
     * Programme Type (PTY). The usual callback will not occur if this has been called.
hgs
parents:
diff changeset
   916
     *
hgs
parents:
diff changeset
   917
     * @since S60 3.2
hgs
parents:
diff changeset
   918
     */
hgs
parents:
diff changeset
   919
	IMPORT_C void CancelGetPSByPTY();
hgs
parents:
diff changeset
   920
hgs
parents:
diff changeset
   921
	/**
hgs
parents:
diff changeset
   922
     * Asynchronous request to find all Programme Service names (PS) sending Traffic Announcement (TA).
hgs
parents:
diff changeset
   923
     * User must be ready to receive callback method GetPSByTAComplete.
hgs
parents:
diff changeset
   924
     *
hgs
parents:
diff changeset
   925
     * NOTE: This is only supported in dual tuner configuration since the secondary tuner
hgs
parents:
diff changeset
   926
     * needs to perform continuous scanning for frequencies broadcasting given Traffic Announcement
hgs
parents:
diff changeset
   927
     * while the primary tuner is used for normal tuner activities.
hgs
parents:
diff changeset
   928
     * Client should first check the tuner capabilities. Will return KErrNotSupported in
hgs
parents:
diff changeset
   929
     * callback method if this feature is not supported.
hgs
parents:
diff changeset
   930
     *
hgs
parents:
diff changeset
   931
     * @since S60 3.2
hgs
parents:
diff changeset
   932
     * @see MRadioObserver::GetPSByTAComplete
hgs
parents:
diff changeset
   933
     */
hgs
parents:
diff changeset
   934
	IMPORT_C void GetPSByTA();
hgs
parents:
diff changeset
   935
hgs
parents:
diff changeset
   936
	/**
hgs
parents:
diff changeset
   937
     * Cancels an ongoing request to find all Programme Service names (PS) sending Traffic Announcement.
hgs
parents:
diff changeset
   938
     * The usual callback will not occur if this has been called.
hgs
parents:
diff changeset
   939
     *
hgs
parents:
diff changeset
   940
     * @since S60 3.2
hgs
parents:
diff changeset
   941
     */
hgs
parents:
diff changeset
   942
	IMPORT_C void CancelGetPSByTA();
hgs
parents:
diff changeset
   943
hgs
parents:
diff changeset
   944
	/**
hgs
parents:
diff changeset
   945
     * Get the current Programme Identification code.
hgs
parents:
diff changeset
   946
     * RDS data is received over the air and may not be available immediately following
hgs
parents:
diff changeset
   947
     * tune operation. If data is not available, this function will return KErrNotFound.
hgs
parents:
diff changeset
   948
     * If a value is returned, this is the last known value, which may not be up to date.
hgs
parents:
diff changeset
   949
     * To be notified of the most recent value, client should use NotifyRdsDataChange.
hgs
parents:
diff changeset
   950
     *
hgs
parents:
diff changeset
   951
     * @since S60 3.2
hgs
parents:
diff changeset
   952
     * @param aPi On return contains Programme Identification code
hgs
parents:
diff changeset
   953
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   954
     */
hgs
parents:
diff changeset
   955
	IMPORT_C TInt GetProgrammeIdentification( TInt& aPi );
hgs
parents:
diff changeset
   956
hgs
parents:
diff changeset
   957
	/**
hgs
parents:
diff changeset
   958
     * Get the current Programme Type.
hgs
parents:
diff changeset
   959
     * RDS data is received over the air and may not be available immediately following
hgs
parents:
diff changeset
   960
     * tune operation. If data is not available, this function will return KErrNotFound.
hgs
parents:
diff changeset
   961
     * If a value is returned, this is the last known value, which may not be up to date.
hgs
parents:
diff changeset
   962
     * To be notified of the most recent value, client should use NotifyRdsDataChange.
hgs
parents:
diff changeset
   963
     *
hgs
parents:
diff changeset
   964
     * @since S60 3.2
hgs
parents:
diff changeset
   965
     * @param aPty On return contains Programme Type
hgs
parents:
diff changeset
   966
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   967
     */
hgs
parents:
diff changeset
   968
	IMPORT_C TInt GetProgrammeType( TRsRdsProgrammeType& aPty );
hgs
parents:
diff changeset
   969
hgs
parents:
diff changeset
   970
	/**
hgs
parents:
diff changeset
   971
     * Get the current Programme Service name.
hgs
parents:
diff changeset
   972
     * RDS data is received over the air and may not be available immediately following
hgs
parents:
diff changeset
   973
     * tune operation. If data is not available, this function will return KErrNotFound.
hgs
parents:
diff changeset
   974
     * If a value is returned, this is the last known value, which may not be up to date.
hgs
parents:
diff changeset
   975
     * To be notified of the most recent value, client should use NotifyRdsDataChange.
hgs
parents:
diff changeset
   976
     *
hgs
parents:
diff changeset
   977
     * Programme Service name is fixed to 8 characters.
hgs
parents:
diff changeset
   978
     *
hgs
parents:
diff changeset
   979
     * @since S60 3.2
hgs
parents:
diff changeset
   980
     * @param aPs On return contains Programme Service name
hgs
parents:
diff changeset
   981
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   982
     */
hgs
parents:
diff changeset
   983
	IMPORT_C TInt GetProgrammeService( TRsRdsPSName& aPs );
hgs
parents:
diff changeset
   984
hgs
parents:
diff changeset
   985
	/**
hgs
parents:
diff changeset
   986
     * Get the current Radio Text.
hgs
parents:
diff changeset
   987
     * RDS data is received over the air and may not be available immediately following
hgs
parents:
diff changeset
   988
     * tune operation. If data is not available, this function will return KErrNotFound.
hgs
parents:
diff changeset
   989
     * If a value is returned, this is the last known value, which may not be up to date.
hgs
parents:
diff changeset
   990
     * To be notified of the most recent value, client should use NotifyRdsDataChange.
hgs
parents:
diff changeset
   991
     *
hgs
parents:
diff changeset
   992
     * The maximum possible length for radio text field is 64 characters.
hgs
parents:
diff changeset
   993
     *
hgs
parents:
diff changeset
   994
     * @since S60 3.2
hgs
parents:
diff changeset
   995
     * @param aRt On return contains Radio Text
hgs
parents:
diff changeset
   996
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
   997
     */
hgs
parents:
diff changeset
   998
	IMPORT_C TInt GetRadioText( TRsRdsRadioText& aRt );
hgs
parents:
diff changeset
   999
hgs
parents:
diff changeset
  1000
    /**
hgs
parents:
diff changeset
  1001
     * Get the current Radio Text+.
hgs
parents:
diff changeset
  1002
     * RDS data is received over the air and may not be available immediately following
hgs
parents:
diff changeset
  1003
     * tune operation. If data is not available, this function will return KErrNotFound.
hgs
parents:
diff changeset
  1004
     * If a value is returned, this is the last known value, which may not be up to date.
hgs
parents:
diff changeset
  1005
     * To be notified of the most recent value, client should use NotifyRdsDataChange.
hgs
parents:
diff changeset
  1006
     *
hgs
parents:
diff changeset
  1007
     * The maximum possible length for radio text+ field is 64 characters.
hgs
parents:
diff changeset
  1008
     *
hgs
parents:
diff changeset
  1009
     * @since S60 3.2
hgs
parents:
diff changeset
  1010
     * @param aRtPlusClass Radio text plus class
hgs
parents:
diff changeset
  1011
     * @param aRtPlusData On return contains Radio Text+ field
hgs
parents:
diff changeset
  1012
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
  1013
     */
hgs
parents:
diff changeset
  1014
    IMPORT_C TInt GetRadioTextPlus( TRsRdsRTplusClass aRtPlusClass, TRsRdsRadioText& aRtPlusData );
hgs
parents:
diff changeset
  1015
hgs
parents:
diff changeset
  1016
	/**
hgs
parents:
diff changeset
  1017
     * Get the current Clock Time and date.
hgs
parents:
diff changeset
  1018
     * RDS data is received over the air and may not be available immediately following
hgs
parents:
diff changeset
  1019
     * tune operation. If data is not available, this function will return KErrNotFound.
hgs
parents:
diff changeset
  1020
     * If a value is returned, this is the last known value, which may not be up to date.
hgs
parents:
diff changeset
  1021
     * To be notified of the most recent value, client should use NotifyRdsDataChange.
hgs
parents:
diff changeset
  1022
     *
hgs
parents:
diff changeset
  1023
     * @since S60 3.2
hgs
parents:
diff changeset
  1024
     * @param aCt On return contains current time and date
hgs
parents:
diff changeset
  1025
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
  1026
     */
hgs
parents:
diff changeset
  1027
	IMPORT_C TInt GetClockTime( TDateTime& aCt );
hgs
parents:
diff changeset
  1028
hgs
parents:
diff changeset
  1029
	/**
hgs
parents:
diff changeset
  1030
     * Get Traffic Announcement status at the current station.
hgs
parents:
diff changeset
  1031
     *
hgs
parents:
diff changeset
  1032
     * @since S60 3.2
hgs
parents:
diff changeset
  1033
     * @param aTaStatus On return, will be ETrue if current station has ongoing traffic announcement
hgs
parents:
diff changeset
  1034
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
  1035
     */
hgs
parents:
diff changeset
  1036
	IMPORT_C TInt GetTrafficAnnouncementStatus( TBool& aTaStatus );
hgs
parents:
diff changeset
  1037
hgs
parents:
diff changeset
  1038
	/**
hgs
parents:
diff changeset
  1039
     * Get Traffic Programme status at the current station.
hgs
parents:
diff changeset
  1040
     *
hgs
parents:
diff changeset
  1041
     * @since S60 3.2
hgs
parents:
diff changeset
  1042
     * @param aTpStatus On return, will be ETrue if current station supports traffic programme
hgs
parents:
diff changeset
  1043
     * @return A standard system/RadioServer error code.
hgs
parents:
diff changeset
  1044
     */
hgs
parents:
diff changeset
  1045
	IMPORT_C TInt GetTrafficProgrammeStatus( TBool& aTpStatus );
hgs
parents:
diff changeset
  1046
hgs
parents:
diff changeset
  1047
// from base class MCustomCommand
hgs
parents:
diff changeset
  1048
hgs
parents:
diff changeset
  1049
    /**
hgs
parents:
diff changeset
  1050
     * From MCustomCommand
hgs
parents:
diff changeset
  1051
     * Sends a synchronous custom command to the radio server.
hgs
parents:
diff changeset
  1052
     *
hgs
parents:
diff changeset
  1053
     * @since S60 3.0
hgs
parents:
diff changeset
  1054
     * @param aDestination The destination of the message, consisting of the uid of
hgs
parents:
diff changeset
  1055
     * 		 the interface of this message
hgs
parents:
diff changeset
  1056
     * @param aFunction The function number to indicate which function is to be called
hgs
parents:
diff changeset
  1057
     *		 on the interface defined in the aDestination parameter
hgs
parents:
diff changeset
  1058
     * @param aDataTo1 The first chunk of data to be copied to the controller
hgs
parents:
diff changeset
  1059
     *		 framework. The exact contents of the data are dependent on the
hgs
parents:
diff changeset
  1060
     *		 interface being called. Can be KNullDesC8.
hgs
parents:
diff changeset
  1061
     * @param aDataTo2 The second chunk of data to be copied to the controller
hgs
parents:
diff changeset
  1062
     *		 framework. The exact contents of the data are dependent on the
hgs
parents:
diff changeset
  1063
     *		 interface being called. Can be KNullDesC8.
hgs
parents:
diff changeset
  1064
     * @return A standard system error code.
hgs
parents:
diff changeset
  1065
     */
hgs
parents:
diff changeset
  1066
	IMPORT_C  TInt CustomCommandSync( const TMMFMessageDestinationPckg& aDestination,
hgs
parents:
diff changeset
  1067
					TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2 );
hgs
parents:
diff changeset
  1068
hgs
parents:
diff changeset
  1069
	/**
hgs
parents:
diff changeset
  1070
     * From MCustomCommand
hgs
parents:
diff changeset
  1071
     * Sends a synchronous custom command to the radio server.
hgs
parents:
diff changeset
  1072
     *
hgs
parents:
diff changeset
  1073
     * @since S60 3.0
hgs
parents:
diff changeset
  1074
     * @param aDestination The destination of the message, consisting of the uid of
hgs
parents:
diff changeset
  1075
     *		 the interface of this message
hgs
parents:
diff changeset
  1076
     * @param aFunction The function number to indicate which function is to be called
hgs
parents:
diff changeset
  1077
     *		 on the interface defined in the aDestination parameter
hgs
parents:
diff changeset
  1078
     * @param aDataTo1 The first chunk of data to be copied to the controller
hgs
parents:
diff changeset
  1079
     *		 framework. The exact contents of the data are dependent on the
hgs
parents:
diff changeset
  1080
     *		 interface being called. Can be KNullDesC8.
hgs
parents:
diff changeset
  1081
     * @param aDataTo2 The second chunk of data to be copied to the controller
hgs
parents:
diff changeset
  1082
     *		 framework. The exact contents of the data are dependent on the
hgs
parents:
diff changeset
  1083
     *		 interface being called. Can be KNullDesC8.
hgs
parents:
diff changeset
  1084
     * @param aDataFrom The area of memory to which the controller framework
hgs
parents:
diff changeset
  1085
     *		 will write any data to be passed back to the client. Can't be KNullDesC8.
hgs
parents:
diff changeset
  1086
     * @return A standard system error code.
hgs
parents:
diff changeset
  1087
     */
hgs
parents:
diff changeset
  1088
	IMPORT_C  TInt CustomCommandSync( const TMMFMessageDestinationPckg& aDestination,
hgs
parents:
diff changeset
  1089
					TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom );
hgs
parents:
diff changeset
  1090
hgs
parents:
diff changeset
  1091
	/**
hgs
parents:
diff changeset
  1092
     * From MCustomCommand
hgs
parents:
diff changeset
  1093
     * Sends an asynchronous custom command to the radio server.
hgs
parents:
diff changeset
  1094
     *
hgs
parents:
diff changeset
  1095
     * @since S60 3.0
hgs
parents:
diff changeset
  1096
     * @param aDestination The destination of the message, consisting of the uid of
hgs
parents:
diff changeset
  1097
     *		 the interface of this message
hgs
parents:
diff changeset
  1098
     * @param aFunction The function number to indicate which function is to be called
hgs
parents:
diff changeset
  1099
     *		 on the interface defined in the aDestination parameter
hgs
parents:
diff changeset
  1100
     * @param aDataTo1 The first chunk of data to be copied to the controller
hgs
parents:
diff changeset
  1101
     *		 framework. The exact contents of the data are dependent on the
hgs
parents:
diff changeset
  1102
     *		 interface being called. Can be KNullDesC8.
hgs
parents:
diff changeset
  1103
     * @param aDataTo2 The second chunk of data to be copied to the controller
hgs
parents:
diff changeset
  1104
     *		 framework. The exact contents of the data are dependent on the
hgs
parents:
diff changeset
  1105
     *		 interface being called. Can be KNullDesC8.
hgs
parents:
diff changeset
  1106
     * @param aStatus The TRequestStatus of an active object. This will contain the
hgs
parents:
diff changeset
  1107
     *		 result of the request on completion.  The exact range of result values is
hgs
parents:
diff changeset
  1108
     *		 dependent on the interface.
hgs
parents:
diff changeset
  1109
     */
hgs
parents:
diff changeset
  1110
	IMPORT_C  void CustomCommandAsync( const TMMFMessageDestinationPckg& aDestination,
hgs
parents:
diff changeset
  1111
					TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus );
hgs
parents:
diff changeset
  1112
hgs
parents:
diff changeset
  1113
	/**
hgs
parents:
diff changeset
  1114
     * From MCustomCommand
hgs
parents:
diff changeset
  1115
     * Sends an asynchronous custom command to the radio server.
hgs
parents:
diff changeset
  1116
     *
hgs
parents:
diff changeset
  1117
     * @since S60 3.0
hgs
parents:
diff changeset
  1118
     * @param aDestination The destination of the message, consisting of the uid of
hgs
parents:
diff changeset
  1119
     *		 the interface of this message
hgs
parents:
diff changeset
  1120
     * @param aFunction The function number to indicate which function is to be called
hgs
parents:
diff changeset
  1121
     *		 on the interface defined in the aDestination parameter
hgs
parents:
diff changeset
  1122
     * @param aDataTo1 The first chunk of data to be copied to the controller
hgs
parents:
diff changeset
  1123
     *		 framework. The exact contents of the data are dependent on the
hgs
parents:
diff changeset
  1124
     *		 interface being called. Can be KNullDesC8.
hgs
parents:
diff changeset
  1125
     * @param aDataTo2 The second chunk of data to be copied to the controller
hgs
parents:
diff changeset
  1126
     *		 framework. The exact contents of the data are dependent on the
hgs
parents:
diff changeset
  1127
     *		 interface being called. Can be KNullDesC8.
hgs
parents:
diff changeset
  1128
     * @param aDataFrom The area of memory to which the controller framework
hgs
parents:
diff changeset
  1129
     *		 will write any data to be passed back to the client. Can't be KNullDesC8.
hgs
parents:
diff changeset
  1130
     * @param aStatus The TRequestStatus of an active object. This will contain the
hgs
parents:
diff changeset
  1131
     *		 result of the request on completion.  The exact range of result values is
hgs
parents:
diff changeset
  1132
     *		 dependent on the interface.
hgs
parents:
diff changeset
  1133
     */
hgs
parents:
diff changeset
  1134
	IMPORT_C  void CustomCommandAsync( const TMMFMessageDestinationPckg& aDestination, TInt aFunction,
hgs
parents:
diff changeset
  1135
					const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus );
hgs
parents:
diff changeset
  1136
hgs
parents:
diff changeset
  1137
//********** Internal functions begin
hgs
parents:
diff changeset
  1138
hgs
parents:
diff changeset
  1139
	/**
hgs
parents:
diff changeset
  1140
     * Used internally to cancel outstanding asynchronous requests. This is triggered by
hgs
parents:
diff changeset
  1141
     * CRadioRequest.
hgs
parents:
diff changeset
  1142
     *
hgs
parents:
diff changeset
  1143
     * @since S60 3.0
hgs
parents:
diff changeset
  1144
     * @param aRequest The outstanding asynchronous request being cancelled
hgs
parents:
diff changeset
  1145
     */
hgs
parents:
diff changeset
  1146
	void CancelRequest( TInt aRequest );
hgs
parents:
diff changeset
  1147
hgs
parents:
diff changeset
  1148
private:
hgs
parents:
diff changeset
  1149
hgs
parents:
diff changeset
  1150
	/**
hgs
parents:
diff changeset
  1151
     * Creates request handlers for each asynchronous request.
hgs
parents:
diff changeset
  1152
     */
hgs
parents:
diff changeset
  1153
	void StartRequestHandlersL( MRadioObserver& aObserver );
hgs
parents:
diff changeset
  1154
hgs
parents:
diff changeset
  1155
	/**
hgs
parents:
diff changeset
  1156
     * Creates event handlers for tuner and playback events from radio tuner.
hgs
parents:
diff changeset
  1157
     */
hgs
parents:
diff changeset
  1158
	void StartEventHandlersL( MRadioObserver& aObserver );
hgs
parents:
diff changeset
  1159
hgs
parents:
diff changeset
  1160
	/**
hgs
parents:
diff changeset
  1161
     * Creates event handlers for RDS events from radio tuner.
hgs
parents:
diff changeset
  1162
     */
hgs
parents:
diff changeset
  1163
	void StartRdsEventHandlersL( TUint32 aRdsFunctions );
hgs
parents:
diff changeset
  1164
hgs
parents:
diff changeset
  1165
private:    // Data
hgs
parents:
diff changeset
  1166
hgs
parents:
diff changeset
  1167
	// Connection status
hgs
parents:
diff changeset
  1168
	TBool iConnected;
hgs
parents:
diff changeset
  1169
	// Requests that generates response to MRadioObserver
hgs
parents:
diff changeset
  1170
	RPointerArray<CRadioRequest> iRequests;
hgs
parents:
diff changeset
  1171
	// Event handlers that generates response to MRadioEventObserver
hgs
parents:
diff changeset
  1172
	RPointerArray<CRadioEventHandler> iEventHandlers;
hgs
parents:
diff changeset
  1173
	//Rds Event handlers
hgs
parents:
diff changeset
  1174
	RPointerArray<CRadioEventHandler> iRdsEventHandlers;
hgs
parents:
diff changeset
  1175
hgs
parents:
diff changeset
  1176
	// Destination information for standard radio interface messages
hgs
parents:
diff changeset
  1177
	TMMFMessageDestinationPckg iDestinationPckg;
hgs
parents:
diff changeset
  1178
hgs
parents:
diff changeset
  1179
	// Radio observer
hgs
parents:
diff changeset
  1180
	MRadioObserver* iObserver;
hgs
parents:
diff changeset
  1181
	// Client type
hgs
parents:
diff changeset
  1182
	TBool iPrimaryClient;
hgs
parents:
diff changeset
  1183
	// RDS notify flag
hgs
parents:
diff changeset
  1184
	TBool iRdsNotify;
hgs
parents:
diff changeset
  1185
hgs
parents:
diff changeset
  1186
	// RadioStubManager pointer points inside RadioStubManagerChunk
hgs
parents:
diff changeset
  1187
    SRadioStubManager* iRadioStubManager;
hgs
parents:
diff changeset
  1188
    
hgs
parents:
diff changeset
  1189
    // RadioStubManagerChunk handle
hgs
parents:
diff changeset
  1190
    RChunk iRadioStubManagerChunk;
hgs
parents:
diff changeset
  1191
    
hgs
parents:
diff changeset
  1192
    CRadioRequest* iExtraRequestForBugHunting;
hgs
parents:
diff changeset
  1193
    
hgs
parents:
diff changeset
  1194
    };
hgs
parents:
diff changeset
  1195
hgs
parents:
diff changeset
  1196
#endif      // RADIOSESSION_H
hgs
parents:
diff changeset
  1197
hgs
parents:
diff changeset
  1198
// End of File