|
1 /* |
|
2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Used to emulate accessory connections in emulator. |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 // INCLUDE FILES |
|
20 #include <AccConGenericID.h> |
|
21 #include <AccPolProprietaryNameValuePairs.h> |
|
22 #include "siftrace.h" |
|
23 #include "ASYStubObserver.h" |
|
24 #include "AccMonitorCapMapper.h" |
|
25 |
|
26 // ---------------------------------------------------------------------------------- |
|
27 // CASYStubService::CASYStubService() |
|
28 // ---------------------------------------------------------------------------------- |
|
29 CASYStubService::CASYStubService() |
|
30 { |
|
31 } |
|
32 |
|
33 // ---------------------------------------------------------------------------------- |
|
34 // CASYStubService::ConstructL() |
|
35 // ---------------------------------------------------------------------------------- |
|
36 void CASYStubService::ConstructL() |
|
37 { |
|
38 |
|
39 TInt err(KErrNone); |
|
40 |
|
41 err = iAccessoryServer.Connect(); |
|
42 if ( err != KErrNone ) |
|
43 { |
|
44 COMPONENT_TRACE( _L("ASYSTUB - CASYStubService::ConstructL() - failed to connect AccServer") ); |
|
45 User::Leave( err ); |
|
46 } |
|
47 err = iAccessoryControl.CreateSubSession( iAccessoryServer ); |
|
48 if ( err != KErrNone ) |
|
49 { |
|
50 COMPONENT_TRACE( _L("ASYSTUB - CASYStubService::ConstructL() - failed to connect RAccessoryControl") ); |
|
51 User::Leave( err ); |
|
52 } |
|
53 |
|
54 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYParameterResolver::ConstructL() - return" ) ) ); |
|
55 } |
|
56 // |
|
57 // ---------------------------------------------------------------------------------- |
|
58 // CASYStubService::~CASYStubService() |
|
59 // ---------------------------------------------------------------------------------- |
|
60 CASYStubService::~CASYStubService() |
|
61 { |
|
62 COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::~CTFTestControlObserver - Enter" ) ) ); |
|
63 iAccessoryControl.CloseSubSession(); |
|
64 iAccessoryServer.Close(); |
|
65 COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::~CTFTestControlObserver - succesful" ) ) ); |
|
66 } |
|
67 // |
|
68 // ---------------------------------------------------------------------------------- |
|
69 // CASYStubService::Service() |
|
70 // ---------------------------------------------------------------------------------- |
|
71 void CASYStubService::Service( |
|
72 TTFASYReference aMethod, |
|
73 TInt64 aParam1, |
|
74 RArray<TUint32> aCapabilityArray ) |
|
75 { |
|
76 |
|
77 switch( aMethod ) |
|
78 { |
|
79 case ETFAsyConn: |
|
80 { |
|
81 // Connection that is made is based on the database |
|
82 // Generic ID is mapped from HW Device ID |
|
83 TRequestStatus status; |
|
84 CAccConfigFileParser* accConfigFileParser = |
|
85 CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
86 CleanupStack::PushL( accConfigFileParser ); |
|
87 TBuf< 12 > HWModelID; |
|
88 HWModelID.Num( aParam1 ); |
|
89 |
|
90 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
91 CleanupStack::PushL( genericID ); |
|
92 |
|
93 accConfigFileParser->FindL( genericID, aParam1, HWModelID ); |
|
94 iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); |
|
95 |
|
96 User::WaitForRequest( status ); |
|
97 TInt retval = status.Int(); |
|
98 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Connect status %d" ), retval) ); |
|
99 |
|
100 iGenericId = genericID->GenericID(); |
|
101 CleanupStack::PopAndDestroy( genericID ); |
|
102 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
103 } |
|
104 break; |
|
105 |
|
106 case ETFAsyConnOpenCable: |
|
107 case ETFAsyConnectOpenCable3Poles: |
|
108 { |
|
109 // Connection is made by giving capabilities from adaptation side |
|
110 TRequestStatus status; |
|
111 CAccConfigFileParser* accConfigFileParser |
|
112 = CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
113 CleanupStack::PushL( accConfigFileParser ); |
|
114 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
115 CleanupStack::PushL( genericID ); |
|
116 |
|
117 RArray<TAccPolNameValueRecord> nameValueArray; |
|
118 CleanupClosePushL( nameValueArray ); |
|
119 TBuf< KHWModelIDMaxLength > hwModelID( _L( "opencable" ) ); |
|
120 TAccPolNameRecord nameRecord; |
|
121 TAccPolValueRecord valueRecord; |
|
122 |
|
123 // Set GenericID header |
|
124 iGenericIDHeader.iAccessoryDeviceType = KDTAVDevice; |
|
125 iGenericIDHeader.iPhysicalConnection = KPCWired; |
|
126 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
127 |
|
128 if ( aMethod == ETFAsyConnectOpenCable3Poles ) |
|
129 { |
|
130 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock; |
|
131 } |
|
132 else |
|
133 { |
|
134 iGenericIDHeader.iCapabilitiesSubblocks = KSBVideoSubblock | KSBAudioSubblock; |
|
135 } |
|
136 |
|
137 iGenericIDHeader.iHWModelID = hwModelID; |
|
138 iGenericIDHeader.iHWDeviceID = 0x0; |
|
139 iGenericIDHeader.iDBID = 0x0; |
|
140 |
|
141 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
142 nameValueArray.Close(); |
|
143 |
|
144 iAccessoryControl.ConnectAccessory( status, genericID, ETrue ); |
|
145 User::WaitForRequest( status ); |
|
146 TInt retval = status.Int(); |
|
147 |
|
148 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Connect status %d" ), retval ) ); |
|
149 |
|
150 iGenericId = genericID->GenericID(); |
|
151 |
|
152 CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called; |
|
153 CleanupStack::PopAndDestroy( genericID ); |
|
154 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
155 } |
|
156 break; |
|
157 |
|
158 case ETFAsyUpdateTVOut: |
|
159 { |
|
160 // Connection is made by giving capabilities from adaptation side |
|
161 TRequestStatus status; |
|
162 CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L("Configuration file")); |
|
163 CleanupStack::PushL( accConfigFileParser ); |
|
164 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
165 CleanupStack::PushL( genericID ); |
|
166 |
|
167 RArray<TAccPolNameValueRecord> nameValueArray; |
|
168 CleanupClosePushL( nameValueArray ); |
|
169 TBuf< KHWModelIDMaxLength > hwModelID( _L( "opencable" ) ); |
|
170 TAccPolNameRecord nameRecord; |
|
171 TAccPolValueRecord valueRecord; |
|
172 |
|
173 //Set GenericID header |
|
174 iGenericIDHeader.iAccessoryDeviceType = KDTAVDevice; |
|
175 iGenericIDHeader.iPhysicalConnection = KPCWired; |
|
176 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
177 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock | KSBVideoSubblock; |
|
178 iGenericIDHeader.iHWModelID = hwModelID; |
|
179 iGenericIDHeader.iHWDeviceID = 0x0; |
|
180 |
|
181 iGenericIDHeader.iDBID = iGenericId.UniqueID(); |
|
182 |
|
183 //Set "Audio Output Type" capability |
|
184 TAccPolNameValueRecord nameValueRecordAudioOutputType( KAccAudioOutputType, |
|
185 EAccAudioOutPutTypePublic, |
|
186 EAPVInt, |
|
187 EAPVPolicy ); |
|
188 |
|
189 nameValueArray.Append( nameValueRecordAudioOutputType ); |
|
190 |
|
191 |
|
192 //Set "Audio stereo" capability |
|
193 TAccPolNameValueRecord nameValueRecordAudioStereo( KAccStereoAudio, |
|
194 EAccAudioOutPutTypePublic, |
|
195 EAPVInt, |
|
196 EAPVPolicy ); |
|
197 |
|
198 nameValueArray.Append( nameValueRecordAudioStereo ); |
|
199 //Set "Line out Type" capability |
|
200 TAccPolNameValueRecord nameValueRecordAudioOut( KAccAudioOut, |
|
201 TAccAudioOutLineout, |
|
202 EAPVInt, |
|
203 EAPVPolicy ); |
|
204 nameValueArray.Append( nameValueRecordAudioOut ); |
|
205 //Set "Video Output Type" capability |
|
206 TAccPolNameValueRecord nameValueRecordVideoOut( KAccVideoOut, |
|
207 EAccVideoOutCVideo, |
|
208 EAPVInt, |
|
209 EAPVPolicy ); |
|
210 nameValueArray.Append( nameValueRecordVideoOut ); |
|
211 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
212 nameValueArray.Close(); |
|
213 |
|
214 iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); |
|
215 User::WaitForRequest( status ); |
|
216 TInt retval = status.Int(); |
|
217 |
|
218 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) ); |
|
219 |
|
220 iGenericId = genericID->GenericID(); |
|
221 |
|
222 CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called; |
|
223 CleanupStack::PopAndDestroy( genericID ); |
|
224 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
225 } |
|
226 break; |
|
227 |
|
228 case ETFAsyUpdateHeadset: |
|
229 { |
|
230 // Connection is made by giving capabilities from adaptation side |
|
231 TRequestStatus status; |
|
232 CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
233 CleanupStack::PushL( accConfigFileParser ); |
|
234 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
235 CleanupStack::PushL( genericID ); |
|
236 |
|
237 RArray<TAccPolNameValueRecord> nameValueArray; |
|
238 CleanupClosePushL( nameValueArray ); |
|
239 TBuf< KHWModelIDMaxLength > hwModelID( _L( "headset" ) ); |
|
240 TAccPolNameRecord nameRecord; |
|
241 TAccPolValueRecord valueRecord; |
|
242 |
|
243 //Set GenericID header |
|
244 iGenericIDHeader.iAccessoryDeviceType = KDTHeadset; |
|
245 iGenericIDHeader.iPhysicalConnection = KPCWired; |
|
246 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
247 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock; |
|
248 iGenericIDHeader.iHWModelID = hwModelID; |
|
249 iGenericIDHeader.iHWDeviceID = 0x0; |
|
250 iGenericIDHeader.iDBID = iGenericId.UniqueID(); |
|
251 |
|
252 //Set "Audio Output Type" capability |
|
253 TAccPolNameValueRecord nameValueRecordAudioOutputType( KAccAudioOutputType, |
|
254 EAccAudioOutPutTypePublic, |
|
255 EAPVInt, |
|
256 EAPVPolicy ); |
|
257 nameValueArray.Append( nameValueRecordAudioOutputType ); |
|
258 |
|
259 //Set "Audio stereo" capability |
|
260 TAccPolNameValueRecord nameValueRecordAudioStereo( KAccStereoAudio, |
|
261 EAccAudioOutPutTypePublic, |
|
262 EAPVInt, |
|
263 EAPVPolicy ); |
|
264 nameValueArray.Append( nameValueRecordAudioStereo ); |
|
265 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
266 nameValueArray.Close(); |
|
267 |
|
268 iAccessoryControl.ConnectAccessory( status, genericID, ETrue ); |
|
269 User::WaitForRequest( status ); |
|
270 TInt retval = status.Int(); |
|
271 |
|
272 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) ); |
|
273 |
|
274 iGenericId = genericID->GenericID(); |
|
275 |
|
276 CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called; |
|
277 CleanupStack::PopAndDestroy( genericID ); |
|
278 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
279 } |
|
280 break; |
|
281 |
|
282 case ETFAsyConnectHeadset: |
|
283 { |
|
284 // Connection is made by giving capabilities from adaptation side |
|
285 TRequestStatus status; |
|
286 CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
287 CleanupStack::PushL( accConfigFileParser ); |
|
288 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
289 CleanupStack::PushL( genericID ); |
|
290 RArray<TAccPolNameValueRecord> nameValueArray; |
|
291 CleanupClosePushL( nameValueArray ); |
|
292 TBuf<KHWModelIDMaxLength> hwModelID( _L( "headset" ) ); |
|
293 TAccPolNameRecord nameRecord; |
|
294 TAccPolValueRecord valueRecord; |
|
295 |
|
296 //Set GenericID header |
|
297 iGenericIDHeader.iAccessoryDeviceType = KDTHeadset; |
|
298 iGenericIDHeader.iPhysicalConnection = KPCWired; |
|
299 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
300 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock; |
|
301 iGenericIDHeader.iHWModelID = hwModelID; |
|
302 iGenericIDHeader.iHWDeviceID = 0x0; |
|
303 |
|
304 //Set "Audio Output Type" capability |
|
305 TAccPolNameValueRecord nameValueRecordAudioOutputType( KAccAudioOutputType, |
|
306 EAccAudioOutPutTypePublic, |
|
307 EAPVInt, |
|
308 EAPVPolicy ); |
|
309 nameValueArray.Append( nameValueRecordAudioOutputType ); |
|
310 //Set "Audio stereo" capability |
|
311 TAccPolNameValueRecord nameValueRecordAudioStereo( KAccStereoAudio ); |
|
312 nameValueArray.Append( nameValueRecordAudioStereo ); |
|
313 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
314 nameValueArray.Close(); |
|
315 iAccessoryControl.ConnectAccessory( status, genericID, ETrue ); |
|
316 User::WaitForRequest( status ); |
|
317 TInt retval = status.Int(); |
|
318 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) ); |
|
319 |
|
320 iGenericId = genericID->GenericID(); |
|
321 |
|
322 CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called; |
|
323 CleanupStack::PopAndDestroy( genericID ); |
|
324 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
325 } |
|
326 break; |
|
327 |
|
328 |
|
329 |
|
330 case ETFAsyConnectECIAccessory: |
|
331 { |
|
332 // Connection is made by giving capabilities from adaptation side |
|
333 TRequestStatus status; |
|
334 CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
335 CleanupStack::PushL( accConfigFileParser ); |
|
336 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
337 CleanupStack::PushL( genericID ); |
|
338 |
|
339 RArray< TAccPolNameValueRecord > nameValueArray; |
|
340 CleanupClosePushL( nameValueArray ); |
|
341 TBuf< KHWModelIDMaxLength > hwModelID( _L( "headset" ) ); |
|
342 TAccPolNameRecord nameRecord; |
|
343 TAccPolValueRecord valueRecord; |
|
344 |
|
345 //Set GenericID header |
|
346 iGenericIDHeader.iAccessoryDeviceType = KDTHeadset; |
|
347 iGenericIDHeader.iPhysicalConnection = KPCWired; |
|
348 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
349 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock; |
|
350 iGenericIDHeader.iHWModelID = hwModelID; |
|
351 iGenericIDHeader.iHWDeviceID = 0x0; |
|
352 |
|
353 //Set "ECI audio block" capability |
|
354 TBuf8<30> eciData(_L8("ECIAudioBlockData")); |
|
355 TAccPolNameValueRecord eciAudioBlock( KAccECIAudioBlock, eciData, EAPVPolicy ); |
|
356 nameValueArray.Append( eciAudioBlock ); |
|
357 //Set "Audio Output Type" capability |
|
358 TAccPolNameValueRecord nameValueRecordAudioOutputType( KAccAudioOutputType, |
|
359 EAccAudioOutPutTypePublic, |
|
360 EAPVInt, |
|
361 EAPVPolicy ); |
|
362 nameValueArray.Append( nameValueRecordAudioOutputType ); |
|
363 //Set "Audio stereo" capability |
|
364 TAccPolNameValueRecord nameValueRecordAudioStereo( KAccStereoAudio, |
|
365 EAccAudioOutPutTypePublic, |
|
366 EAPVInt, |
|
367 EAPVPolicy ); |
|
368 nameValueArray.Append( nameValueRecordAudioStereo ); |
|
369 //Set "Audio stereo" capability |
|
370 TAccPolNameValueRecord nameValueRecordAudioOutconnector( KAccAudioOutConnector, |
|
371 1, |
|
372 EAPVBool, |
|
373 EAPVAccessory ); |
|
374 nameValueArray.Append( nameValueRecordAudioOutconnector ); |
|
375 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
376 nameValueArray.Close(); |
|
377 |
|
378 iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); |
|
379 User::WaitForRequest( status ); |
|
380 TInt retval = status.Int(); |
|
381 |
|
382 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) ); |
|
383 iGenericId = genericID->GenericID(); |
|
384 CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called; |
|
385 CleanupStack::PopAndDestroy( genericID ); |
|
386 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
387 } |
|
388 break; |
|
389 |
|
390 case ETFAsyConnectECITVOut: |
|
391 { |
|
392 // Connection is made by giving capabilities from adaptation side |
|
393 TRequestStatus status; |
|
394 CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
395 CleanupStack::PushL( accConfigFileParser ); |
|
396 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
397 CleanupStack::PushL( genericID ); |
|
398 RArray<TAccPolNameValueRecord> nameValueArray; |
|
399 CleanupClosePushL( nameValueArray ); |
|
400 TBuf<KHWModelIDMaxLength> hwModelID( _L( "TVOut" ) ); |
|
401 TAccPolNameRecord nameRecord; |
|
402 TAccPolValueRecord valueRecord; |
|
403 |
|
404 //Set GenericID header |
|
405 iGenericIDHeader.iAccessoryDeviceType = KDTAVDevice; |
|
406 iGenericIDHeader.iPhysicalConnection = KPCWired; |
|
407 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
408 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock|KSBVideoSubblock; |
|
409 iGenericIDHeader.iHWModelID = hwModelID; |
|
410 iGenericIDHeader.iHWDeviceID = 0x0; |
|
411 |
|
412 //Set "ECI audio block" capability |
|
413 TBuf8<30> eciData(_L8("ECIAudioBlockData")); |
|
414 TAccPolNameValueRecord eciAudioBlock( KAccECIAudioBlock, eciData, EAPVPolicy ); |
|
415 nameValueArray.Append( eciAudioBlock); |
|
416 //Set "Audio Output Type" capability |
|
417 TAccPolNameValueRecord nameValueRecordAudioOutputType( KAccAudioOutputType, |
|
418 EAccAudioOutPutTypePublic, |
|
419 EAPVInt, |
|
420 EAPVPolicy ); |
|
421 nameValueArray.Append( nameValueRecordAudioOutputType ); |
|
422 //Set "Audio stereo" capability |
|
423 TAccPolNameValueRecord nameValueRecordAudioStereo( KAccStereoAudio, |
|
424 EAccAudioOutPutTypePublic, |
|
425 EAPVInt, |
|
426 EAPVPolicy ); |
|
427 nameValueArray.Append( nameValueRecordAudioStereo ); |
|
428 //Set "Audio stereo" capability |
|
429 TAccPolNameValueRecord nameValueRecordAudioOutconnector( KAccAudioOutConnector, |
|
430 1, |
|
431 EAPVBool, |
|
432 EAPVAccessory ); |
|
433 nameValueArray.Append( nameValueRecordAudioOutconnector ); |
|
434 //Set "Audio stereo" capability |
|
435 TAccPolNameValueRecord nameValueRecordVideoOut( KAccVideoOut, |
|
436 EAccVideoOutCVideo, |
|
437 EAPVInt, |
|
438 EAPVPolicy ); |
|
439 nameValueArray.Append( nameValueRecordVideoOut ); |
|
440 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
441 nameValueArray.Close(); |
|
442 iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); |
|
443 User::WaitForRequest( status ); |
|
444 TInt retval = status.Int(); |
|
445 |
|
446 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) ); |
|
447 |
|
448 iGenericId = genericID->GenericID(); |
|
449 CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called; |
|
450 CleanupStack::PopAndDestroy( genericID ); |
|
451 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
452 } |
|
453 break; |
|
454 |
|
455 case ETFAsyConnectECIMusicStand: |
|
456 { |
|
457 // Connection is made by giving capabilities from adaptation side |
|
458 TRequestStatus status; |
|
459 CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
460 CleanupStack::PushL( accConfigFileParser ); |
|
461 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
462 CleanupStack::PushL( genericID ); |
|
463 RArray< TAccPolNameValueRecord > nameValueArray; |
|
464 CleanupClosePushL( nameValueArray ); |
|
465 TBuf< KHWModelIDMaxLength > hwModelID( _L( "MusicStand" ) ); |
|
466 TAccPolNameRecord nameRecord; |
|
467 TAccPolValueRecord valueRecord; |
|
468 |
|
469 //Set GenericID header |
|
470 iGenericIDHeader.iAccessoryDeviceType = KDTOffice; |
|
471 iGenericIDHeader.iPhysicalConnection = KPCWired; |
|
472 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
473 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock; |
|
474 iGenericIDHeader.iHWModelID = hwModelID; |
|
475 iGenericIDHeader.iHWDeviceID = 0x0; |
|
476 |
|
477 //Set "ECI audio block" capability |
|
478 TBuf8< 30 > eciData( _L8( "ECIAudioBlockData" ) ); |
|
479 TAccPolNameValueRecord eciAudioBlock( KAccECIAudioBlock, eciData, EAPVPolicy ); |
|
480 nameValueArray.Append( eciAudioBlock ); |
|
481 //Set "Audio Output Type" capability |
|
482 TAccPolNameValueRecord nameValueRecordAudioOutputType( KAccAudioOutputType, |
|
483 EAccAudioOutPutTypePublic, |
|
484 EAPVInt, |
|
485 EAPVPolicy ); |
|
486 nameValueArray.Append( nameValueRecordAudioOutputType ); |
|
487 //Set "Audio stereo" capability |
|
488 TAccPolNameValueRecord nameValueRecordAudioStereo( KAccStereoAudio, |
|
489 EAccAudioOutPutTypePublic, |
|
490 EAPVInt, |
|
491 EAPVPolicy ); |
|
492 nameValueArray.Append( nameValueRecordAudioStereo ); |
|
493 |
|
494 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
495 nameValueArray.Close(); |
|
496 |
|
497 iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); |
|
498 User::WaitForRequest( status ); |
|
499 TInt retval = status.Int(); |
|
500 |
|
501 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) ); |
|
502 |
|
503 iGenericId = genericID->GenericID(); |
|
504 |
|
505 CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called; |
|
506 CleanupStack::PopAndDestroy( genericID ); |
|
507 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
508 } |
|
509 break; |
|
510 |
|
511 case ETFAsyConnectECICarKit: |
|
512 { |
|
513 // Connection is made by giving capabilities from adaptation side |
|
514 TRequestStatus status; |
|
515 CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
516 CleanupStack::PushL( accConfigFileParser ); |
|
517 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
518 CleanupStack::PushL( genericID ); |
|
519 |
|
520 RArray< TAccPolNameValueRecord > nameValueArray; |
|
521 CleanupClosePushL( nameValueArray ); |
|
522 TBuf< KHWModelIDMaxLength > hwModelID( _L( "MusicStand" ) ); |
|
523 TAccPolNameRecord nameRecord; |
|
524 TAccPolValueRecord valueRecord; |
|
525 |
|
526 //Set GenericID header |
|
527 iGenericIDHeader.iAccessoryDeviceType = KDTCarKit; |
|
528 iGenericIDHeader.iPhysicalConnection = KPCWired; |
|
529 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
530 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock|KDTCharger|KSBCarKitSubblock; |
|
531 iGenericIDHeader.iHWModelID = hwModelID; |
|
532 iGenericIDHeader.iHWDeviceID = 0x0; |
|
533 |
|
534 //Set "ECI audio block" capability |
|
535 TBuf8< 30 > eciData( _L8( "ECIAudioBlockData" ) ); |
|
536 TAccPolNameValueRecord eciAudioBlock( KAccECIAudioBlock, eciData, EAPVPolicy ); |
|
537 nameValueArray.Append( eciAudioBlock); |
|
538 //Set "Audio Output Type" capability |
|
539 TAccPolNameValueRecord nameValueRecordAudioOutputType( KAccAudioOutputType, |
|
540 EAccAudioOutPutTypePublic, |
|
541 EAPVInt, |
|
542 EAPVPolicy ); |
|
543 nameValueArray.Append( nameValueRecordAudioOutputType ); |
|
544 //Set "Audio stereo" capability |
|
545 TAccPolNameValueRecord nameValueRecordAudioStereo( KAccStereoAudio, |
|
546 EAccAudioOutPutTypePublic, |
|
547 EAPVInt, |
|
548 EAPVPolicy ); |
|
549 nameValueArray.Append( nameValueRecordAudioStereo ); |
|
550 //Set "Car Radio Mute" capability |
|
551 TAccPolNameValueRecord nameValueRecordCarRadioMute( KAccCarRadioMute, |
|
552 1, |
|
553 EAPVBool, |
|
554 EAPVAccessory ); |
|
555 nameValueArray.Append( nameValueRecordCarRadioMute ); |
|
556 //Set "External power supply" capability |
|
557 TAccPolNameValueRecord nameValueRecordPowerExtOut( KAccExtPowerSupply, |
|
558 1, |
|
559 EAPVBool, |
|
560 EAPVAccessory ); |
|
561 nameValueArray.Append( nameValueRecordPowerExtOut ); |
|
562 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
563 nameValueArray.Close(); |
|
564 |
|
565 iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); |
|
566 User::WaitForRequest( status ); |
|
567 TInt retval = status.Int(); |
|
568 |
|
569 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) ); |
|
570 |
|
571 iGenericId = genericID->GenericID(); |
|
572 |
|
573 CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called; |
|
574 CleanupStack::PopAndDestroy( genericID ); |
|
575 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
576 } |
|
577 break; |
|
578 |
|
579 case ETFAsyConnectArrayOfCapabilities: |
|
580 { |
|
581 // Connection is made by giving capabilities from adaptation side |
|
582 TRequestStatus status; |
|
583 CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) ); |
|
584 CleanupStack::PushL( accConfigFileParser ); |
|
585 CAccConGenericID* genericID = CAccConGenericID::NewL(); |
|
586 CleanupStack::PushL( genericID ); |
|
587 RArray< TAccPolNameValueRecord > nameValueArray; |
|
588 CleanupClosePushL( nameValueArray ); |
|
589 TBuf< KHWModelIDMaxLength > hwModelID( _L( "Some Device" ) ); |
|
590 TAccPolNameRecord nameRecord; |
|
591 TAccPolValueRecord valueRecord; |
|
592 CAccMonitorCapMapper* mapper = CAccMonitorCapMapper::NewL(); |
|
593 CleanupStack::PushL( mapper ); |
|
594 TUint32 subblocks( 0x0 ); |
|
595 TUint32 capa( 0 ); |
|
596 |
|
597 for( TInt i = 0; i != aCapabilityArray.Count(); i++ ) |
|
598 { |
|
599 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - In array capability: %d" ), aCapabilityArray[ i ] ) ); |
|
600 } |
|
601 |
|
602 // Go through capabilities and create name values |
|
603 for( TInt i = 0; i != aCapabilityArray.Count(); i++ ) |
|
604 { |
|
605 TAccMonCapability capability = aCapabilityArray[ i ]; |
|
606 if( capability < 17 ) |
|
607 { |
|
608 TUint32 luku = mapper->GetHeaderCapabilityFromDefinitionL( capability ); |
|
609 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Header Device type capability: %d" ), luku ) ); |
|
610 iGenericIDHeader.iAccessoryDeviceType = luku; |
|
611 if( luku == 1 ) |
|
612 { |
|
613 //iGenericIDHeader.iDeviceAddress = KBTAddrHeadsetHSPAndHFP; |
|
614 } |
|
615 } |
|
616 if( ( capability > 16 ) && ( capability < 31 ) ) |
|
617 { |
|
618 TUint32 luku = mapper->GetHeaderCapabilityFromDefinitionL( capability ); |
|
619 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Header Physical connection capability: %d" ), luku ) ); |
|
620 iGenericIDHeader.iPhysicalConnection = 0x01; |
|
621 } |
|
622 if( ( capability > 80 ) && ( capability < 97 ) ) |
|
623 { |
|
624 subblocks = subblocks|KSBAudioSubblock; |
|
625 capa = mapper->GetCapabilityFromDefinitionL( capability ); |
|
626 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Audio capability: %d" ), capa ) ); |
|
627 if( capa == KAccAudioOutputType ) |
|
628 { |
|
629 TAccPolNameValueRecord nameValue( |
|
630 capa, |
|
631 EAccAudioOutPutTypePublic, |
|
632 EAPVInt, |
|
633 EAPVPolicy ); |
|
634 nameValueArray.Append( nameValue ); |
|
635 } |
|
636 else |
|
637 { |
|
638 TAccPolNameValueRecord nameValue( capa ); |
|
639 nameValueArray.Append( nameValue ); |
|
640 } |
|
641 } |
|
642 if( ( capability > 96 ) && ( capability < 113 ) ) |
|
643 { |
|
644 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - BT capa, not supported" ) ) ); |
|
645 |
|
646 /*subblocks = subblocks|KSBBluetoothSubblock; |
|
647 capa = mapper->GetCapabilityFromDefinitionL( capability ); |
|
648 TAccPolNameValueRecord nameValue( capa ); |
|
649 nameValueArray.Append( nameValue );*/ |
|
650 } |
|
651 if( ( capability > 112 ) && ( capability < 129 ) ) |
|
652 { |
|
653 subblocks = subblocks|KSBVideoSubblock; |
|
654 capa = mapper->GetCapabilityFromDefinitionL( capability ); |
|
655 COMPONENT_TRACE( ( _L( "[CConnectionEmulator] CASYStubService::Service() - Video capability: %d" ), capa ) ); |
|
656 TAccPolNameValueRecord nameValue( capa ); |
|
657 nameValueArray.Append( nameValue ); |
|
658 } |
|
659 } |
|
660 CleanupStack::Pop( mapper ); |
|
661 //Set GenericID header |
|
662 iGenericIDHeader.iApplicationProtocol = 0x0; |
|
663 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Accessory to be connected" ) ) ); |
|
664 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Device type: %d" ), iGenericIDHeader.iAccessoryDeviceType ) ); |
|
665 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Physical connection: %d" ), iGenericIDHeader.iPhysicalConnection ) ); |
|
666 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Application protocol: %d" ), iGenericIDHeader.iApplicationProtocol ) ); |
|
667 iGenericIDHeader.iCapabilitiesSubblocks = subblocks; |
|
668 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Capability subblocks: %d" ), iGenericIDHeader.iCapabilitiesSubblocks ) ); |
|
669 iGenericIDHeader.iHWModelID = hwModelID; |
|
670 iGenericIDHeader.iHWDeviceID = 0x0; |
|
671 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - HW device id: %d" ), iGenericIDHeader.iHWDeviceID ) ); |
|
672 accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray ); |
|
673 nameValueArray.Close(); |
|
674 iAccessoryControl.ConnectAccessory( status, genericID, EFalse ); |
|
675 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Don't evaluate connection rules" ) ) ); |
|
676 User::WaitForRequest( status ); |
|
677 TInt retval = status.Int(); |
|
678 |
|
679 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) ); |
|
680 |
|
681 iGenericId = genericID->GenericID(); |
|
682 |
|
683 CleanupStack::PopAndDestroy( &nameValueArray ); |
|
684 CleanupStack::PopAndDestroy( genericID ); |
|
685 CleanupStack::PopAndDestroy( accConfigFileParser ); |
|
686 } |
|
687 break; |
|
688 |
|
689 case ETFAsyDisc: |
|
690 { |
|
691 // Just a disconnect |
|
692 TRequestStatus status; |
|
693 iAccessoryControl.DisconnectAccessory( status, iGenericId ); |
|
694 User::WaitForRequest( status ); |
|
695 TInt retval = status.Int(); |
|
696 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Diconnect status %d" ), retval ) ); |
|
697 } |
|
698 break; |
|
699 |
|
700 default: |
|
701 { |
|
702 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Subscribe destination is WIRELESS ASY" ) ) ); |
|
703 break; |
|
704 } |
|
705 } |
|
706 } |
|
707 // |
|
708 // ---------------------------------------------------------------------------------- |
|
709 // CASYStubService::GetTestCaseID() |
|
710 // ---------------------------------------------------------------------------------- |
|
711 TInt CASYStubService::GetTestCaseID() |
|
712 { |
|
713 COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::GetTestCaseID" ) ) ); |
|
714 return iTestCaseID; |
|
715 } |
|
716 |
|
717 // |
|
718 // ---------------------------------------------------------------------------------- |
|
719 // CASYStubService::GetTestCaseID() |
|
720 // ---------------------------------------------------------------------------------- |
|
721 TTFCapability CASYStubService::GetAndRemoveCapability() |
|
722 { |
|
723 TTFCapability aCapabilityS; |
|
724 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::GetAndRemoveCapability - This does nothing" ) ) ); |
|
725 if( iCapabilityArray.Count() != 0 ) |
|
726 { |
|
727 /*aCapabilityS.iCapability = iCapabilityArray[0].iCapability; |
|
728 aCapabilityS.iValue = iCapabilityArray[0].iValue; |
|
729 aCapabilityS.iTimeMs = iCapabilityArray[0].iTimeMs; |
|
730 iCapabilityArray.Remove(0); */ |
|
731 } |
|
732 else |
|
733 { |
|
734 /*aCapabilityS.iCapability = 0; |
|
735 aCapabilityS.iValue = 0; |
|
736 aCapabilityS.iTimeMs = 0;*/ |
|
737 } |
|
738 COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::GetAndRemoveCapability - return" ) ) ); |
|
739 return aCapabilityS; |
|
740 } |
|
741 |
|
742 // End of File |