equal
deleted
inserted
replaced
132 if ( iPairingServ ) |
132 if ( iPairingServ ) |
133 { |
133 { |
134 iPairingServ->Close(); |
134 iPairingServ->Close(); |
135 delete iPairingServ; |
135 delete iPairingServ; |
136 } |
136 } |
|
137 if ( !iMessage.IsNull() ) |
|
138 { |
|
139 iMessage.Complete( KErrCancel ); |
|
140 } |
137 TRACE_FUNC_EXIT |
141 TRACE_FUNC_EXIT |
138 } |
142 } |
139 |
143 |
140 // --------------------------------------------------------------------------- |
144 // --------------------------------------------------------------------------- |
141 // Handles pairing related commands from BTEng clients. |
145 // Handles pairing related commands from BTEng clients. |
154 SetPairObserver( addrPkg(), aMessage.Int1() ); |
158 SetPairObserver( addrPkg(), aMessage.Int1() ); |
155 break; |
159 break; |
156 } |
160 } |
157 case EBTEngPairDevice: |
161 case EBTEngPairDevice: |
158 { |
162 { |
|
163 if ( !iMessage.IsNull() ) |
|
164 { |
|
165 User::Leave( KErrServerBusy ); |
|
166 } |
159 TBTDevAddrPckgBuf addrPkg; |
167 TBTDevAddrPckgBuf addrPkg; |
160 aMessage.ReadL( KBTEngAddrSlot, addrPkg ); |
168 aMessage.ReadL( KBTEngAddrSlot, addrPkg ); |
161 PairDeviceL( addrPkg(), aMessage.Int1() ); |
169 PairDeviceL( addrPkg(), aMessage.Int1() ); |
|
170 iMessage = RMessage2( aMessage ); |
162 break; |
171 break; |
163 } |
172 } |
164 case EBTEngCancelPairDevice: |
173 case EBTEngCancelPairDevice: |
165 { |
174 { |
166 CancelCommand( opcode ); |
175 // Only the client who requested pairing can cancel it: |
|
176 if ( !iMessage.IsNull() && aMessage.Session() == iMessage.Session() ) |
|
177 { |
|
178 iPairer->CancelOutgoingPair(); |
|
179 iMessage.Complete( KErrCancel ); |
|
180 } |
167 break; |
181 break; |
168 } |
182 } |
169 default: |
183 default: |
170 { |
184 { |
171 TRACE_INFO( ( _L( "CBTEngPairMan ProcessCommandL: bad request (%d)" ), |
185 TRACE_INFO( ( _L( "CBTEngPairMan ProcessCommandL: bad request (%d)" ), |
175 } |
189 } |
176 TRACE_FUNC_EXIT |
190 TRACE_FUNC_EXIT |
177 } |
191 } |
178 |
192 |
179 // --------------------------------------------------------------------------- |
193 // --------------------------------------------------------------------------- |
180 // Cancels outgoing pairing requests |
|
181 // --------------------------------------------------------------------------- |
|
182 // |
|
183 void CBTEngPairMan::CancelCommand( TInt aOpCode ) |
|
184 { |
|
185 switch( aOpCode ) |
|
186 { |
|
187 case EBTEngPairDevice: |
|
188 { |
|
189 TRACE_FUNC_ENTRY |
|
190 if ( iPairer ) |
|
191 { |
|
192 iPairer->CancelOutgoingPair(); |
|
193 } |
|
194 TRACE_FUNC_EXIT |
|
195 break; |
|
196 } |
|
197 } |
|
198 } |
|
199 |
|
200 // --------------------------------------------------------------------------- |
|
201 // Handle a change in BTRegistry remote devices table. |
194 // Handle a change in BTRegistry remote devices table. |
202 // --------------------------------------------------------------------------- |
195 // --------------------------------------------------------------------------- |
203 // |
196 // |
204 void CBTEngPairMan::RemoteRegistryChangeDetected() |
197 void CBTEngPairMan::RemoteRegistryChangeDetected() |
205 { |
198 { |
226 // Access the reference of RSockServ |
219 // Access the reference of RSockServ |
227 // --------------------------------------------------------------------------- |
220 // --------------------------------------------------------------------------- |
228 // |
221 // |
229 RSocketServ& CBTEngPairMan::SocketServ() |
222 RSocketServ& CBTEngPairMan::SocketServ() |
230 { |
223 { |
231 return iServer.SocketServ(); |
224 return iServer.SocketServer(); |
232 } |
225 } |
233 |
226 |
234 // --------------------------------------------------------------------------- |
227 // --------------------------------------------------------------------------- |
235 // Access the reference of RBTRegSrv |
228 // Access the reference of RBTRegSrv |
236 // --------------------------------------------------------------------------- |
229 // --------------------------------------------------------------------------- |
237 // |
230 // |
238 RBTRegServ& CBTEngPairMan::BTRegServ() |
231 RBTRegServ& CBTEngPairMan::BTRegServ() |
239 { |
232 { |
240 return iServer.BTRegServ(); |
233 return iServer.RegistrServer(); |
241 } |
234 } |
242 |
235 |
243 // --------------------------------------------------------------------------- |
236 // --------------------------------------------------------------------------- |
244 // Deletes the current pairing handler and transfer the responsibility |
237 // Deletes the current pairing handler and transfer the responsibility |
245 // to the specified. |
238 // to the specified. |
263 if ( aErr == KHCIErrorBase ) |
256 if ( aErr == KHCIErrorBase ) |
264 { |
257 { |
265 aErr = KErrNone; |
258 aErr = KErrNone; |
266 } |
259 } |
267 // we must complete client's pairing request: |
260 // we must complete client's pairing request: |
268 iServer.iSessionIter.SetToLast(); |
261 if ( !iMessage.IsNull() ) |
269 CBTEngSrvSession* session = (CBTEngSrvSession*) iServer.iSessionIter--; |
262 { |
270 TInt ret( KErrNotFound ); |
263 iMessage.Complete( aErr ); |
271 while( session && ret ) |
264 } |
272 { |
265 TRACE_FUNC_EXIT |
273 ret = session->CompletePairRequest( aErr ); |
266 } |
274 session = (CBTEngSrvSession*) iServer.iSessionIter--; |
267 |
|
268 // --------------------------------------------------------------------------- |
|
269 // A session will be ended, completes the pending request for this session. |
|
270 // --------------------------------------------------------------------------- |
|
271 // |
|
272 void CBTEngPairMan::SessionClosed( CSession2* aSession ) |
|
273 { |
|
274 TRACE_FUNC_ARG( ( _L( " session %x"), aSession ) ) |
|
275 if ( !iMessage.IsNull() && iMessage.Session() == aSession ) |
|
276 { |
|
277 iMessage.Complete( KErrCancel ); |
275 } |
278 } |
276 TRACE_FUNC_EXIT |
279 TRACE_FUNC_EXIT |
277 } |
280 } |
278 |
281 |
279 // --------------------------------------------------------------------------- |
282 // --------------------------------------------------------------------------- |