21 |
21 |
22 #include <mphonedevicemodeobserver.h> |
22 #include <mphonedevicemodeobserver.h> |
23 #include <PSVariables.h> |
23 #include <PSVariables.h> |
24 #include <ctsydomainpskeys.h> |
24 #include <ctsydomainpskeys.h> |
25 |
25 |
26 #include "cteldmcommandhandler.h" |
26 #include "CTelDMCommandHandler.h" |
27 #include "cteldmcallstatelistener.h" |
27 #include "CTelDMCallStateListener.h" |
28 #include "mteldmaccessory.h" |
28 #include "MTelDMAccessory.h" |
29 #include "cteldmdebug.h" |
29 #include "CTelDMDebug.h" |
30 #include <coreapplicationuisdomainpskeys.h> |
30 #include <coreapplicationuisdomainpskeys.h> |
31 |
31 |
32 // MODULE DATA STRUCTURES |
32 // MODULE DATA STRUCTURES |
33 |
33 |
34 // ============================ MEMBER FUNCTIONS =============================== |
34 // ============================ MEMBER FUNCTIONS =============================== |
37 // CTelDMCommandHandler::NewL |
37 // CTelDMCommandHandler::NewL |
38 // |
38 // |
39 // ----------------------------------------------------------------------------- |
39 // ----------------------------------------------------------------------------- |
40 // |
40 // |
41 CTelDMCommandHandler* CTelDMCommandHandler::NewL( |
41 CTelDMCommandHandler* CTelDMCommandHandler::NewL( |
42 MPhoneDeviceModeObserver& aCallHandler, |
42 MPhoneDeviceModeObserver& aCallHandler, |
43 MTelDMAccessory& aAccessory ) |
43 MTelDMAccessory& aAccessory ) |
44 { |
44 { |
45 CTelDMCommandHandler* self = |
45 CTelDMCommandHandler* self = |
46 new ( ELeave ) CTelDMCommandHandler( aCallHandler, |
46 new ( ELeave ) CTelDMCommandHandler( aCallHandler, |
47 aAccessory ); |
47 aAccessory ); |
48 CleanupStack::PushL( self ); |
48 CleanupStack::PushL( self ); |
49 self->ConstructL(); |
49 self->ConstructL(); |
50 CleanupStack::Pop( self ); |
50 CleanupStack::Pop( self ); |
51 return self; |
51 return self; |
52 } |
52 } |
56 // CTelDMCommandHandler::CTelDMCommandHandler |
56 // CTelDMCommandHandler::CTelDMCommandHandler |
57 // |
57 // |
58 // ----------------------------------------------------------------------------- |
58 // ----------------------------------------------------------------------------- |
59 // |
59 // |
60 CTelDMCommandHandler::CTelDMCommandHandler( |
60 CTelDMCommandHandler::CTelDMCommandHandler( |
61 MPhoneDeviceModeObserver& aCallHandler, |
61 MPhoneDeviceModeObserver& aCallHandler, |
62 MTelDMAccessory& aAccessory ): |
62 MTelDMAccessory& aAccessory ): |
63 iCallHandler( aCallHandler ), |
63 iCallHandler( aCallHandler ), |
64 iAccessory ( aAccessory ), |
64 iAccessory ( aAccessory ), |
65 iGripOpen ( EFalse ), |
65 iGripOpen ( EFalse ), |
66 iGripOpenOnRingingState ( EFalse ) |
66 iGripOpenOnRingingState ( EFalse ) |
67 { |
67 { |
82 // |
82 // |
83 // ----------------------------------------------------------------------------- |
83 // ----------------------------------------------------------------------------- |
84 // |
84 // |
85 void CTelDMCommandHandler::ConstructL() |
85 void CTelDMCommandHandler::ConstructL() |
86 { |
86 { |
87 User::LeaveIfError( iKeyLock.Connect() ); |
87 User::LeaveIfError( iKeyLock.Connect() ); |
88 } |
88 } |
89 |
89 |
90 // ----------------------------------------------------------------------------- |
90 // ----------------------------------------------------------------------------- |
91 // CTelDMCommandHandler::CallStateChanged() |
91 // CTelDMCommandHandler::CallStateChanged() |
92 // |
92 // |
93 // ----------------------------------------------------------------------------- |
93 // ----------------------------------------------------------------------------- |
94 // |
94 // |
95 void CTelDMCommandHandler::CallStateChangedL( TInt aCallState ) |
95 void CTelDMCommandHandler::CallStateChangedL( TInt aCallState ) |
96 { |
96 { |
97 FLOG( _L( "CTelDMCommandHandler::CallStateChanged<" ) ) |
97 FLOG( _L( "CTelDMCommandHandler::CallStateChanged<" ) ) |
98 FTRACE( FPrint( _L( "CTelDMCommandHandler::CallStateChangedL.aCallState=%d"), |
98 FTRACE( FPrint( _L( "CTelDMCommandHandler::CallStateChangedL.aCallState=%d"), |
99 aCallState )) |
99 aCallState )) |
100 iCallState = aCallState; |
100 iCallState = aCallState; |
101 switch( aCallState ) |
101 switch( aCallState ) |
102 { |
102 { |
103 // Arriving call |
103 // Arriving call |
104 case EPSCTsyCallStateRinging: |
104 case EPSCTsyCallStateRinging: |
105 FLOG( _L( "CTelDMCommandHandler::CallStateChanged.Ringing" ) ) |
105 FLOG( _L( "CTelDMCommandHandler::CallStateChanged.Ringing" ) ) |
106 RProperty::Set( KPSUidCoreApplicationUIs, |
106 RProperty::Set( KPSUidCoreApplicationUIs, |
107 KCoreAppUIsSoftReject, |
107 KCoreAppUIsSoftReject, |
108 ECoreAppUIsSoftRejectUninitialized ); |
108 ECoreAppUIsSoftRejectUninitialized ); |
109 iGripOpenOnRingingState = iGripOpen; |
109 iGripOpenOnRingingState = iGripOpen; |
110 break; |
110 break; |
111 // Answered |
111 // Answered |
112 case EPSCTsyCallStateConnected: |
112 case EPSCTsyCallStateConnected: |
113 { |
113 { |
114 FLOG( _L( "CTelDMCommandHandler::CallStateChanged.Connected" ) ) |
114 FLOG( _L( "CTelDMCommandHandler::CallStateChanged.Connected" ) ) |
115 if ( iGripOpenOnRingingState ) |
115 if ( iGripOpenOnRingingState ) |
116 { |
116 { |
117 OfferKeyLock(); |
117 OfferKeyLock(); |
118 } |
118 } |
119 |
119 |
120 // Clear the flag. |
120 // Clear the flag. |
121 iGripOpenOnRingingState = EFalse; |
121 iGripOpenOnRingingState = EFalse; |
122 } |
122 } |
123 break; |
123 break; |
124 // Disconnected |
124 // Disconnected |
125 case EPSCTsyCallStateNone: |
125 case EPSCTsyCallStateNone: |
126 { |
126 { |
127 FLOG( _L( "CTelDMCommandHandler::CallStateChanged.None" ) ) |
127 FLOG( _L( "CTelDMCommandHandler::CallStateChanged.None" ) ) |
128 if ( iGripOpenOnRingingState ) |
128 if ( iGripOpenOnRingingState ) |
129 { |
129 { |
130 OfferKeyLock(); |
130 OfferKeyLock(); |
131 } |
131 } |
132 } |
132 } |
133 break; |
133 break; |
134 default: |
134 default: |
135 break; |
135 break; |
136 } |
136 } |
137 FLOG( _L( "CTelDMCommandHandler::CallStateChanged>" ) ) |
137 FLOG( _L( "CTelDMCommandHandler::CallStateChanged>" ) ) |
138 } |
138 } |
139 // ----------------------------------------------------------------------------- |
139 // ----------------------------------------------------------------------------- |
140 // CTelDMCommandHandler::HandleEvent |
140 // CTelDMCommandHandler::HandleEvent |
141 // |
141 // |
142 // ----------------------------------------------------------------------------- |
142 // ----------------------------------------------------------------------------- |
143 // |
143 // |
145 { |
145 { |
146 FLOG( _L( "CTelDMCommandHandler::HandleCommand<" ) ) |
146 FLOG( _L( "CTelDMCommandHandler::HandleCommand<" ) ) |
147 switch( aCommand ) |
147 switch( aCommand ) |
148 { |
148 { |
149 case EGripOpen: |
149 case EGripOpen: |
150 { |
150 { |
151 FLOG( _L( "CTelDMCommandHandler::HandleCommand.Open" ) ) |
151 FLOG( _L( "CTelDMCommandHandler::HandleCommand.Open" ) ) |
152 iGripOpen = ETrue; |
152 iGripOpen = ETrue; |
153 if ( !IsSoftRejectOngoing() ) |
153 if ( !IsSoftRejectOngoing() ) |
154 { |
154 { |
155 iCallHandler.Answer(); |
155 iCallHandler.Answer(); |
156 } |
156 } |
157 } |
157 } |
158 break; |
158 break; |
159 // Do not end calls if accessory is connected. |
159 // Do not end calls if accessory is connected. |
160 case EGripClose: |
160 case EGripClose: |
161 { |
161 { |
162 FLOG( _L( "CTelDMCommandHandler::HandleCommand.Close" ) ) |
162 FLOG( _L( "CTelDMCommandHandler::HandleCommand.Close" ) ) |
163 iGripOpen = EFalse; |
163 iGripOpen = EFalse; |
164 EndCalls(); |
164 EndCalls(); |
165 break; |
165 break; |
166 } |
166 } |
167 default: |
167 default: |
168 break; |
168 break; |
169 } |
169 } |
170 FLOG( _L( "CTelDMCommandHandler::HandleCommand>" ) ) |
170 FLOG( _L( "CTelDMCommandHandler::HandleCommand>" ) ) |
171 } |
171 } |
172 |
172 |
173 // ----------------------------------------------------------------------------- |
173 // ----------------------------------------------------------------------------- |
174 // CTelDMCommandHandler::EndCalls |
174 // CTelDMCommandHandler::EndCalls |
175 // |
175 // |
176 // ----------------------------------------------------------------------------- |
176 // ----------------------------------------------------------------------------- |
177 // |
177 // |
178 void CTelDMCommandHandler::EndCalls() |
178 void CTelDMCommandHandler::EndCalls() |
179 |
179 |
180 { |
180 { |
181 if ( IsEmergencyCall() ) |
181 if ( IsEmergencyCall() ) |
182 { |
182 { |
183 // None |
183 // None |
184 } |
184 } |
185 else if ( iAccessory.IsAccessoryAttached() && |
185 else if ( iAccessory.IsAccessoryAttached() && |
186 !iAccessory.IsAnyActiveAccessory() && |
186 !iAccessory.IsAnyActiveAccessory() && |
187 iCallState == EPSCTsyCallStateConnected ) |
187 iCallState == EPSCTsyCallStateConnected ) |
188 { |
188 { |
189 FLOG( _L( "CTelDMCommandHandler::EndCalls#1" ) ) |
189 FLOG( _L( "CTelDMCommandHandler::EndCalls#1" ) ) |
190 iCallHandler.EndVoiceCalls(); |
190 iCallHandler.EndVoiceCalls(); |
191 } |
191 } |
192 else if ( !iAccessory.IsAccessoryAttached() ) |
192 else if ( !iAccessory.IsAccessoryAttached() ) |
193 { |
193 { |
194 FLOG( _L( "CTelDMCommandHandler::EndCalls#2" ) ) |
194 FLOG( _L( "CTelDMCommandHandler::EndCalls#2" ) ) |
195 iCallHandler.EndVoiceCalls(); |
195 iCallHandler.EndVoiceCalls(); |
196 } |
196 } |
197 } |
197 } |
198 // ----------------------------------------------------------------------------- |
198 // ----------------------------------------------------------------------------- |
199 // CTelDMCommandHandler::OfferKeyLock |
199 // CTelDMCommandHandler::OfferKeyLock |
200 // |
200 // |
201 // ----------------------------------------------------------------------------- |
201 // ----------------------------------------------------------------------------- |
202 // |
202 // |
203 void CTelDMCommandHandler::OfferKeyLock() |
203 void CTelDMCommandHandler::OfferKeyLock() |
204 |
204 |
205 { |
205 { |
206 //- AudioAccessory attached (BT headset, Wired headset etc.) |
206 //- AudioAccessory attached (BT headset, Wired headset etc.) |
207 //- Arriving call and grip open. |
207 //- Arriving call and grip open. |
208 //- Call terminated or answered |
208 //- Call terminated or answered |
209 //-> KeyLock query is shown if not locked |
209 //-> KeyLock query is shown if not locked |
210 if ( iAccessory.IsAccessoryAttached() && |
210 if ( iAccessory.IsAccessoryAttached() && |
211 !iGripOpen && |
211 !iGripOpen && |
212 !iKeyLock.IsKeyLockEnabled() ) |
212 !iKeyLock.IsKeyLockEnabled() ) |
213 { |
213 { |
214 FLOG( _L( "CTelDMCommandHandler::CallStateChanged -lock?" ) ) |
214 FLOG( _L( "CTelDMCommandHandler::CallStateChanged -lock?" ) ) |
215 //Lock keypad ? |
215 //Lock keypad ? |
216 iKeyLock.OfferKeyLock(); |
216 iKeyLock.OfferKeyLock(); |
217 } |
217 } |
218 } |
218 } |
219 |
219 |
220 // --------------------------------------------------------- |
220 // --------------------------------------------------------- |
221 // CTelDMCommandHandler::IsEmergencyCall |
221 // CTelDMCommandHandler::IsEmergencyCall |
222 // --------------------------------------------------------- |
222 // --------------------------------------------------------- |