65 /** |
70 /** |
66 Destructor. |
71 Destructor. |
67 */ |
72 */ |
68 CMTPSession::~CMTPSession() |
73 CMTPSession::~CMTPSession() |
69 { |
74 { |
70 __FLOG(_L8("~CMTPSession - Entry")); |
75 OstTraceFunctionEntry0( CMTPSESSION_CMTPSESSION_DES_ENTRY ); |
71 iRoutingRegistrations.Close(); |
76 iRoutingRegistrations.Close(); |
72 __FLOG(_L8("~CMTPSession - Exit")); |
77 OstTraceFunctionExit0( CMTPSESSION_CMTPSESSION_DES_EXIT ); |
73 __FLOG_CLOSE; |
|
74 } |
78 } |
75 |
79 |
76 /** |
80 /** |
77 Provides the next expected TransactionID. Transaction IDs are assigned |
81 Provides the next expected TransactionID. Transaction IDs are assigned |
78 in incremental sequence by the MTP initiator in the range 0x00000001 to |
82 in incremental sequence by the MTP initiator in the range 0x00000001 to |
79 0xFFFFFFFE. |
83 0xFFFFFFFE. |
80 @return The next TransactionID expected on the session. |
84 @return The next TransactionID expected on the session. |
81 */ |
85 */ |
82 TUint32 CMTPSession::ExpectedTransactionId() const |
86 TUint32 CMTPSession::ExpectedTransactionId() const |
83 { |
87 { |
84 __FLOG(_L8("ExpectedTransactionId - Entry")); |
88 OstTraceFunctionEntry0( CMTPSESSION_EXPECTEDTRANSACTIONID_ENTRY ); |
85 __FLOG_VA((_L8("iExpectedTransactionId = 0x%08X"), iExpectedTransactionId)); |
89 OstTrace1(TRACE_NORMAL, CMTPSESSION_EXPECTEDTRANSACTIONID, |
86 __FLOG(_L8("ExpectedTransactionId - Exit")); |
90 "iExpectedTransactionId = 0x%08X", iExpectedTransactionId); |
|
91 OstTraceFunctionExit0( CMTPSESSION_EXPECTEDTRANSACTIONID_EXIT ); |
87 return iExpectedTransactionId; |
92 return iExpectedTransactionId; |
88 } |
93 } |
89 |
94 |
90 /** |
95 /** |
91 Increments the next expected TransactionID to the next value in the sequence. |
96 Increments the next expected TransactionID to the next value in the sequence. |
92 TransactionIDs are assigned by the MTP initiator starting from 0x00000001. |
97 TransactionIDs are assigned by the MTP initiator starting from 0x00000001. |
93 When the TransactionID increments to 0xFFFFFFFF it wraps back to 0x00000001. |
98 When the TransactionID increments to 0xFFFFFFFF it wraps back to 0x00000001. |
94 */ |
99 */ |
95 void CMTPSession::IncrementExpectedTransactionId() |
100 void CMTPSession::IncrementExpectedTransactionId() |
96 { |
101 { |
97 __FLOG(_L8("IncrementExpectedTransactionId - Entry")); |
102 OstTraceFunctionEntry0( CMTPSESSION_INCREMENTEXPECTEDTRANSACTIONID_ENTRY ); |
98 if (++iExpectedTransactionId == KMTPTransactionIdLast) |
103 if (++iExpectedTransactionId == KMTPTransactionIdLast) |
99 { |
104 { |
100 iExpectedTransactionId = KMTPTransactionIdFirst; |
105 iExpectedTransactionId = KMTPTransactionIdFirst; |
101 } |
106 } |
102 __FLOG_VA((_L8("iExpectedTransactionId = 0x%08X"), iExpectedTransactionId)); |
107 OstTrace1(TRACE_NORMAL, CMTPSESSION_INCREMENTEXPECTEDTRANSACTIONID, |
103 __FLOG(_L8("IncrementExpectedTransactionId - Exit")); |
108 "iExpectedTransactionId = 0x%08X", iExpectedTransactionId); |
|
109 OstTraceFunctionExit0( CMTPSESSION_INCREMENTEXPECTEDTRANSACTIONID_EXIT ); |
104 } |
110 } |
105 |
111 |
106 /** |
112 /** |
107 Sets or resets the session's active transaction request dataset. The active |
113 Sets or resets the session's active transaction request dataset. The active |
108 transaction request dataset should only be set at the start of the transaction |
114 transaction request dataset should only be set at the start of the transaction |
109 (ERequestPhase), and reset and the end of the transaction (ECompletingPhase). |
115 (ERequestPhase), and reset and the end of the transaction (ECompletingPhase). |
110 @param aRequest The active transaction request dataset. |
116 @param aRequest The active transaction request dataset. |
111 */ |
117 */ |
112 void CMTPSession::SetActiveRequestL(const TMTPTypeRequest& aRequest) |
118 void CMTPSession::SetActiveRequestL(const TMTPTypeRequest& aRequest) |
113 { |
119 { |
114 __FLOG(_L8("SetActiveRequestL - Entry")); |
120 OstTraceFunctionEntry0( CMTPSESSION_SETACTIVEREQUESTL_ENTRY ); |
115 MMTPType::CopyL(aRequest, iActiveRequest); |
121 MMTPType::CopyL(aRequest, iActiveRequest); |
116 __FLOG(_L8("SetActiveRequestL - Exit")); |
122 OstTraceFunctionExit0( CMTPSESSION_SETACTIVEREQUESTL_EXIT ); |
117 } |
123 } |
118 |
124 |
119 /** |
125 /** |
120 Sets the session's transaction phase state variable. |
126 Sets the session's transaction phase state variable. |
121 @param aPhase The new transaction phase state value. |
127 @param aPhase The new transaction phase state value. |
122 */ |
128 */ |
123 void CMTPSession::SetTransactionPhase(TMTPTransactionPhase aPhase) |
129 void CMTPSession::SetTransactionPhase(TMTPTransactionPhase aPhase) |
124 { |
130 { |
125 __FLOG(_L8("SetTransactionPhase - Entry")); |
131 OstTraceFunctionEntry0( CMTPSESSION_SETTRANSACTIONPHASE_ENTRY ); |
126 iTransactionPhase = aPhase; |
132 iTransactionPhase = aPhase; |
127 __FLOG_VA((_L8("iTransactionPhase = 0x%08X"), iTransactionPhase)); |
133 OstTrace1(TRACE_NORMAL, CMTPSESSION_SETTRANSACTIONPHASE, |
128 __FLOG(_L8("SetTransactionPhase - Exit")); |
134 "iTransactionPhase = 0x%08X", iTransactionPhase); |
|
135 OstTraceFunctionExit0( CMTPSESSION_SETTRANSACTIONPHASE_EXIT ); |
129 } |
136 } |
130 |
137 |
131 |
138 |
132 /** |
139 /** |
133 Provides the current MTP transaction state for the session. |
140 Provides the current MTP transaction state for the session. |
134 @return The MTP transaction state for the session. |
141 @return The MTP transaction state for the session. |
135 */ |
142 */ |
136 TMTPTransactionPhase CMTPSession::TransactionPhase() const |
143 TMTPTransactionPhase CMTPSession::TransactionPhase() const |
137 { |
144 { |
138 __FLOG(_L8("TransactionPhase - Entry")); |
145 OstTraceFunctionEntry0( CMTPSESSION_TRANSACTIONPHASE_ENTRY ); |
139 __FLOG_VA((_L8("iTransactionPhase = 0x%08X"), iTransactionPhase)); |
146 OstTrace1(TRACE_NORMAL, CMTPSESSION_TRANSACTIONPHASE, |
140 __FLOG(_L8("TransactionPhase - Exit")); |
147 "iTransactionPhase = 0x%08X", iTransactionPhase); |
|
148 OstTraceFunctionExit0( CMTPSESSION_TRANSACTIONPHASE_EXIT ); |
141 return iTransactionPhase; |
149 return iTransactionPhase; |
142 } |
150 } |
143 |
151 |
144 TInt CMTPSession::RouteRequest(const TMTPTypeRequest& aRequest) |
152 TInt CMTPSession::RouteRequest(const TMTPTypeRequest& aRequest) |
145 { |
153 { |
146 __FLOG(_L8("RouteRequest - Entry")); |
154 OstTraceFunctionEntry0( CMTPSESSION_ROUTEREQUEST_ENTRY ); |
147 TInt ret(KErrNotFound); |
155 TInt ret(KErrNotFound); |
148 |
156 |
149 // Attempt to match the request to existing registrations. |
157 // Attempt to match the request to existing registrations. |
150 TInt idx(iRoutingRegistrations.FindInOrder(aRequest, CMTPSession::RouteRequestOrder)); |
158 TInt idx(iRoutingRegistrations.FindInOrder(aRequest, CMTPSession::RouteRequestOrder)); |
151 if (idx != KErrNotFound) |
159 if (idx != KErrNotFound) |
166 */ |
174 */ |
167 TUint16 op(aRequest.Uint16(TMTPTypeRequest::ERequestOperationCode)); |
175 TUint16 op(aRequest.Uint16(TMTPTypeRequest::ERequestOperationCode)); |
168 if ((op == EMTPOpCodeSendObject) || |
176 if ((op == EMTPOpCodeSendObject) || |
169 (op == EMTPOpCodeTerminateOpenCapture)) |
177 (op == EMTPOpCodeTerminateOpenCapture)) |
170 { |
178 { |
171 __FLOG_VA((_L8("Unregistering follow-on request 0x%08X"), op)); |
179 OstTrace1(TRACE_NORMAL, CMTPSESSION_ROUTEREQUEST, |
|
180 "Unregistering follow-on request 0x%08X", op); |
172 iRoutingRegistrations.Remove(idx); |
181 iRoutingRegistrations.Remove(idx); |
173 } |
182 } |
174 } |
183 } |
175 |
184 |
176 __FLOG_VA((_L8("DP ID = %d"), ret)); |
185 OstTrace1(TRACE_NORMAL, DUP1_CMTPSESSION_ROUTEREQUEST, |
177 __FLOG(_L8("RouteRequest - Exit")); |
186 "DP ID = %d", ret); |
|
187 OstTraceFunctionExit0( CMTPSESSION_ROUTEREQUEST_EXIT ); |
178 return ret; |
188 return ret; |
179 } |
189 } |
180 |
190 |
181 void CMTPSession::RouteRequestRegisterL(const TMTPTypeRequest& aRequest, TInt aDpId) |
191 void CMTPSession::RouteRequestRegisterL(const TMTPTypeRequest& aRequest, TInt aDpId) |
182 { |
192 { |
183 __FLOG(_L8("RouteRequestRegisterL - Entry")); |
193 OstTraceFunctionEntry0( CMTPSESSION_ROUTEREQUESTREGISTERL_ENTRY ); |
184 // Locate any pre-existing registration (which if found, will be overwritten). |
194 // Locate any pre-existing registration (which if found, will be overwritten). |
185 TInt idx(iRoutingRegistrations.FindInOrder(aRequest, CMTPSession::RouteRequestOrder)); |
195 TInt idx(iRoutingRegistrations.FindInOrder(aRequest, CMTPSession::RouteRequestOrder)); |
186 if (idx == KErrNotFound) |
196 if (idx == KErrNotFound) |
187 { |
197 { |
188 iRoutingRegistrations.InsertInOrderL(aRequest, CMTPSession::RouteRequestOrder); |
198 iRoutingRegistrations.InsertInOrderL(aRequest, CMTPSession::RouteRequestOrder); |
189 User::LeaveIfError(idx = iRoutingRegistrations.FindInOrder(aRequest, CMTPSession::RouteRequestOrder)); |
199 LEAVEIFERROR(idx = iRoutingRegistrations.FindInOrder(aRequest, CMTPSession::RouteRequestOrder), |
|
200 OstTrace1( TRACE_ERROR, CMTPSESSION_ROUTEREQUESTREGISTERL, "can't find in routing registrations for request, dpId %d", aDpId)); |
190 } |
201 } |
191 |
202 |
192 /* |
203 /* |
193 For convenience the DP ID is saved in the registered request, in the |
204 For convenience the DP ID is saved in the registered request, in the |
194 TransactionID element (which is unused for routing). |
205 TransactionID element (which is unused for routing). |
195 */ |
206 */ |
196 iRoutingRegistrations[idx].SetUint32(TMTPTypeRequest::ERequestTransactionID, aDpId); |
207 iRoutingRegistrations[idx].SetUint32(TMTPTypeRequest::ERequestTransactionID, aDpId); |
197 __FLOG(_L8("RouteRequestRegisterL - Exit")); |
208 OstTraceFunctionExit0( CMTPSESSION_ROUTEREQUESTREGISTERL_EXIT ); |
198 } |
209 } |
199 |
210 |
200 /** |
211 /** |
201 Indicates if a routing request is registered on the session with the |
212 Indicates if a routing request is registered on the session with the |
202 specified MTP operation code. |
213 specified MTP operation code. |
204 @return ETrue if a routing request with the specified MTP operation code is |
215 @return ETrue if a routing request with the specified MTP operation code is |
205 registered on the session, otherwise EFalse. |
216 registered on the session, otherwise EFalse. |
206 */ |
217 */ |
207 TBool CMTPSession::RouteRequestRegistered(TUint16 aOpCode) const |
218 TBool CMTPSession::RouteRequestRegistered(TUint16 aOpCode) const |
208 { |
219 { |
209 __FLOG(_L8("RouteRequestPending - Entry")); |
220 OstTraceFunctionEntry0( CMTPSESSION_ROUTEREQUESTREGISTERED_ENTRY ); |
210 __FLOG(_L8("RouteRequestPending - Entry")); |
221 OstTraceFunctionExit0( CMTPSESSION_ROUTEREQUESTREGISTERED_EXIT ); |
211 return (iRoutingRegistrations.Find(aOpCode, CMTPSession::RouteRequestMatchOpCode) != KErrNotFound); |
222 return (iRoutingRegistrations.Find(aOpCode, CMTPSession::RouteRequestMatchOpCode) != KErrNotFound); |
212 } |
223 } |
213 |
224 |
214 void CMTPSession::RouteRequestUnregister(const TMTPTypeRequest& aRequest) |
225 void CMTPSession::RouteRequestUnregister(const TMTPTypeRequest& aRequest) |
215 { |
226 { |
216 __FLOG(_L8("RouteRequestUnregister - Entry")); |
227 OstTraceFunctionEntry0( CMTPSESSION_ROUTEREQUESTUNREGISTER_ENTRY ); |
217 TInt idx(iRoutingRegistrations.FindInOrder(aRequest, CMTPSession::RouteRequestOrder)); |
228 TInt idx(iRoutingRegistrations.FindInOrder(aRequest, CMTPSession::RouteRequestOrder)); |
218 if (idx != KErrNotFound) |
229 if (idx != KErrNotFound) |
219 { |
230 { |
220 iRoutingRegistrations.Remove(idx); |
231 iRoutingRegistrations.Remove(idx); |
221 } |
232 } |
222 __FLOG(_L8("RouteRequestUnregister - Exit")); |
233 OstTraceFunctionExit0( CMTPSESSION_ROUTEREQUESTUNREGISTER_EXIT ); |
223 } |
234 } |
224 |
235 |
225 void CMTPSession::StorePendingEventL(const TMTPTypeEvent& aEvent) |
236 void CMTPSession::StorePendingEventL(const TMTPTypeEvent& aEvent) |
226 { |
237 { |
227 MMTPType::CopyL(aEvent, iPendingEvent); |
238 MMTPType::CopyL(aEvent, iPendingEvent); |
279 Set the status to complete for the currently pending asynchronous request. |
290 Set the status to complete for the currently pending asynchronous request. |
280 @param aStatus The asynchronous request status to complete. |
291 @param aStatus The asynchronous request status to complete. |
281 */ |
292 */ |
282 void CMTPSession::SetRequestPending(TRequestStatus& aStatus) |
293 void CMTPSession::SetRequestPending(TRequestStatus& aStatus) |
283 { |
294 { |
284 __FLOG(_L8("SetRequestPending - Entry")); |
295 OstTraceFunctionEntry0( CMTPSESSION_SETREQUESTPENDING_ENTRY ); |
285 __ASSERT_DEBUG(!iRequestStatus, Panic(EMTPPanicBusy)); |
296 __ASSERT_DEBUG(!iRequestStatus, Panic(EMTPPanicBusy)); |
286 iRequestStatus = &aStatus; |
297 iRequestStatus = &aStatus; |
287 *iRequestStatus = KRequestPending; |
298 *iRequestStatus = KRequestPending; |
288 __FLOG(_L8("SetRequestPending - Exit")); |
299 OstTraceFunctionExit0( CMTPSESSION_SETREQUESTPENDING_EXIT ); |
289 } |
300 } |
290 |
301 |
291 const TMTPTypeRequest& CMTPSession::ActiveRequestL() const |
302 const TMTPTypeRequest& CMTPSession::ActiveRequestL() const |
292 { |
303 { |
293 __FLOG(_L8("ActiveRequestL - Entry")); |
304 OstTraceFunctionEntry0( CMTPSESSION_ACTIVEREQUESTL_ENTRY ); |
294 |
305 |
295 if (iTransactionPhase == EIdlePhase) |
306 if (iTransactionPhase == EIdlePhase) |
296 { |
307 { |
|
308 OstTrace0( TRACE_ERROR, CMTPSESSION_ACTIVEREQUESTL, "transaction in EIdlePhase!" ); |
297 User::Leave(KErrNotFound); |
309 User::Leave(KErrNotFound); |
298 } |
310 } |
299 |
311 |
300 __FLOG(_L8("ActiveRequestL - Exit")); |
312 OstTraceFunctionExit0( CMTPSESSION_ACTIVEREQUESTL_EXIT ); |
301 return iActiveRequest; |
313 return iActiveRequest; |
302 } |
314 } |
303 |
315 |
304 TUint32 CMTPSession::SessionMTPId() const |
316 TUint32 CMTPSession::SessionMTPId() const |
305 { |
317 { |
306 __FLOG(_L8("SessionMTPId - Entry")); |
318 OstTraceFunctionEntry0( CMTPSESSION_SESSIONMTPID_ENTRY ); |
307 __FLOG_VA( (_L8("Session MTP ID = %d"), iIdMTP) ); |
319 OstTrace1(TRACE_NORMAL, CMTPSESSION_SESSIONMTPID, "Session MTP ID = %d", iIdMTP); |
308 __FLOG(_L8("SessionMTPId - Exit")); |
320 OstTraceFunctionExit0( CMTPSESSION_SESSIONMTPID_EXIT ); |
309 return iIdMTP; |
321 return iIdMTP; |
310 } |
322 } |
311 |
323 |
312 TUint CMTPSession::SessionUniqueId() const |
324 TUint CMTPSession::SessionUniqueId() const |
313 { |
325 { |
314 __FLOG(_L8("SessionUniqueId - Entry")); |
326 OstTraceFunctionEntry0( CMTPSESSION_SESSIONUNIQUEID_ENTRY ); |
315 __FLOG(_L8("SessionUniqueId - Exit")); |
327 OstTraceFunctionExit0( CMTPSESSION_SESSIONUNIQUEID_EXIT ); |
316 return iIdUnique; |
328 return iIdUnique; |
317 } |
329 } |
318 |
330 |
319 TAny* CMTPSession::GetExtendedInterface(TUid /*aInterfaceUid*/) |
331 TAny* CMTPSession::GetExtendedInterface(TUid /*aInterfaceUid*/) |
320 { |
332 { |
321 __FLOG(_L8("GetExtendedInterface - Entry")); |
333 OstTraceFunctionEntry0( CMTPSESSION_GETEXTENDEDINTERFACE_ENTRY ); |
322 __FLOG(_L8("GetExtendedInterface - Exit")); |
334 OstTraceFunctionExit0( CMTPSESSION_GETEXTENDEDINTERFACE_EXIT ); |
323 return NULL; |
335 return NULL; |
324 } |
336 } |
325 |
337 |
326 /** |
338 /** |
327 Constructor. |
339 Constructor. |