12 // |
12 // |
13 // Description: |
13 // Description: |
14 // |
14 // |
15 |
15 |
16 #include "cptpipcontroller.h" // Cptpipcontroller |
16 #include "cptpipcontroller.h" // Cptpipcontroller |
|
17 #include "mtpdebug.h" |
17 |
18 |
18 #include <mtp/tmtptypeuint128.h> |
19 #include <mtp/tmtptypeuint128.h> |
19 #include "ptpipsocketpublish.h" |
20 #include "ptpipsocketpublish.h" |
20 #include <in_sock.h> |
21 #include <in_sock.h> |
21 #include "ptpipprotocolconstants.h" |
22 #include "ptpipprotocolconstants.h" |
|
23 #include "OstTraceDefinitions.h" |
|
24 #ifdef OST_TRACE_COMPILER_IN_USE |
|
25 #include "cptpipcontrollerTraces.h" |
|
26 #endif |
|
27 |
22 |
28 |
23 |
29 |
24 |
30 |
25 _LIT_SECURITY_POLICY_PASS(KAllowReadAll); |
31 _LIT_SECURITY_POLICY_PASS(KAllowReadAll); |
26 _LIT_SECURITY_POLICY_C1(KProcPolicy,ECapability_None); |
32 _LIT_SECURITY_POLICY_C1(KProcPolicy,ECapability_None); |
27 __FLOG_STMT(_LIT8(KComponent,"PTPIPController");) |
|
28 |
|
29 |
33 |
30 #define PTPIP_INIT_COMMAND_REQUEST 1 |
34 #define PTPIP_INIT_COMMAND_REQUEST 1 |
31 #define PTPIP_INIT_COMMAND_ACK 2 |
35 #define PTPIP_INIT_COMMAND_ACK 2 |
32 #define PTPIP_INIT_EVENT_REQUEST 3 |
36 #define PTPIP_INIT_EVENT_REQUEST 3 |
33 #define PTPIP_INIT_FAIL 5 |
37 #define PTPIP_INIT_FAIL 5 |
41 }; |
45 }; |
42 |
46 |
43 |
47 |
44 EXPORT_C CPTPIPController* CPTPIPController::NewLC() |
48 EXPORT_C CPTPIPController* CPTPIPController::NewLC() |
45 { |
49 { |
|
50 OstTraceFunctionEntry0( CPTPIPCONTROLLER_NEWLC_ENTRY ); |
46 CPTPIPController* self = new (ELeave) CPTPIPController; |
51 CPTPIPController* self = new (ELeave) CPTPIPController; |
47 CleanupStack::PushL(self); |
52 CleanupStack::PushL(self); |
48 self->ConstructL(); |
53 self->ConstructL(); |
|
54 OstTraceFunctionExit0( CPTPIPCONTROLLER_NEWLC_EXIT ); |
49 return self; |
55 return self; |
50 } |
56 } |
51 |
57 |
52 /* |
58 /* |
53 Factory Method |
59 Factory Method |
54 */ |
60 */ |
55 EXPORT_C CPTPIPController* CPTPIPController::NewL() |
61 EXPORT_C CPTPIPController* CPTPIPController::NewL() |
56 { |
62 { |
|
63 OstTraceFunctionEntry0( CPTPIPCONTROLLER_NEWL_ENTRY ); |
57 CPTPIPController* self = CPTPIPController::NewLC(); |
64 CPTPIPController* self = CPTPIPController::NewLC(); |
58 CleanupStack::Pop(1); |
65 CleanupStack::Pop(1); |
|
66 OstTraceFunctionExit0( CPTPIPCONTROLLER_NEWL_EXIT ); |
59 return self; |
67 return self; |
60 } |
68 } |
61 |
69 |
62 |
70 |
63 CPTPIPController::CPTPIPController(): |
71 CPTPIPController::CPTPIPController(): |
64 CActive(EPriorityStandard),iDeviceGUID() |
72 CActive(EPriorityStandard),iDeviceGUID() |
65 { |
73 { |
|
74 OstTraceFunctionEntry0( CPTPIPCONTROLLER_CPTPIPCONTROLLER_ENTRY ); |
66 iCtrlState=EIdle; |
75 iCtrlState=EIdle; |
67 iTransportId=TUid::Uid(KMTPPTPIPTransportImplementationUid); |
76 iTransportId=TUid::Uid(KMTPPTPIPTransportImplementationUid); |
68 iCounter=0; |
77 iCounter=0; |
69 CActiveScheduler::Add(this); |
78 CActiveScheduler::Add(this); |
|
79 OstTraceFunctionExit0( CPTPIPCONTROLLER_CPTPIPCONTROLLER_EXIT ); |
70 } |
80 } |
71 |
81 |
72 /* |
82 /* |
73 Creates two PTPIP SocketHandlers and handles the sockets to |
83 Creates two PTPIP SocketHandlers and handles the sockets to |
74 PTPIP SocketHandler & loads the Filter plugin. |
84 PTPIP SocketHandler & loads the Filter plugin. |
75 */ |
85 */ |
76 void CPTPIPController::ConstructL() |
86 void CPTPIPController::ConstructL() |
77 { |
87 { |
78 __FLOG_OPEN(KMTPSubsystem, KComponent); |
88 OstTraceFunctionEntry0( CPTPIPCONTROLLER_CONSTRUCTL_ENTRY ); |
79 iCmdHandler = CPTPIPSocketHandler::NewL(); |
89 iCmdHandler = CPTPIPSocketHandler::NewL(); |
80 iEvtHandler = CPTPIPSocketHandler::NewL(); |
90 iEvtHandler = CPTPIPSocketHandler::NewL(); |
81 iFilter=CPTPIPHostFilterInterface::NewL(); |
91 iFilter=CPTPIPHostFilterInterface::NewL(); |
82 iInitCmdAck = CPTPIPInitCmdAck::NewL(); |
92 iInitCmdAck = CPTPIPInitCmdAck::NewL(); |
83 iTimer=CPTPIPTimer::NewL(*this); |
93 iTimer=CPTPIPTimer::NewL(*this); |
129 //the same socket that we have given him third time. |
142 //the same socket that we have given him third time. |
130 |
143 |
131 } |
144 } |
132 TInt CPTPIPController::CheckMTPConnection() |
145 TInt CPTPIPController::CheckMTPConnection() |
133 { |
146 { |
|
147 OstTraceFunctionEntry0( CPTPIPCONTROLLER_CHECKMTPCONNECTION_ENTRY ); |
134 TInt error = KErrNone; |
148 TInt error = KErrNone; |
135 if(iIsConnectedToMTP == EFalse) |
149 if(iIsConnectedToMTP == EFalse) |
136 { |
150 { |
137 error = iMTP.Connect(); |
151 error = iMTP.Connect(); |
138 } |
152 } |
139 if(error ==KErrNone) |
153 if(error ==KErrNone) |
140 { |
154 { |
141 iIsConnectedToMTP = ETrue; |
155 iIsConnectedToMTP = ETrue; |
142 error = iMTP.IsAvailable(iTransportId); |
156 error = iMTP.IsAvailable(iTransportId); |
143 } |
157 } |
|
158 OstTraceFunctionExit0( CPTPIPCONTROLLER_CHECKMTPCONNECTION_EXIT ); |
144 return error; |
159 return error; |
145 } |
160 } |
146 /* |
161 /* |
147 Validates the socket connection based on the current value of iCtrlState |
162 Validates the socket connection based on the current value of iCtrlState |
148 @return ETrue on succes EFalse on failure*/ |
163 @return ETrue on succes EFalse on failure*/ |
149 TBool CPTPIPController::Validate() |
164 TBool CPTPIPController::Validate() |
150 { |
165 { |
|
166 OstTraceFunctionEntry0( CPTPIPCONTROLLER_VALIDATE_ENTRY ); |
151 if(iCtrlState==EIdle || iCtrlState==EInitEvtAwaited) |
167 if(iCtrlState==EIdle || iCtrlState==EInitEvtAwaited) |
152 return ETrue; |
168 return ETrue; |
153 else |
169 else |
154 return EFalse; |
170 return EFalse; |
155 } |
171 } |
156 |
172 |
157 |
173 |
158 /*Saves the CommandSocket and EventSocket;The respective SocketHandlers are given the sockets |
174 /*Saves the CommandSocket and EventSocket;The respective SocketHandlers are given the sockets |
160 @param aSocket Pointer to socket |
176 @param aSocket Pointer to socket |
161 @param TRequestStatus of the caller i.e., CPTPIPAgent |
177 @param TRequestStatus of the caller i.e., CPTPIPAgent |
162 */ |
178 */ |
163 EXPORT_C void CPTPIPController::SocketAccepted(TRequestStatus& aStatus) |
179 EXPORT_C void CPTPIPController::SocketAccepted(TRequestStatus& aStatus) |
164 { |
180 { |
|
181 OstTraceFunctionEntry0( CPTPIPCONTROLLER_SOCKETACCEPTED_ENTRY ); |
165 iCallerStatus=&aStatus; |
182 iCallerStatus=&aStatus; |
166 aStatus=KRequestPending; |
183 aStatus=KRequestPending; |
167 TBool result=Validate(); |
184 TBool result=Validate(); |
168 if(result==EFalse) |
185 if(result==EFalse) |
169 { |
186 { |
170 User::RequestComplete(iCallerStatus,KErrServerBusy); |
187 User::RequestComplete(iCallerStatus,KErrServerBusy); |
|
188 OstTraceFunctionExit0( CPTPIPCONTROLLER_SOCKETACCEPTED_EXIT ); |
171 return; |
189 return; |
172 } |
190 } |
173 |
191 |
174 if(iCtrlState==EInitEvtAwaited) |
192 if(iCtrlState==EInitEvtAwaited) |
175 { // we are not gracefully rejecting a new PTPIP connection from other host |
193 { // we are not gracefully rejecting a new PTPIP connection from other host |
176 // as of now just socket closed. |
194 // as of now just socket closed. |
177 if(CompareHost(iEvtHandler->Socket())==EFalse) |
195 if(CompareHost(iEvtHandler->Socket())==EFalse) |
178 { |
196 { |
179 User::RequestComplete(iCallerStatus,KErrServerBusy); |
197 User::RequestComplete(iCallerStatus,KErrServerBusy); |
|
198 OstTraceFunctionExit0( DUP1_CPTPIPCONTROLLER_SOCKETACCEPTED_EXIT ); |
180 return; |
199 return; |
181 } |
200 } |
182 } |
201 } |
183 if(iCtrlState==EPTPIPConnected) |
202 if(iCtrlState==EPTPIPConnected) |
184 { |
203 { |
200 { |
219 { |
201 iCtrlState = EInitEvtAwaited; |
220 iCtrlState = EInitEvtAwaited; |
202 } |
221 } |
203 |
222 |
204 Schedule(); |
223 Schedule(); |
|
224 OstTraceFunctionExit0( DUP2_CPTPIPCONTROLLER_SOCKETACCEPTED_EXIT ); |
205 } |
225 } |
206 |
226 |
207 |
227 |
208 /* |
228 /* |
209 Compares whether the second connection request is from the same remote host |
229 Compares whether the second connection request is from the same remote host |
210 @param returns ETrue if the second request comes from the same host |
230 @param returns ETrue if the second request comes from the same host |
211 */ |
231 */ |
212 TBool CPTPIPController::CompareHost(RSocket& aSocket) |
232 TBool CPTPIPController::CompareHost(RSocket& aSocket) |
213 { |
233 { |
|
234 OstTraceFunctionEntry0( CPTPIPCONTROLLER_COMPAREHOST_ENTRY ); |
214 |
235 |
215 TInetAddr thisaddr, newAddr; |
236 TInetAddr thisaddr, newAddr; |
216 |
237 |
217 iCmdHandler->Socket().RemoteName(thisaddr); |
238 iCmdHandler->Socket().RemoteName(thisaddr); |
218 aSocket.RemoteName(newAddr); |
239 aSocket.RemoteName(newAddr); |
219 if(newAddr.Address() == thisaddr.Address()) |
240 if(newAddr.Address() == thisaddr.Address()) |
220 { |
241 { |
|
242 OstTraceFunctionExit0( CPTPIPCONTROLLER_COMPAREHOST_EXIT ); |
221 return ETrue; |
243 return ETrue; |
222 } |
244 } |
223 else |
245 else |
224 { |
246 { |
|
247 OstTraceFunctionExit0( DUP1_CPTPIPCONTROLLER_COMPAREHOST_EXIT ); |
225 return EFalse; |
248 return EFalse; |
226 } |
249 } |
227 |
250 |
228 } |
251 } |
229 |
252 |
230 /** |
253 /** |
231 Schedules the next request phase or event. |
254 Schedules the next request phase or event. |
232 */ |
255 */ |
233 void CPTPIPController::Schedule() |
256 void CPTPIPController::Schedule() |
234 { |
257 { |
|
258 OstTraceFunctionEntry0( CPTPIPCONTROLLER_SCHEDULE_ENTRY ); |
235 iStatus = KRequestPending; |
259 iStatus = KRequestPending; |
236 TRequestStatus* status(&iStatus); |
260 TRequestStatus* status(&iStatus); |
237 SetActive(); |
261 SetActive(); |
238 User::RequestComplete(status, KErrNone); |
262 User::RequestComplete(status, KErrNone); |
|
263 OstTraceFunctionExit0( CPTPIPCONTROLLER_SCHEDULE_EXIT ); |
239 } |
264 } |
240 |
265 |
241 /* |
266 /* |
242 Defines the two socket names to be published |
267 Defines the two socket names to be published |
243 @return one of the system wide error codes on failure |
268 @return one of the system wide error codes on failure |
244 */ |
269 */ |
245 TInt CPTPIPController::PublishSocketNamePair() |
270 TInt CPTPIPController::PublishSocketNamePair() |
246 { |
271 { |
|
272 OstTraceFunctionEntry0( CPTPIPCONTROLLER_PUBLISHSOCKETNAMEPAIR_ENTRY ); |
247 TName iCommandSocketSysName,iEventSocketSysName; |
273 TName iCommandSocketSysName,iEventSocketSysName; |
248 iCmdHandler->Socket().Name(iCommandSocketSysName); |
274 iCmdHandler->Socket().Name(iCommandSocketSysName); |
249 iEvtHandler->Socket().Name(iEventSocketSysName); |
275 iEvtHandler->Socket().Name(iEventSocketSysName); |
250 |
276 |
251 |
277 |
267 |
293 |
268 error=iProperty.Attach(KPropertyUid,EEventSocketName); |
294 error=iProperty.Attach(KPropertyUid,EEventSocketName); |
269 |
295 |
270 error=RProperty::Set(KPropertyUid,EEventSocketName,iEventSocketSysName); |
296 error=RProperty::Set(KPropertyUid,EEventSocketName,iEventSocketSysName); |
271 |
297 |
|
298 OstTraceFunctionExit0( CPTPIPCONTROLLER_PUBLISHSOCKETNAMEPAIR_EXIT ); |
272 return error; |
299 return error; |
273 } |
300 } |
274 |
301 |
275 |
302 |
276 /*Makes the sockets Transfer enabled |
303 /*Makes the sockets Transfer enabled |
277 @return one of the system wide error codes on failure |
304 @return one of the system wide error codes on failure |
278 */ |
305 */ |
279 TInt CPTPIPController::EnableSocketTransfer() |
306 TInt CPTPIPController::EnableSocketTransfer() |
280 { |
307 { |
|
308 OstTraceFunctionEntry0( CPTPIPCONTROLLER_ENABLESOCKETTRANSFER_ENTRY ); |
281 TInt err; |
309 TInt err; |
282 err = iCmdHandler->Socket().SetOpt(KSOEnableTransfer, KSOLSocket,KProcPolicy().Package()); |
310 err = iCmdHandler->Socket().SetOpt(KSOEnableTransfer, KSOLSocket,KProcPolicy().Package()); |
283 |
311 |
284 if(err != KErrNone) return err; |
312 if(err != KErrNone) return err; |
285 |
313 |
286 err = iEvtHandler->Socket().SetOpt(KSOEnableTransfer, KSOLSocket,KProcPolicy().Package()); |
314 err = iEvtHandler->Socket().SetOpt(KSOEnableTransfer, KSOLSocket,KProcPolicy().Package()); |
287 |
315 |
|
316 OstTraceFunctionExit0( CPTPIPCONTROLLER_ENABLESOCKETTRANSFER_EXIT ); |
288 return err; |
317 return err; |
289 } |
318 } |
290 |
319 |
291 /* |
320 /* |
292 Sets the obtained DeviceGUID as the current DeviceGUID |
321 Sets the obtained DeviceGUID as the current DeviceGUID |
293 @param TDesC8& aDeviceGUID |
322 @param TDesC8& aDeviceGUID |
294 @return TInt KErrArgument if DeviceGUID is invalid or KErrNone |
323 @return TInt KErrArgument if DeviceGUID is invalid or KErrNone |
295 */ |
324 */ |
296 EXPORT_C TInt CPTPIPController::SetDeviceGUID(TDesC8& aDeviceGUID) |
325 EXPORT_C TInt CPTPIPController::SetDeviceGUID(TDesC8& aDeviceGUID) |
297 { |
326 { |
|
327 OstTraceFunctionEntry0( CPTPIPCONTROLLER_SETDEVICEGUID_ENTRY ); |
298 TInt size = aDeviceGUID.Size(); |
328 TInt size = aDeviceGUID.Size(); |
299 if (size != 16) return KErrArgument; |
329 if (size != 16) return KErrArgument; |
300 TMTPTypeUint128 guid(aDeviceGUID); |
330 TMTPTypeUint128 guid(aDeviceGUID); |
301 iDeviceGUID = guid; |
331 iDeviceGUID = guid; |
|
332 OstTraceFunctionExit0( CPTPIPCONTROLLER_SETDEVICEGUID_EXIT ); |
302 return KErrNone; |
333 return KErrNone; |
303 } |
334 } |
304 |
335 |
305 /* |
336 /* |
306 Sets the obtained DeviceFriendlyName |
337 Sets the obtained DeviceFriendlyName |
307 @param TDesC16* aDeviceGUID |
338 @param TDesC16* aDeviceGUID |
308 */ |
339 */ |
309 EXPORT_C void CPTPIPController::SetDeviceFriendlyName(TDesC16* aDeviceFreindlyName) |
340 EXPORT_C void CPTPIPController::SetDeviceFriendlyName(TDesC16* aDeviceFreindlyName) |
310 { |
341 { |
|
342 OstTraceFunctionEntry0( CPTPIPCONTROLLER_SETDEVICEFRIENDLYNAME_ENTRY ); |
311 delete iDeviceFriendlyName; |
343 delete iDeviceFriendlyName; |
312 |
344 |
313 TRAPD(err, iDeviceFriendlyName=aDeviceFreindlyName->AllocL()); |
345 TRAPD(err, iDeviceFriendlyName=aDeviceFreindlyName->AllocL()); |
314 |
346 |
315 if(err != KErrNone) |
347 if(err != KErrNone) |
316 { |
348 { |
317 __FLOG_VA((_L8("CPTPIPController::SetDeviceFriendlyName ERROR = %d\n"), err)); |
349 OstTrace1( TRACE_NORMAL, CPTPIPCONTROLLER_SETDEVICEFRIENDLYNAME, "CPTPIPController::SetDeviceFriendlyName ERROR = %d\n", err ); |
318 } |
350 } |
319 |
351 |
|
352 OstTraceFunctionExit0( CPTPIPCONTROLLER_SETDEVICEFRIENDLYNAME_EXIT ); |
320 } |
353 } |
321 |
354 |
322 |
355 |
323 void CPTPIPController::Reset() |
356 void CPTPIPController::Reset() |
324 { |
357 { |
|
358 OstTraceFunctionEntry0( CPTPIPCONTROLLER_RESET_ENTRY ); |
325 iCmdHandler->Socket().Close(); |
359 iCmdHandler->Socket().Close(); |
326 iEvtHandler->Socket().Close(); |
360 iEvtHandler->Socket().Close(); |
327 if(iIsConnectedToMTP) |
361 if(iIsConnectedToMTP) |
328 { |
362 { |
329 TInt stopStatus=iMTP.StopTransport(iTransportId); |
363 TInt stopStatus=iMTP.StopTransport(iTransportId); |
330 if (KErrNone != stopStatus) |
364 if (KErrNone != stopStatus) |
331 { |
365 { |
332 __FLOG_VA((_L8("CPTPIPController::Reset ERROR = %d\n"), stopStatus)); |
366 OstTrace1( TRACE_NORMAL, CPTPIPCONTROLLER_RESET, "CPTPIPController::Reset ERROR = %d\n", stopStatus ); |
|
367 |
333 } |
368 } |
334 |
369 |
335 } |
370 } |
336 |
371 |
337 iMTP.Close(); |
372 iMTP.Close(); |
340 iCounter=0; |
375 iCounter=0; |
341 iIsConnectedToMTP = EFalse; |
376 iIsConnectedToMTP = EFalse; |
342 iCtrlState = EIdle; |
377 iCtrlState = EIdle; |
343 iCmdHandler->State()=EReadState; |
378 iCmdHandler->State()=EReadState; |
344 iEvtHandler->State()=EReadState; |
379 iEvtHandler->State()=EReadState; |
|
380 OstTraceFunctionExit0( CPTPIPCONTROLLER_RESET_EXIT ); |
345 } |
381 } |
346 |
382 |
347 EXPORT_C void CPTPIPController::StopTransport() |
383 EXPORT_C void CPTPIPController::StopTransport() |
348 { |
384 { |
|
385 OstTraceFunctionEntry0( CPTPIPCONTROLLER_STOPTRANSPORT_ENTRY ); |
349 Reset(); |
386 Reset(); |
|
387 OstTraceFunctionExit0( CPTPIPCONTROLLER_STOPTRANSPORT_EXIT ); |
350 } |
388 } |
351 |
389 |
352 |
390 |
353 |
391 |
354 void CPTPIPController:: CheckAndHandleErrorL(TInt aError) |
392 void CPTPIPController:: CheckAndHandleErrorL(TInt aError) |
355 { |
393 { |
|
394 OstTraceFunctionEntry0( CPTPIPCONTROLLER_CHECKANDHANDLEERRORL_ENTRY ); |
356 if(aError != KErrNone) |
395 if(aError != KErrNone) |
357 { |
396 { |
358 Reset(); |
397 Reset(); |
359 __FLOG_VA((_L8("PTPIP Controller CheckAndHandleErrorL, Error = %d"), aError)); |
398 OstTrace1( TRACE_NORMAL, CPTPIPCONTROLLER_CHECKANDHANDLEERRORL, "PTPIP Controller CheckAndHandleErrorL, Error = %d", aError ); |
360 User::Leave(aError); |
399 LEAVEIFERROR( aError, |
|
400 OstTrace1( TRACE_ERROR, DUP1_CPTPIPCONTROLLER_CHECKANDHANDLEERRORL, "error code is %d", aError )); |
361 } |
401 } |
|
402 OstTraceFunctionExit0( CPTPIPCONTROLLER_CHECKANDHANDLEERRORL_EXIT ); |
362 } |
403 } |
363 |
404 |
364 void CPTPIPController:: CheckInitFailL(TInt aError) |
405 void CPTPIPController:: CheckInitFailL(TInt aError) |
365 { |
406 { |
|
407 OstTraceFunctionEntry0( CPTPIPCONTROLLER_CHECKINITFAILL_ENTRY ); |
366 |
408 |
367 TInitFailReason reason = EInitFailUnSpecified; |
409 TInitFailReason reason = EInitFailUnSpecified; |
368 |
410 |
369 // we send Init fail packet to Initiator on command channel |
411 // we send Init fail packet to Initiator on command channel |
370 // even after InitEvent is received. |
412 // even after InitEvent is received. |
379 if(iCmdHandler->State()==EWriteState) |
421 if(iCmdHandler->State()==EWriteState) |
380 iCmdHandler->WriteToSocket(iInitFailed,iStatus); |
422 iCmdHandler->WriteToSocket(iInitFailed,iStatus); |
381 else |
423 else |
382 iEvtHandler->WriteToSocket(iInitFailed,iStatus); |
424 iEvtHandler->WriteToSocket(iInitFailed,iStatus); |
383 StartTimer(30); |
425 StartTimer(30); |
384 __FLOG_VA((_L8("PTPIP Controller Error, Error = %d"), aError)); |
426 LEAVEIFERROR( aError, |
385 User::Leave(aError); |
427 OstTrace1( TRACE_NORMAL, CPTPIPCONTROLLER_CHECKINITFAILL, "PTPIP Controller Error, Error = %d", aError )); |
386 } |
428 } |
|
429 OstTraceFunctionExit0( CPTPIPCONTROLLER_CHECKINITFAILL_EXIT ); |
387 } |
430 } |
388 |
431 |
389 /* |
432 /* |
390 Cause a Time-Out event to occur |
433 Cause a Time-Out event to occur |
391 */ |
434 */ |
392 EXPORT_C void CPTPIPController::OnTimeOut() |
435 EXPORT_C void CPTPIPController::OnTimeOut() |
393 { |
436 { |
|
437 OstTraceFunctionEntry0( CPTPIPCONTROLLER_ONTIMEOUT_ENTRY ); |
394 TRequestStatus* status(&iStatus); |
438 TRequestStatus* status(&iStatus); |
395 User::RequestComplete(status,KErrTimedOut); |
439 User::RequestComplete(status,KErrTimedOut); |
|
440 OstTraceFunctionExit0( CPTPIPCONTROLLER_ONTIMEOUT_EXIT ); |
396 } |
441 } |
397 |
442 |
398 void CPTPIPController::StartTimer(TInt aSecond) |
443 void CPTPIPController::StartTimer(TInt aSecond) |
399 { |
444 { |
400 iTimer->IssueRequest(aSecond); |
445 OstTraceFunctionEntry0( CPTPIPCONTROLLER_STARTTIMER_ENTRY ); |
401 iStatus = KRequestPending; |
446 iTimer->IssueRequest(aSecond); |
402 SetActive(); |
447 iStatus = KRequestPending; |
|
448 SetActive(); |
|
449 OstTraceFunctionExit0( CPTPIPCONTROLLER_STARTTIMER_EXIT ); |
403 } |
450 } |
404 |
451 |
405 void CPTPIPController::RunL() |
452 void CPTPIPController::RunL() |
406 { |
453 { |
|
454 OstTraceFunctionEntry0( CPTPIPCONTROLLER_RUNL_ENTRY ); |
407 |
455 |
408 TInt StatusError=iStatus.Int(); |
456 TInt StatusError=iStatus.Int(); |
409 |
457 |
410 if(iCmdHandler->IsActive() || iEvtHandler->IsActive()) |
458 if(iCmdHandler->IsActive() || iEvtHandler->IsActive()) |
411 { |
459 { |
560 iCounter=0; |
610 iCounter=0; |
561 iMTP.Close(); |
611 iMTP.Close(); |
562 iIsConnectedToMTP = EFalse; |
612 iIsConnectedToMTP = EFalse; |
563 } |
613 } |
564 //Return KErrNone back to RunL() |
614 //Return KErrNone back to RunL() |
|
615 OstTraceFunctionExit0( CPTPIPCONTROLLER_RUNERROR_EXIT ); |
565 return KErrNone; |
616 return KErrNone; |
566 } |
617 } |
567 |
618 |
568 |
619 |
569 |
620 |
570 |
621 |
571 void CPTPIPController::DoCancel() |
622 void CPTPIPController::DoCancel() |
572 { |
623 { |
573 |
624 OstTraceFunctionEntry0( CPTPIPCONTROLLER_DOCANCEL_ENTRY ); |
|
625 |
|
626 OstTraceFunctionExit0( CPTPIPCONTROLLER_DOCANCEL_EXIT ); |
574 } |
627 } |
575 |
628 |
576 TInt CPTPIPController::ParseInitPacketL() |
629 TInt CPTPIPController::ParseInitPacketL() |
577 { |
630 { |
|
631 OstTraceFunctionEntry0( CPTPIPCONTROLLER_PARSEINITPACKETL_ENTRY ); |
578 TUint32 length(iInitCmdReq->Uint32L(CPTPIPInitCmdRequest::ELength)); |
632 TUint32 length(iInitCmdReq->Uint32L(CPTPIPInitCmdRequest::ELength)); |
579 TUint32 type(iInitCmdReq->Uint32L(CPTPIPInitCmdRequest::EPktType)); |
633 TUint32 type(iInitCmdReq->Uint32L(CPTPIPInitCmdRequest::EPktType)); |
580 if(type != PTPIP_INIT_COMMAND_REQUEST) |
634 if(type != PTPIP_INIT_COMMAND_REQUEST) |
581 { |
635 { |
|
636 OstTraceFunctionExit0( CPTPIPCONTROLLER_PARSEINITPACKETL_EXIT ); |
582 return KErrBadHandle; |
637 return KErrBadHandle; |
583 } |
638 } |
584 |
639 |
585 iInitCmdReq->GetL(CPTPIPInitCmdRequest::EInitiatorGUID,iHostGUID); |
640 iInitCmdReq->GetL(CPTPIPInitCmdRequest::EInitiatorGUID,iHostGUID); |
586 |
641 |
587 |
642 |
588 TDesC& name = iInitCmdReq->HostFriendlyName(); |
643 TDesC& name = iInitCmdReq->HostFriendlyName(); |
589 iHostFriendlyName = &name; |
644 iHostFriendlyName = &name; |
590 TUint32 version(iInitCmdReq->Uint32L(CPTPIPInitCmdRequest::EVersion)); |
645 TUint32 version(iInitCmdReq->Uint32L(CPTPIPInitCmdRequest::EVersion)); |
|
646 OstTraceFunctionExit0( DUP1_CPTPIPCONTROLLER_PARSEINITPACKETL_EXIT ); |
591 return KErrNone; |
647 return KErrNone; |
592 } |
648 } |
593 |
649 |
594 TInt CPTPIPController::ParseEvtPacket() |
650 TInt CPTPIPController::ParseEvtPacket() |
595 { |
651 { |
|
652 OstTraceFunctionEntry0( CPTPIPCONTROLLER_PARSEEVTPACKET_ENTRY ); |
596 TUint32 length(iInitEvtReq.Uint32(TPTPIPInitEvtRequest::ELength)); |
653 TUint32 length(iInitEvtReq.Uint32(TPTPIPInitEvtRequest::ELength)); |
597 TUint32 type(iInitEvtReq.Uint32(TPTPIPInitEvtRequest::EType)); |
654 TUint32 type(iInitEvtReq.Uint32(TPTPIPInitEvtRequest::EType)); |
598 if(type != PTPIP_INIT_EVENT_REQUEST) return KErrBadHandle; |
655 if(type != PTPIP_INIT_EVENT_REQUEST) return KErrBadHandle; |
599 TUint32 conNumber(iInitEvtReq.Uint32(TPTPIPInitEvtRequest::EconNumber)); |
656 TUint32 conNumber(iInitEvtReq.Uint32(TPTPIPInitEvtRequest::EconNumber)); |
600 if(conNumber !=PTPIP_FIXED_CONNECTION_ID) |
657 if(conNumber !=PTPIP_FIXED_CONNECTION_ID) |
601 { |
658 { |
602 // We are supporting only one connection,So connection Id is fixed. |
659 // We are supporting only one connection,So connection Id is fixed. |
|
660 OstTraceFunctionExit0( CPTPIPCONTROLLER_PARSEEVTPACKET_EXIT ); |
603 return KErrBadHandle; |
661 return KErrBadHandle; |
604 } |
662 } |
605 |
663 |
|
664 OstTraceFunctionExit0( DUP1_CPTPIPCONTROLLER_PARSEEVTPACKET_EXIT ); |
606 return KErrNone; |
665 return KErrNone; |
607 } |
666 } |
608 void CPTPIPController::BuildInitAckL() |
667 void CPTPIPController::BuildInitAckL() |
609 { |
668 { |
|
669 OstTraceFunctionEntry0( CPTPIPCONTROLLER_BUILDINITACKL_ENTRY ); |
610 iInitCmdAck->SetUint32L(CPTPIPInitCmdAck::EPktType,PTPIP_INIT_COMMAND_ACK); |
670 iInitCmdAck->SetUint32L(CPTPIPInitCmdAck::EPktType,PTPIP_INIT_COMMAND_ACK); |
611 // We are supporting only one connection,So connection Id is fixed |
671 // We are supporting only one connection,So connection Id is fixed |
612 iInitCmdAck->SetUint32L(CPTPIPInitCmdAck::EConNumber,PTPIP_FIXED_CONNECTION_ID); |
672 iInitCmdAck->SetUint32L(CPTPIPInitCmdAck::EConNumber,PTPIP_FIXED_CONNECTION_ID); |
613 |
673 |
614 iInitCmdAck->SetL(CPTPIPInitCmdAck::EResponderGUID,iDeviceGUID); |
674 iInitCmdAck->SetL(CPTPIPInitCmdAck::EResponderGUID,iDeviceGUID); |
615 |
675 |
616 iInitCmdAck->SetDeviceFriendlyName(*iDeviceFriendlyName); |
676 iInitCmdAck->SetDeviceFriendlyName(*iDeviceFriendlyName); |
617 iInitCmdAck->SetUint32L(CPTPIPInitCmdAck::EVersion,PTPIP_PRPTOCOL_VERSION); |
677 iInitCmdAck->SetUint32L(CPTPIPInitCmdAck::EVersion,PTPIP_PRPTOCOL_VERSION); |
618 TUint64 size = iInitCmdAck->Size(); |
678 TUint64 size = iInitCmdAck->Size(); |
619 iInitCmdAck->SetUint32L(CPTPIPInitCmdAck::ELength,(TUint32)size); |
679 iInitCmdAck->SetUint32L(CPTPIPInitCmdAck::ELength,(TUint32)size); |
|
680 OstTraceFunctionExit0( CPTPIPCONTROLLER_BUILDINITACKL_EXIT ); |
620 } |
681 } |
621 |
682 |
622 void CPTPIPController::BuildInitFailL(TInitFailReason aReason) |
683 void CPTPIPController::BuildInitFailL(TInitFailReason aReason) |
623 { |
684 { |
|
685 OstTraceFunctionEntry0( CPTPIPCONTROLLER_BUILDINITFAILL_ENTRY ); |
624 iInitFailed.SetUint32(TPTPIPInitFailed::ELength,iInitFailed.Size()); |
686 iInitFailed.SetUint32(TPTPIPInitFailed::ELength,iInitFailed.Size()); |
625 iInitFailed.SetUint32(TPTPIPInitFailed::EType,PTPIP_INIT_FAIL); |
687 iInitFailed.SetUint32(TPTPIPInitFailed::EType,PTPIP_INIT_FAIL); |
626 iInitFailed.SetUint32(TPTPIPInitFailed::EReason,aReason); |
688 iInitFailed.SetUint32(TPTPIPInitFailed::EReason,aReason); |
|
689 OstTraceFunctionExit0( CPTPIPCONTROLLER_BUILDINITFAILL_EXIT ); |
627 } |
690 } |
628 |
691 |
629 TBool E32Dll() |
692 TBool E32Dll() |
630 { |
693 { |
|
694 OstTraceFunctionEntry0( _E32DLL_ENTRY ); |
|
695 OstTraceFunctionExit0( _E32DLL_EXIT ); |
631 return ETrue; |
696 return ETrue; |
632 } |
697 } |
633 |
698 |
634 |
699 |
635 |
700 |