1 mmfipc.inl |
1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // include\mmf\common\mmfipc.inl |
|
15 // |
|
16 // |
|
17 |
|
18 #ifdef __MMF_USE_IPC_V2__ |
|
19 |
|
20 // |
|
21 // CMmfIpcSession |
|
22 // |
|
23 |
|
24 inline void CMmfIpcSession::CreateL(const CMmfIpcServer& /*aServer*/) |
|
25 { |
|
26 // default does nothing |
|
27 } |
|
28 |
|
29 inline void CMmfIpcSession::CreateL() |
|
30 { |
|
31 const CMmfIpcServer* server = static_cast<const CMmfIpcServer*>(Server()); |
|
32 CreateL(*server); // simulate CSession::CreateL() call |
|
33 } |
|
34 |
|
35 // |
|
36 // CMmfIcpServer |
|
37 // |
|
38 |
|
39 inline CMmfIpcServer::CMmfIpcServer(TInt aPriority,TServerType aType): |
|
40 CServer2(aPriority,aType) |
|
41 { |
|
42 } |
|
43 |
|
44 inline CSession2* CMmfIpcServer::NewSessionL(const TVersion& aVersion, const RMessage2& /*aMessage*/) const |
|
45 { |
|
46 return NewSessionL(aVersion); |
|
47 } |
|
48 |
|
49 #endif //__MMF_USE_IPC_V2__ |
|
50 |
|
51 // |
|
52 // RMmfSessionBase |
|
53 // |
|
54 |
|
55 inline TInt RMmfSessionBase::SendReceive(TInt aFunction) const |
|
56 { |
|
57 return RSessionBase::SendReceive(aFunction); |
|
58 } |
|
59 |
|
60 inline void RMmfSessionBase::SendReceive(TInt aFunction, TRequestStatus& aStatus) const |
|
61 { |
|
62 RSessionBase::SendReceive(aFunction,aStatus); |
|
63 } |
|
64 |
|
65 // Integer Send calls |
|
66 |
|
67 inline TInt RMmfSessionBase::SendReceive(TInt aFunction, TInt aParam0) const |
|
68 { |
|
69 #ifdef __MMF_USE_IPC_V2__ |
|
70 return RSessionBase::SendReceive(aFunction, TIpcArgs(aParam0)); |
|
71 #else |
|
72 TInt p[KMaxMessageArguments]; |
|
73 p[0] = aParam0; |
|
74 p[1] = 0; |
|
75 p[2] = 0; |
|
76 p[3] = 0; |
|
77 return RSessionBase::SendReceive(aFunction, p); |
|
78 #endif //__MMF_USE_IPC_V2__ |
|
79 } |
|
80 |
|
81 inline TInt RMmfSessionBase::SendReceive(TInt aFunction, TInt aParam0, TInt aParam1) const |
|
82 { |
|
83 #ifdef __MMF_USE_IPC_V2__ |
|
84 return RSessionBase::SendReceive(aFunction, TIpcArgs(aParam0,aParam1)); |
|
85 #else |
|
86 TInt p[KMaxMessageArguments]; |
|
87 p[0] = aParam0; |
|
88 p[1] = aParam1; |
|
89 p[2] = 0; |
|
90 p[3] = 0; |
|
91 return RSessionBase::SendReceive(aFunction, p); |
|
92 #endif //__MMF_USE_IPC_V2__ |
|
93 } |
|
94 |
|
95 inline void RMmfSessionBase::SendReceive(TInt aFunction, TInt aParam0, TRequestStatus& aStatus) const |
|
96 { |
|
97 #ifdef __MMF_USE_IPC_V2__ |
|
98 RSessionBase::SendReceive(aFunction, TIpcArgs(aParam0), aStatus); |
|
99 #else |
|
100 TInt p[KMaxMessageArguments]; |
|
101 p[0] = aParam0; |
|
102 p[1] = 0; |
|
103 p[2] = 0; |
|
104 p[3] = 0; |
|
105 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
106 #endif //__MMF_USE_IPC_V2__ |
|
107 } |
|
108 |
|
109 inline void RMmfSessionBase::SendReceive(TInt aFunction, TInt aParam0, TInt aParam1, TRequestStatus& aStatus) const |
|
110 { |
|
111 #ifdef __MMF_USE_IPC_V2__ |
|
112 RSessionBase::SendReceive(aFunction, TIpcArgs(aParam0,aParam1), aStatus); |
|
113 #else |
|
114 TInt p[KMaxMessageArguments]; |
|
115 p[0] = aParam0; |
|
116 p[1] = aParam1; |
|
117 p[2] = 0; |
|
118 p[3] = 0; |
|
119 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
120 #endif //__MMF_USE_IPC_V2__ |
|
121 } |
|
122 |
|
123 // Descriptor Send calls.... |
|
124 |
|
125 inline TInt RMmfSessionBase::SendReceive(TInt aFunction, const TDesC8& aParam0) const |
|
126 { |
|
127 #ifdef __MMF_USE_IPC_V2__ |
|
128 return RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0)); |
|
129 #else |
|
130 TAny* p[KMaxMessageArguments]; |
|
131 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
132 p[1] = NULL; |
|
133 p[2] = NULL; |
|
134 p[3] = NULL; |
|
135 return RSessionBase::SendReceive(aFunction, p); |
|
136 #endif //__MMF_USE_IPC_V2__ |
|
137 } |
|
138 |
|
139 inline TInt RMmfSessionBase::SendReceive(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1) const |
|
140 { |
|
141 #ifdef __MMF_USE_IPC_V2__ |
|
142 return RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1)); |
|
143 #else |
|
144 TAny* p[KMaxMessageArguments]; |
|
145 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
146 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
147 p[2] = NULL; |
|
148 p[3] = NULL; |
|
149 return RSessionBase::SendReceive(aFunction, p); |
|
150 #endif //__MMF_USE_IPC_V2__ |
|
151 } |
|
152 |
|
153 inline TInt RMmfSessionBase::SendReceive(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1, const TDesC8& aParam2) const |
|
154 { |
|
155 #ifdef __MMF_USE_IPC_V2__ |
|
156 return RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1,&aParam2)); |
|
157 #else |
|
158 TAny* p[KMaxMessageArguments]; |
|
159 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
160 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
161 p[2] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam2)); |
|
162 p[3] = NULL; |
|
163 return RSessionBase::SendReceive(aFunction, p); |
|
164 #endif //__MMF_USE_IPC_V2__ |
|
165 } |
|
166 |
|
167 inline void RMmfSessionBase::SendReceive(TInt aFunction, const TDesC8& aParam0, TRequestStatus& aStatus) const |
|
168 { |
|
169 #ifdef __MMF_USE_IPC_V2__ |
|
170 RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0), aStatus); |
|
171 #else |
|
172 TAny* p[KMaxMessageArguments]; |
|
173 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
174 p[1] = NULL; |
|
175 p[2] = NULL; |
|
176 p[3] = NULL; |
|
177 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
178 #endif //__MMF_USE_IPC_V2__ |
|
179 } |
|
180 |
|
181 inline void RMmfSessionBase::SendReceive(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1, TRequestStatus& aStatus) const |
|
182 { |
|
183 #ifdef __MMF_USE_IPC_V2__ |
|
184 RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1), aStatus); |
|
185 #else |
|
186 TAny* p[KMaxMessageArguments]; |
|
187 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
188 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
189 p[2] = NULL; |
|
190 p[3] = NULL; |
|
191 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
192 #endif //__MMF_USE_IPC_V2__ |
|
193 } |
|
194 |
|
195 inline void RMmfSessionBase::SendReceive(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1, const TDesC8& aParam2, TRequestStatus& aStatus) const |
|
196 { |
|
197 #ifdef __MMF_USE_IPC_V2__ |
|
198 RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1,&aParam2), aStatus); |
|
199 #else |
|
200 TAny* p[KMaxMessageArguments]; |
|
201 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
202 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
203 p[2] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam2)); |
|
204 p[3] = NULL; |
|
205 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
206 #endif //__MMF_USE_IPC_V2__ |
|
207 } |
|
208 |
|
209 // Descriptor Send&Result calls |
|
210 |
|
211 inline TInt RMmfSessionBase::SendReceiveResult(TInt aFunction, TDes8& aResult) const |
|
212 { |
|
213 #ifdef __MMF_USE_IPC_V2__ |
|
214 return RSessionBase::SendReceive(aFunction, TIpcArgs(&aResult)); |
|
215 #else |
|
216 TAny* p[KMaxMessageArguments]; |
|
217 p[0] = static_cast<TAny*>(&aResult); |
|
218 p[1] = NULL; |
|
219 p[2] = NULL; |
|
220 p[3] = NULL; |
|
221 return RSessionBase::SendReceive(aFunction, p); |
|
222 #endif //__MMF_USE_IPC_V2__ |
|
223 } |
|
224 |
|
225 inline TInt RMmfSessionBase::SendReceiveResult(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1, TDes8& aResult) const |
|
226 { |
|
227 #ifdef __MMF_USE_IPC_V2__ |
|
228 return RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1,&aResult)); |
|
229 #else |
|
230 TAny* p[KMaxMessageArguments]; |
|
231 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
232 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
233 p[2] = static_cast<TAny*>(&aResult); |
|
234 p[3] = NULL; |
|
235 return RSessionBase::SendReceive(aFunction, p); |
|
236 #endif //__MMF_USE_IPC_V2__ |
|
237 } |
|
238 |
|
239 inline TInt RMmfSessionBase::SendReceiveResult(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1, const TDesC8& aParam2, TDes8& aResult) const |
|
240 { |
|
241 #ifdef __MMF_USE_IPC_V2__ |
|
242 return RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1,&aParam2,&aResult)); |
|
243 #else |
|
244 TAny* p[KMaxMessageArguments]; |
|
245 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
246 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
247 p[2] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam2)); |
|
248 p[3] = static_cast<TAny*>(&aResult); |
|
249 return RSessionBase::SendReceive(aFunction, p); |
|
250 #endif //__MMF_USE_IPC_V2__ |
|
251 } |
|
252 |
|
253 inline void RMmfSessionBase::SendReceiveResult(TInt aFunction, TDes8& aResult, TRequestStatus& aStatus) const |
|
254 { |
|
255 #ifdef __MMF_USE_IPC_V2__ |
|
256 RSessionBase::SendReceive(aFunction, TIpcArgs(&aResult), aStatus); |
|
257 #else |
|
258 TAny* p[KMaxMessageArguments]; |
|
259 p[0] = static_cast<TAny*>(&aResult); |
|
260 p[1] = NULL; |
|
261 p[2] = NULL; |
|
262 p[3] = NULL; |
|
263 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
264 #endif //__MMF_USE_IPC_V2__ |
|
265 } |
|
266 |
|
267 inline void RMmfSessionBase::SendReceiveResult(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1, TDes8& aResult, TRequestStatus& aStatus) const |
|
268 { |
|
269 #ifdef __MMF_USE_IPC_V2__ |
|
270 RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1,&aResult), aStatus); |
|
271 #else |
|
272 TAny* p[KMaxMessageArguments]; |
|
273 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
274 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
275 p[2] = static_cast<TAny*>(&aResult); |
|
276 p[3] = NULL; |
|
277 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
278 #endif //__MMF_USE_IPC_V2__ |
|
279 } |
|
280 |
|
281 inline void RMmfSessionBase::SendReceiveResult(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1, const TDesC8& aParam2, TDes8& aResult, TRequestStatus& aStatus) const |
|
282 { |
|
283 #ifdef __MMF_USE_IPC_V2__ |
|
284 RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1,&aParam2,&aResult), aStatus); |
|
285 #else |
|
286 TAny* p[KMaxMessageArguments]; |
|
287 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
288 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
289 p[2] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam2)); |
|
290 p[3] = static_cast<TAny*>(&aResult); |
|
291 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
292 #endif //__MMF_USE_IPC_V2__ |
|
293 } |
|
294 |
|
295 // |
|
296 // MmfMessageUtil |
|
297 // |
|
298 |
|
299 inline void MmfMessageUtil::ReadL(const RMmfIpcMessage& aMessage, TInt aParam, TDes8& aResult) |
|
300 { |
|
301 #ifdef __MMF_USE_IPC_V2__ |
|
302 User::LeaveIfError(aMessage.Read(aParam, aResult)); |
|
303 #else |
|
304 // expect aParam to be a literal - so this code should optimise out |
|
305 if (aParam==0) |
|
306 aMessage.ReadL(aMessage.Ptr0(), aResult); |
|
307 else if (aParam==1) |
|
308 aMessage.ReadL(aMessage.Ptr1(), aResult); |
|
309 else if (aParam==2) |
|
310 aMessage.ReadL(aMessage.Ptr2(), aResult); |
|
311 else if (aParam==3) |
|
312 aMessage.ReadL(aMessage.Ptr3(), aResult); |
|
313 else |
|
314 User::Leave(KErrArgument); |
|
315 #endif //__MMF_USE_IPC_V2__ |
|
316 } |
|
317 |
|
318 inline void MmfMessageUtil::WriteL(const RMmfIpcMessage& aMessage, TInt aParam, const TDesC8& aValue) |
|
319 { |
|
320 #ifdef __MMF_USE_IPC_V2__ |
|
321 User::LeaveIfError(aMessage.Write(aParam, aValue)); |
|
322 #else |
|
323 // expect aParam to be a literal - so this code should optimise out |
|
324 if (aParam==0) |
|
325 aMessage.WriteL(aMessage.Ptr0(), aValue); |
|
326 else if (aParam==1) |
|
327 aMessage.WriteL(aMessage.Ptr1(), aValue); |
|
328 else if (aParam==2) |
|
329 aMessage.WriteL(aMessage.Ptr2(), aValue); |
|
330 else if (aParam==3) |
|
331 aMessage.WriteL(aMessage.Ptr3(), aValue); |
|
332 else |
|
333 User::Leave(KErrArgument); |
|
334 #endif //__MMF_USE_IPC_V2__ |
|
335 } |
|
336 |
|
337 inline TInt MmfMessageUtil::Read(const RMmfIpcMessage& aMessage, TInt aParam, TDes8& aResult) |
|
338 { |
|
339 #ifdef __MMF_USE_IPC_V2__ |
|
340 return aMessage.Read(aParam, aResult); |
|
341 #else |
|
342 TRAPD(error, ReadL(aMessage, aParam, aResult)); |
|
343 return error; |
|
344 #endif //__MMF_USE_IPC_V2__ |
|
345 } |
|
346 |
|
347 inline TInt MmfMessageUtil::Write(const RMmfIpcMessage& aMessage, TInt aParam, const TDesC8& aValue) |
|
348 { |
|
349 #ifdef __MMF_USE_IPC_V2__ |
|
350 return aMessage.Write(aParam, aValue); |
|
351 #else |
|
352 TRAPD(error, WriteL(aMessage, aParam, aValue)); |
|
353 return error; |
|
354 #endif //__MMF_USE_IPC_V2__ |
|
355 } |
|
356 |
|
357 //TDesC versions |
|
358 |
|
359 inline void RMmfSessionBase::SendReceive(TInt aFunction, const TDesC& aParam0, TRequestStatus& aStatus) const |
|
360 { |
|
361 #ifdef __MMF_USE_IPC_V2__ |
|
362 RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0), aStatus); |
|
363 #else |
|
364 TAny* p[KMaxMessageArguments]; |
|
365 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
366 p[1] = NULL; |
|
367 p[2] = NULL; |
|
368 p[3] = NULL; |
|
369 RSessionBase::SendReceive(aFunction, p, aStatus); |
|
370 #endif //__MMF_USE_IPC_V2__ |
|
371 } |
|
372 |
|
373 inline TInt RMmfSessionBase::SendReceive(TInt aFunction, const TDesC& aParam0) const |
|
374 { |
|
375 #ifdef __MMF_USE_IPC_V2__ |
|
376 return RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0)); |
|
377 #else |
|
378 TAny* p[KMaxMessageArguments]; |
|
379 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
380 p[1] = NULL; |
|
381 p[2] = NULL; |
|
382 p[3] = NULL; |
|
383 return RSessionBase::SendReceive(aFunction, p); |
|
384 #endif //__MMF_USE_IPC_V2__ |
|
385 } |
|
386 |
|
387 inline TInt RMmfSessionBase::SendReceiveResult(TInt aFunction, const TDesC8& aParam0, const TDesC8& aParam1, TDes& aResult) const |
|
388 { |
|
389 #ifdef __MMF_USE_IPC_V2__ |
|
390 return RSessionBase::SendReceive(aFunction, TIpcArgs(&aParam0,&aParam1,&aResult)); |
|
391 #else |
|
392 TAny* p[KMaxMessageArguments]; |
|
393 p[0] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam0)); |
|
394 p[1] = static_cast<TAny*>(const_cast<TDesC8*>(&aParam1)); |
|
395 p[2] = static_cast<TAny*>(&aResult); |
|
396 p[3] = NULL; |
|
397 return RSessionBase::SendReceive(aFunction, p); |
|
398 #endif //__MMF_USE_IPC_V2__ |
|
399 } |
|
400 |
|
401 // assuming IPC_V2 |
|
402 inline TInt RMmfSessionBase::SendReceive(TInt aFunction, TInt aParam0, const TDesC8& aParam1, const TDesC8& aParam2) const |
|
403 { |
|
404 return RSessionBase::SendReceive(aFunction, TIpcArgs(aParam0, &aParam1, &aParam2)); |
|
405 } |
|
406 |
|
407 inline TInt RMmfSessionBase::SendReceiveResult(TInt aFunction, TInt aParam0, const TDesC8& aParam1, const TDesC8& aParam2, TDes8& aResult) const |
|
408 { |
|
409 return RSessionBase::SendReceive(aFunction, TIpcArgs(aParam0, &aParam1, &aParam2, &aResult)); |
|
410 } |
|
411 |
|
412 inline void RMmfSessionBase::SendReceive(TInt aFunction, TInt aParam0, const TDesC8& aParam1, const TDesC8& aParam2, TRequestStatus& aStatus) const |
|
413 { |
|
414 return RSessionBase::SendReceive(aFunction, TIpcArgs(aParam0, &aParam1, &aParam2), aStatus); |
|
415 } |
|
416 |
|
417 inline void RMmfSessionBase::SendReceiveResult(TInt aFunction, TInt aParam0, const TDesC8& aParam1, const TDesC8& aParam2, TDes8& aResult, TRequestStatus& aStatus) const |
|
418 { |
|
419 return RSessionBase::SendReceive(aFunction, TIpcArgs(aParam0, &aParam1, &aParam2, &aResult), aStatus); |
|
420 } |