23 #include "rmtpframework.h" |
23 #include "rmtpframework.h" |
24 #include "cmtpframeworkconfig.h" |
24 #include "cmtpframeworkconfig.h" |
25 #include "cmtpdataprovidercontroller.h" |
25 #include "cmtpdataprovidercontroller.h" |
26 #include "cmtpparserrouter.h" |
26 #include "cmtpparserrouter.h" |
27 #include "e32def.h" |
27 #include "e32def.h" |
28 __FLOG_STMT(_LIT8(KComponent,"ServerSession");) |
28 #include "mtpdebug.h" |
|
29 #include "OstTraceDefinitions.h" |
|
30 #ifdef OST_TRACE_COMPILER_IN_USE |
|
31 #include "cmtpserversessionTraces.h" |
|
32 #endif |
|
33 |
29 |
34 |
30 |
35 |
31 /** |
36 /** |
32 Constructor. |
37 Constructor. |
33 */ |
38 */ |
34 CMTPServerSession::CMTPServerSession() |
39 CMTPServerSession::CMTPServerSession() |
35 { |
40 { |
36 __FLOG_OPEN(KMTPSubsystem, KComponent); |
41 OstTraceFunctionEntry0( CMTPSERVERSESSION_CMTPSERVERSESSION_CONS_ENTRY ); |
37 __FLOG(_L8("CMTPServerSession - Entry")); |
42 OstTraceFunctionExit0( CMTPSERVERSESSION_CMTPSERVERSESSION_CONS_EXIT ); |
38 __FLOG(_L8("CMTPServerSession - Exit")); |
|
39 } |
43 } |
40 |
44 |
41 /** |
45 /** |
42 Destructor. |
46 Destructor. |
43 */ |
47 */ |
44 CMTPServerSession::~CMTPServerSession() |
48 CMTPServerSession::~CMTPServerSession() |
45 { |
49 { |
46 __FLOG(_L8("~CMTPServerSession - Entry")); |
50 OstTraceFunctionEntry0( CMTPSERVERSESSION_CMTPSERVERSESSION_DES_ENTRY ); |
47 static_cast<CMTPServer*>(const_cast<CServer2*>(CSession2::Server()))->DropSession(); |
51 static_cast<CMTPServer*>(const_cast<CServer2*>(CSession2::Server()))->DropSession(); |
48 iSingletons.Close(); |
52 iSingletons.Close(); |
49 __FLOG(_L8("~CMTPServerSession - Exit")); |
53 OstTraceFunctionExit0( CMTPSERVERSESSION_CMTPSERVERSESSION_DES_EXIT ); |
50 __FLOG_CLOSE; |
|
51 } |
54 } |
52 |
55 |
53 void CMTPServerSession::CreateL() |
56 void CMTPServerSession::CreateL() |
54 { |
57 { |
55 __FLOG(_L8("CreateL - Entry")); |
58 OstTraceFunctionEntry0( CMTPSERVERSESSION_CREATEL_ENTRY ); |
56 iSingletons.OpenL(); |
59 iSingletons.OpenL(); |
57 static_cast<CMTPServer*>(const_cast<CServer2*>(CSession2::Server()))->AddSession(); |
60 static_cast<CMTPServer*>(const_cast<CServer2*>(CSession2::Server()))->AddSession(); |
58 __FLOG(_L8("CreateL - Exit")); |
61 OstTraceFunctionExit0( CMTPSERVERSESSION_CREATEL_EXIT ); |
59 } |
62 } |
60 |
63 |
61 void CMTPServerSession::ServiceL(const RMessage2& aMessage) |
64 void CMTPServerSession::ServiceL(const RMessage2& aMessage) |
62 { |
65 { |
63 __FLOG(_L8("ServiceL - Entry")); |
66 OstTraceFunctionEntry0( CMTPSERVERSESSION_SERVICEL_ENTRY ); |
64 switch (aMessage.Function()) |
67 switch (aMessage.Function()) |
65 { |
68 { |
66 case EMTPClientStartTransport: |
69 case EMTPClientStartTransport: |
67 __FLOG(_L8("StartTransport message received")); |
70 OstTrace0( TRACE_NORMAL, CMTPSERVERSESSION_SERVICEL, "StartTrasport message received" ); |
68 DoStartTransportL(aMessage); |
71 DoStartTransportL(aMessage); |
69 break; |
72 break; |
70 case EMTPClientStopTransport: |
73 case EMTPClientStopTransport: |
71 __FLOG(_L8("StopTransport message received")); |
74 OstTrace0( TRACE_NORMAL, DUP1_CMTPSERVERSESSION_SERVICEL, "StopTransport message received" ); |
72 DoStopTransport(aMessage); |
75 DoStopTransport(aMessage); |
73 break; |
76 break; |
74 case EMTPClientIsAvailable : |
77 case EMTPClientIsAvailable : |
75 __FLOG(_L8("IsAvailable message received")); |
78 OstTrace0( TRACE_NORMAL, DUP2_CMTPSERVERSESSION_SERVICEL, "IsAvailable message received" ); |
76 DoIsAvailableL(aMessage); |
79 DoIsAvailableL(aMessage); |
77 |
80 |
78 break; |
81 break; |
79 default: |
82 default: |
80 __FLOG(_L8("Unrecognised message received")); |
83 |
|
84 OstTrace0( TRACE_WARNING, DUP3_CMTPSERVERSESSION_SERVICEL, "Unrecognised message received" ); |
81 break; |
85 break; |
82 } |
86 } |
83 __FLOG(_L8("ServiceL - Exit")); |
87 OstTraceFunctionExit0( CMTPSERVERSESSION_SERVICEL_EXIT ); |
84 } |
88 } |
85 TBool CMTPServerSession::CheckIsAvailableL(TUid aNewUID,TUid aCurUID) |
89 TBool CMTPServerSession::CheckIsAvailableL(TUid aNewUID,TUid aCurUID) |
86 { |
90 { |
|
91 OstTraceFunctionEntry0( CMTPSERVERSESSION_CHECKISAVAILABLEL_ENTRY ); |
87 |
92 |
88 TInt SwitchEnabled; |
93 TInt SwitchEnabled; |
89 iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::ETransportSwitchEnabled, SwitchEnabled); |
94 iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::ETransportSwitchEnabled, SwitchEnabled); |
90 if(!SwitchEnabled ) |
95 if(!SwitchEnabled ) |
91 { |
96 { |
|
97 OstTraceFunctionExit0( CMTPSERVERSESSION_CHECKISAVAILABLEL_EXIT ); |
92 return EFalse; |
98 return EFalse; |
93 } |
99 } |
94 TBuf<30> value; |
100 TBuf<30> value; |
95 iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::ETransportHighPriorityUID,value); |
101 iSingletons.FrameworkConfig().GetValueL(CMTPFrameworkConfig::ETransportHighPriorityUID,value); |
96 TUint HighUID; |
102 TUint HighUID; |
97 TLex lex(value); |
103 TLex lex(value); |
98 TInt conErr = lex.Val(HighUID,EHex); |
104 TInt conErr = lex.Val(HighUID,EHex); |
99 if(aCurUID.iUid == HighUID) |
105 if(aCurUID.iUid == HighUID) |
100 { |
106 { |
|
107 OstTraceFunctionExit0( DUP1_CMTPSERVERSESSION_CHECKISAVAILABLEL_EXIT ); |
101 return EFalse; |
108 return EFalse; |
102 |
109 |
103 } |
110 } |
104 else if(aNewUID.iUid ==HighUID) |
111 else if(aNewUID.iUid ==HighUID) |
105 { |
112 { |
|
113 OstTraceFunctionExit0( DUP2_CMTPSERVERSESSION_CHECKISAVAILABLEL_EXIT ); |
106 return ETrue; |
114 return ETrue; |
107 } |
115 } |
|
116 OstTraceFunctionExit0( DUP3_CMTPSERVERSESSION_CHECKISAVAILABLEL_EXIT ); |
108 return EFalse; |
117 return EFalse; |
109 } |
118 } |
110 /** |
119 /** |
111 Starts up the specified MTP transport protocol. |
120 Starts up the specified MTP transport protocol. |
112 @param aTransport The implementation UID of the transport protocol implemetation. |
121 @param aTransport The implementation UID of the transport protocol implemetation. |
113 @leave One of the system wide error codes, if a processing error occurs. |
122 @leave One of the system wide error codes, if a processing error occurs. |
114 */ |
123 */ |
115 void CMTPServerSession::DoStartTransportL(const RMessage2& aMessage) |
124 void CMTPServerSession::DoStartTransportL(const RMessage2& aMessage) |
116 { |
125 { |
117 __FLOG(_L8("DoStartTransportL - Entry")); |
126 OstTraceFunctionEntry0( CMTPSERVERSESSION_DOSTARTTRANSPORTL_ENTRY ); |
|
127 |
118 TUid newUID = TUid::Uid(aMessage.Int0()); |
128 TUid newUID = TUid::Uid(aMessage.Int0()); |
119 TUid curUID = iSingletons.ConnectionMgr().TransportUid(); |
129 TUid curUID = iSingletons.ConnectionMgr().TransportUid(); |
120 if(curUID !=(KNullUid)) // Another Transport is already running |
130 if(curUID !=(KNullUid)) // Another Transport is already running |
121 { |
131 { |
122 if(!CheckIsAvailableL(newUID,curUID)) |
132 if(!CheckIsAvailableL(newUID,curUID)) |
123 { |
133 { |
124 aMessage.Complete(KErrServerBusy); |
134 aMessage.Complete(KErrServerBusy); |
125 iSingletons.ConnectionMgr().QueueTransportL( newUID, NULL ); |
135 iSingletons.ConnectionMgr().QueueTransportL( newUID, NULL ); |
|
136 OstTraceFunctionExit0( CMTPSERVERSESSION_DOSTARTTRANSPORTL_EXIT ); |
126 return; |
137 return; |
127 } |
138 } |
128 iSingletons.ConnectionMgr().StopTransport(curUID); |
139 iSingletons.ConnectionMgr().StopTransport(curUID); |
129 } |
140 } |
130 |
141 |
166 iSingletons.DpController().LoadDataProvidersL(); |
177 iSingletons.DpController().LoadDataProvidersL(); |
167 iSingletons.Router().ConfigureL(); |
178 iSingletons.Router().ConfigureL(); |
168 } |
179 } |
169 |
180 |
170 |
181 |
171 __FLOG(_L8("DoStartTransportL - Exit")); |
182 OstTraceFunctionExit0( DUP1_CMTPSERVERSESSION_DOSTARTTRANSPORTL_EXIT ); |
172 } |
183 } |
173 |
184 |
174 |
185 |
175 /** |
186 /** |
176 Shuts down the specified MTP transport protocol. |
187 Shuts down the specified MTP transport protocol. |
177 @param aTransport The implementation UID of the transport protocol implemetation. |
188 @param aTransport The implementation UID of the transport protocol implemetation. |
178 */ |
189 */ |
179 void CMTPServerSession::DoStopTransport(const RMessage2& aMessage) |
190 void CMTPServerSession::DoStopTransport(const RMessage2& aMessage) |
180 { |
191 { |
181 __FLOG(_L8("DoStopTransport - Entry")); |
192 OstTraceFunctionEntry0( CMTPSERVERSESSION_DOSTOPTRANSPORT_ENTRY ); |
182 iSingletons.ConnectionMgr().StopTransport( TUid::Uid( aMessage.Int0() ), ETrue ); |
193 iSingletons.ConnectionMgr().StopTransport( TUid::Uid( aMessage.Int0() ), ETrue ); |
183 aMessage.Complete(KErrNone); |
194 aMessage.Complete(KErrNone); |
184 __FLOG(_L8("DoStopTransport - Exit")); |
195 OstTraceFunctionExit0( CMTPSERVERSESSION_DOSTOPTRANSPORT_EXIT ); |
185 } |
196 } |
186 |
197 |
187 /** |
198 /** |
188 Checks whether MTP Framework shall allow the StartTransport Command for given transport. |
199 Checks whether MTP Framework shall allow the StartTransport Command for given transport. |
189 @param aTransport The implementation UID of the transport protocol implementation. |
200 @param aTransport The implementation UID of the transport protocol implementation. |
190 @leave One of the system wide error codes, if a processing error occurs. |
201 @leave One of the system wide error codes, if a processing error occurs. |
191 */ |
202 */ |
192 void CMTPServerSession::DoIsAvailableL(const RMessage2& aMessage) |
203 void CMTPServerSession::DoIsAvailableL(const RMessage2& aMessage) |
193 { |
204 { |
194 __FLOG(_L8("DoStopTransport - Entry")); |
205 OstTraceFunctionEntry0( CMTPSERVERSESSION_DOISAVAILABLEL_ENTRY ); |
195 |
206 |
196 TUid newUID = TUid::Uid(aMessage.Int0()); |
207 TUid newUID = TUid::Uid(aMessage.Int0()); |
197 TUid curUID = iSingletons.ConnectionMgr().TransportUid(); |
208 TUid curUID = iSingletons.ConnectionMgr().TransportUid(); |
198 |
209 |
199 if(curUID !=(KNullUid)) // Another Transport is already running |
210 if(curUID !=(KNullUid)) // Another Transport is already running |
200 { |
211 { |
201 if(curUID== newUID) |
212 if(curUID== newUID) |
202 { |
213 { |
203 aMessage.Complete(KErrAlreadyExists); |
214 aMessage.Complete(KErrAlreadyExists); |
|
215 OstTraceFunctionExit0( CMTPSERVERSESSION_DOISAVAILABLEL_EXIT ); |
204 return; |
216 return; |
205 } |
217 } |
206 else if(!CheckIsAvailableL(newUID,curUID)) |
218 else if(!CheckIsAvailableL(newUID,curUID)) |
207 { |
219 { |
208 aMessage.Complete(KErrServerBusy); |
220 aMessage.Complete(KErrServerBusy); |
|
221 OstTraceFunctionExit0( DUP1_CMTPSERVERSESSION_DOISAVAILABLEL_EXIT ); |
209 return; |
222 return; |
210 } |
223 } |
211 } |
224 } |
212 |
225 |
213 aMessage.Complete(KErrNone); |
226 aMessage.Complete(KErrNone); |
214 __FLOG(_L8("DoStopTransport - Exit")); |
227 |
|
228 OstTraceFunctionExit0( DUP2_CMTPSERVERSESSION_DOISAVAILABLEL_EXIT ); |
215 } |
229 } |
216 |
230 |
217 TBool CMTPServerSession::CheckIsBlueToothTransport(TUid aNewUid) |
231 TBool CMTPServerSession::CheckIsBlueToothTransport(TUid aNewUid) |
218 { |
232 { |
219 TInt32 bluetoothUid = 0x10286FCB; |
233 TInt32 bluetoothUid = 0x10286FCB; |