86 , iFreqEventReason( RadioEngine::ERadioFrequencyEventReasonUnknown ) |
86 , iFreqEventReason( RadioEngine::ERadioFrequencyEventReasonUnknown ) |
87 { |
87 { |
88 LEVEL3( LOG_METHOD_AUTO ); |
88 LEVEL3( LOG_METHOD_AUTO ); |
89 } |
89 } |
90 |
90 |
|
91 |
|
92 // --------------------------------------------------------------------------- |
|
93 // |
|
94 // --------------------------------------------------------------------------- |
|
95 // |
|
96 CRadioEngineImp* CRadioEngineImp::NewL() |
|
97 { |
|
98 LEVEL3( LOG_METHOD_AUTO ); |
|
99 |
|
100 // audiorouter is required for constructing engine so we need to create it and |
|
101 // radio system event collector as observer of audiorouter before creating the |
|
102 // actual engine. |
|
103 CRadioSystemEventCollector *eventCollector = CRadioSystemEventCollector::NewL(); |
|
104 CleanupStack::PushL( eventCollector ); |
|
105 |
|
106 MRadioAudioRoutingObserver* observer = 0; |
|
107 eventCollector->AsObserver( observer ); |
|
108 User::LeaveIfNull( observer ); |
|
109 |
|
110 CRadioAudioRouter* audioRouter = CRadioAudioRouter::NewL( *( observer ) ); |
|
111 CleanupStack::PushL( audioRouter ); |
|
112 |
|
113 CRadioEngineImp* self = new (ELeave) CRadioEngineImp( audioRouter ); |
|
114 |
|
115 CleanupStack::Pop( audioRouter ); |
|
116 CleanupStack::Pop( eventCollector ); |
|
117 |
|
118 self->iSystemEventCollector = eventCollector; |
|
119 self->ConstructL(); |
|
120 return self; |
|
121 } |
|
122 |
91 // --------------------------------------------------------------------------- |
123 // --------------------------------------------------------------------------- |
92 // |
124 // |
93 // --------------------------------------------------------------------------- |
125 // --------------------------------------------------------------------------- |
94 // |
126 // |
95 void CRadioEngineImp::ConstructL() |
127 void CRadioEngineImp::ConstructL() |
96 { |
128 { |
97 LOG_METHOD_AUTO; |
129 LOG_METHOD_AUTO; |
98 |
130 |
99 if ( !iAudioRouter || !iSystemEventCollector || !iSettings ) |
131 if ( !iAudioRouter || !iSystemEventCollector ) |
100 { |
132 { |
101 User::Leave( KErrNotReady ); |
133 User::Leave( KErrNotReady ); |
102 } |
134 } |
103 |
135 |
104 iSystemEventCollector->AddObserverL( this ); |
136 iSystemEventCollector->AddObserverL( this ); |
105 |
137 |
|
138 iSettings = CRadioSettings::NewL(); |
|
139 iSettings->RadioSetter().SetObserver( this ); |
|
140 |
106 // Initial default values to be over by init |
141 // Initial default values to be over by init |
107 User::LeaveIfError( iSettings->RadioSetter().SetPowerOn( EFalse ) ); |
142 User::LeaveIfError( iSettings->RadioSetter().SetPowerOn( EFalse ) ); |
108 |
143 |
109 // The output source needs to be in headset when starting the radio. |
144 // The output source needs to be in headset when starting the radio. |
110 // But if the headset is not connected, audio cannot be heard if it is routed |
145 // But if the headset is not connected, audio cannot be heard if it is routed |
118 |
153 |
119 iRdsReceiver->AddObserverL( this ); |
154 iRdsReceiver->AddObserverL( this ); |
120 |
155 |
121 // Create timer that is used when polling for radio restart. |
156 // Create timer that is used when polling for radio restart. |
122 iRadioTimer = CPeriodic::NewL( CActive::EPriorityHigh ); |
157 iRadioTimer = CPeriodic::NewL( CActive::EPriorityHigh ); |
|
158 |
|
159 InitRadioL( DetermineRegion() ); |
|
160 EnableAudio( ETrue ); |
123 } |
161 } |
124 |
162 |
125 // --------------------------------------------------------------------------- |
163 // --------------------------------------------------------------------------- |
126 // |
164 // |
127 // --------------------------------------------------------------------------- |
165 // --------------------------------------------------------------------------- |
168 { |
206 { |
169 iSettings->RadioSetter().SetObserver( NULL ); |
207 iSettings->RadioSetter().SetObserver( NULL ); |
170 } |
208 } |
171 delete iSettings; |
209 delete iSettings; |
172 |
210 |
173 } |
|
174 |
|
175 // --------------------------------------------------------------------------- |
|
176 // |
|
177 // --------------------------------------------------------------------------- |
|
178 // |
|
179 void CRadioEngineImp::SetSystemEventCollector( CRadioSystemEventCollector* aCollector ) |
|
180 { |
|
181 LEVEL3( LOG_METHOD_AUTO ); |
|
182 iSystemEventCollector = aCollector; |
|
183 } |
|
184 |
|
185 // --------------------------------------------------------------------------- |
|
186 // |
|
187 // --------------------------------------------------------------------------- |
|
188 // |
|
189 void CRadioEngineImp::SetRadioSettings( CRadioSettings* aSettings ) |
|
190 { |
|
191 LEVEL3( LOG_METHOD_AUTO ); |
|
192 iSettings = aSettings; |
|
193 iSettings->RadioSetter().SetObserver( this ); |
|
194 } |
211 } |
195 |
212 |
196 // --------------------------------------------------------------------------- |
213 // --------------------------------------------------------------------------- |
197 // |
214 // |
198 // --------------------------------------------------------------------------- |
215 // --------------------------------------------------------------------------- |