|
1 // Copyright (c) 2004-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 "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 #ifndef AVCFRAME_H |
|
17 #define AVCFRAME_H |
|
18 |
|
19 /** |
|
20 @file |
|
21 @released |
|
22 @publishedPartner |
|
23 */ |
|
24 |
|
25 #include <avcpanel.h> |
|
26 #include <e32base.h> |
|
27 |
|
28 static const TInt KAVCFrameMaxLength = 0x200; |
|
29 static const TInt KAVCFrameHeaderLength = 0x3; |
|
30 static const TInt KAVCPassthroughFrameLength = 0x5; |
|
31 static const TUint8 KAVCCommandTypeMask = 0x0f; |
|
32 static const TUint8 KAVCResponseTypeMask = 0x0f; |
|
33 static const TUint8 KAVCSubunitTypeMask = 0xf8; |
|
34 static const TUint8 KAVCSubunitIDMask = 0x07; |
|
35 static const TUint8 KAVCCommandMaxRangeLength = 0x7; |
|
36 |
|
37 static const TUint KAVCVendorUniquePassthroughHeader = 7; |
|
38 static const TUint KAVCVendorIdBaseOffset = 5; |
|
39 static const TUint KAVCVendorIdLength = 3; |
|
40 |
|
41 static const TInt KAVCMaxVendorDependentPayload = KAVCFrameMaxLength-KAVCFrameHeaderLength-KAVCVendorIdLength; |
|
42 |
|
43 namespace AVC |
|
44 { |
|
45 enum TFrameType |
|
46 { |
|
47 ECommand, |
|
48 EResponse |
|
49 }; |
|
50 /** |
|
51 As per section 7.3.1, AV/C Digital Interface Command Set General Specification v4.0 |
|
52 As per section 7.3.2, AV/C Digital Interface Command Set General Specification v4.0 |
|
53 */ |
|
54 enum TCType |
|
55 { |
|
56 EControl = 0x0, |
|
57 EStatus = 0x1, |
|
58 ESpecificEnquiry = 0x2, |
|
59 ENotify = 0x3, |
|
60 EGeneralEnquiry = 0x4, |
|
61 EReserved1 = 0x5, |
|
62 EReserved2 = 0x6, |
|
63 EReserved3 = 0x7, |
|
64 ENotImplemented = 0x8, |
|
65 EAccepted = 0x9, |
|
66 ERejected = 0xa, |
|
67 EInTransition = 0xb, |
|
68 EImplemented = 0xc, |
|
69 EStable = 0xc, // NB: EImplemented and EStable are the same! |
|
70 EChanged = 0xd, |
|
71 EReserved4 = 0xe, |
|
72 EInterim = 0xf |
|
73 }; |
|
74 /** |
|
75 As per sections 7.3.4.1 and 7.3.4.3, AV/C Digital Interface Command Set General Specification v4.0 |
|
76 |
|
77 Extended subunit types should be coded as 0xXYY in this enumeration where |
|
78 X is the nth extension and YY is the type number. e.g. 0x101 would correspond |
|
79 to example 3 in table 7.9 and 0x201 would correspond to example 4. |
|
80 */ |
|
81 enum TSubunitType |
|
82 { |
|
83 EMonitor = 0x00, |
|
84 EAudio = 0x01, |
|
85 EPrinter = 0x02, |
|
86 EDisc = 0x03, |
|
87 ETape = 0x04, |
|
88 ETuner = 0x05, |
|
89 ECA = 0x06, |
|
90 ECamera = 0x07, |
|
91 EPanel = 0x09, |
|
92 EBulletinBoard = 0x0a, |
|
93 ECameraStorage = 0x0b, |
|
94 EVendorUnique = 0x1c, |
|
95 ETypeExtended1 = 0x1e, |
|
96 EUnit = 0x1f, |
|
97 ETypeExtended2 = 0xff |
|
98 }; |
|
99 /** |
|
100 As per sections 7.3.4.1 and 7.3.4.3, AV/C Digital Interface Command Set General Specification v4.0 |
|
101 |
|
102 Extended subunit IDs should be coded as 0xXYY in this enumeration where |
|
103 X is the nth extension and YY is the ID number. e.g. 0x102 would correspond |
|
104 to example 2 in table 7.10 and 0x201 would correspond to example 3. |
|
105 */ |
|
106 enum TSubunitID |
|
107 { |
|
108 EID0 = 0x00, |
|
109 EID1 = 0x01, |
|
110 EID2 = 0x02, |
|
111 EID3 = 0x04, |
|
112 EIDExtended1 = 0x05, |
|
113 EIgnore = 0x07, |
|
114 EIDExtended2 = 0xff |
|
115 }; |
|
116 /** |
|
117 As per section 10.1.2, AV/C Digital Interface Command Set General Specification v4.0 |
|
118 |
|
119 AV/C unit source plug addresses |
|
120 */ |
|
121 enum TUnitInputPlug |
|
122 { |
|
123 ESerialIsochronousInput0 = 0x00, |
|
124 ESerialIsochronousInput1 = 0x01, |
|
125 ESerialIsochronousInput2 = 0x02, |
|
126 ESerialIsochronousInput3 = 0x03, |
|
127 ESerialIsochronousInput4 = 0x04, |
|
128 ESerialIsochronousInput5 = 0x05, |
|
129 ESerialIsochronousInput6 = 0x06, |
|
130 ESerialIsochronousInput7 = 0x07, |
|
131 ESerialIsochronousInput8 = 0x08, |
|
132 ESerialIsochronousInput9 = 0x09, |
|
133 ESerialIsochronousInput10 = 0x0a, |
|
134 ESerialIsochronousInput11 = 0x0b, |
|
135 ESerialIsochronousInput12 = 0x0c, |
|
136 ESerialIsochronousInput13 = 0x0d, |
|
137 ESerialIsochronousInput14 = 0x0e, |
|
138 ESerialIsochronousInput15 = 0x0f, |
|
139 ESerialIsochronousInput16 = 0x10, |
|
140 ESerialIsochronousInput17 = 0x11, |
|
141 ESerialIsochronousInput18 = 0x12, |
|
142 ESerialIsochronousInput19 = 0x13, |
|
143 ESerialIsochronousInput20 = 0x14, |
|
144 ESerialIsochronousInput21 = 0x15, |
|
145 ESerialIsochronousInput22 = 0x16, |
|
146 ESerialIsochronousInput23 = 0x17, |
|
147 ESerialIsochronousInput24 = 0x18, |
|
148 ESerialIsochronousInput25 = 0x19, |
|
149 ESerialIsochronousInput26 = 0x1a, |
|
150 ESerialIsochronousInput27 = 0x1b, |
|
151 ESerialIsochronousInput28 = 0x1c, |
|
152 ESerialIsochronousInput29 = 0x1d, |
|
153 ESerialIsochronousInput30 = 0x1e, |
|
154 EAnySerialIsochronousInput = 0x7f, |
|
155 EExternalInput0 = 0x80, |
|
156 EExternalInput1 = 0x81, |
|
157 EExternalInput2 = 0x82, |
|
158 EExternalInput3 = 0x83, |
|
159 EExternalInput4 = 0x84, |
|
160 EExternalInput5 = 0x85, |
|
161 EExternalInput6 = 0x86, |
|
162 EExternalInput7 = 0x87, |
|
163 EExternalInput8 = 0x88, |
|
164 EExternalInput9 = 0x89, |
|
165 EExternalInput10 = 0x8a, |
|
166 EExternalInput11 = 0x8b, |
|
167 EExternalInput12 = 0x8c, |
|
168 EExternalInput13 = 0x8d, |
|
169 EExternalInput14 = 0x8e, |
|
170 EExternalInput15 = 0x8f, |
|
171 EExternalInput16 = 0x90, |
|
172 EExternalInput17 = 0x91, |
|
173 EExternalInput18 = 0x92, |
|
174 EExternalInput19 = 0x93, |
|
175 EExternalInput20 = 0x94, |
|
176 EExternalInput21 = 0x95, |
|
177 EExternalInput22 = 0x96, |
|
178 EExternalInput23 = 0x97, |
|
179 EExternalInput24 = 0x98, |
|
180 EExternalInput25 = 0x99, |
|
181 EExternalInput26 = 0x9a, |
|
182 EExternalInput27 = 0x9b, |
|
183 EExternalInput28 = 0x9c, |
|
184 EExternalInput29 = 0x9d, |
|
185 EExternalInput30 = 0x9e, |
|
186 ESerialAsynchronousInput0 = 0xa0, |
|
187 ESerialAsynchronousInput1 = 0xa1, |
|
188 ESerialAsynchronousInput2 = 0xa2, |
|
189 ESerialAsynchronousInput3 = 0xa3, |
|
190 ESerialAsynchronousInput4 = 0xa4, |
|
191 ESerialAsynchronousInput5 = 0xa5, |
|
192 ESerialAsynchronousInput6 = 0xa6, |
|
193 ESerialAsynchronousInput7 = 0xa7, |
|
194 ESerialAsynchronousInput8 = 0xa8, |
|
195 ESerialAsynchronousInput9 = 0xa9, |
|
196 ESerialAsynchronousInput10 = 0xaa, |
|
197 ESerialAsynchronousInput11 = 0xab, |
|
198 ESerialAsynchronousInput12 = 0xac, |
|
199 ESerialAsynchronousInput13 = 0xad, |
|
200 ESerialAsynchronousInput14 = 0xae, |
|
201 ESerialAsynchronousInput15 = 0xaf, |
|
202 ESerialAsynchronousInput16 = 0xb0, |
|
203 ESerialAsynchronousInput17 = 0xb1, |
|
204 ESerialAsynchronousInput18 = 0xb2, |
|
205 ESerialAsynchronousInput19 = 0xb3, |
|
206 ESerialAsynchronousInput20 = 0xb4, |
|
207 ESerialAsynchronousInput21 = 0xb5, |
|
208 ESerialAsynchronousInput22 = 0xb6, |
|
209 ESerialAsynchronousInput23 = 0xb7, |
|
210 ESerialAsynchronousInput24 = 0xb8, |
|
211 ESerialAsynchronousInput25 = 0xb9, |
|
212 ESerialAsynchronousInput26 = 0xba, |
|
213 ESerialAsynchronousInput27 = 0xbb, |
|
214 ESerialAsynchronousInput28 = 0xbc, |
|
215 ESerialAsynchronousInput29 = 0xbd, |
|
216 ESerialAsynchronousInput30 = 0xbe, |
|
217 EAnySerialAsynchronousInput = 0xbf, |
|
218 EInvalidInput = 0xfe, |
|
219 EAnyExternalInput = 0xff |
|
220 }; |
|
221 /** |
|
222 As per section 10.1.2, AV/C Digital Interface Command Set General Specification v4.0 |
|
223 |
|
224 AV/C unit destination plug addresses |
|
225 */ |
|
226 enum TUnitOutputPlug |
|
227 { |
|
228 ESerialIsochronousOutput0 = 0x00, |
|
229 ESerialIsochronousOutput1 = 0x01, |
|
230 ESerialIsochronousOutput2 = 0x02, |
|
231 ESerialIsochronousOutput3 = 0x03, |
|
232 ESerialIsochronousOutput4 = 0x04, |
|
233 ESerialIsochronousOutput5 = 0x05, |
|
234 ESerialIsochronousOutput6 = 0x06, |
|
235 ESerialIsochronousOutput7 = 0x07, |
|
236 ESerialIsochronousOutput8 = 0x08, |
|
237 ESerialIsochronousOutput9 = 0x09, |
|
238 ESerialIsochronousOutput10 = 0x0a, |
|
239 ESerialIsochronousOutput11 = 0x0b, |
|
240 ESerialIsochronousOutput12 = 0x0c, |
|
241 ESerialIsochronousOutput13 = 0x0d, |
|
242 ESerialIsochronousOutput14 = 0x0e, |
|
243 ESerialIsochronousOutput15 = 0x0f, |
|
244 ESerialIsochronousOutput16 = 0x10, |
|
245 ESerialIsochronousOutput17 = 0x11, |
|
246 ESerialIsochronousOutput18 = 0x12, |
|
247 ESerialIsochronousOutput19 = 0x13, |
|
248 ESerialIsochronousOutput20 = 0x14, |
|
249 ESerialIsochronousOutput21 = 0x15, |
|
250 ESerialIsochronousOutput22 = 0x16, |
|
251 ESerialIsochronousOutput23 = 0x17, |
|
252 ESerialIsochronousOutput24 = 0x18, |
|
253 ESerialIsochronousOutput25 = 0x19, |
|
254 ESerialIsochronousOutput26 = 0x1a, |
|
255 ESerialIsochronousOutput27 = 0x1b, |
|
256 ESerialIsochronousOutput28 = 0x1c, |
|
257 ESerialIsochronousOutput29 = 0x1d, |
|
258 ESerialIsochronousOutput30 = 0x1e, |
|
259 EAnySerialIsochronousOutput = 0x7f, |
|
260 EExternalOutput0 = 0x80, |
|
261 EExternalOutput1 = 0x81, |
|
262 EExternalOutput2 = 0x82, |
|
263 EExternalOutput3 = 0x83, |
|
264 EExternalOutput4 = 0x84, |
|
265 EExternalOutput5 = 0x85, |
|
266 EExternalOutput6 = 0x86, |
|
267 EExternalOutput7 = 0x87, |
|
268 EExternalOutput8 = 0x88, |
|
269 EExternalOutput9 = 0x89, |
|
270 EExternalOutput10 = 0x8a, |
|
271 EExternalOutput11 = 0x8b, |
|
272 EExternalOutput12 = 0x8c, |
|
273 EExternalOutput13 = 0x8d, |
|
274 EExternalOutput14 = 0x8e, |
|
275 EExternalOutput15 = 0x8f, |
|
276 EExternalOutput16 = 0x90, |
|
277 EExternalOutput17 = 0x91, |
|
278 EExternalOutput18 = 0x92, |
|
279 EExternalOutput19 = 0x93, |
|
280 EExternalOutput20 = 0x94, |
|
281 EExternalOutput21 = 0x95, |
|
282 EExternalOutput22 = 0x96, |
|
283 EExternalOutput23 = 0x97, |
|
284 EExternalOutput24 = 0x98, |
|
285 EExternalOutput25 = 0x99, |
|
286 EExternalOutput26 = 0x9a, |
|
287 EExternalOutput27 = 0x9b, |
|
288 EExternalOutput28 = 0x9c, |
|
289 EExternalOutput29 = 0x9d, |
|
290 EExternalOutput30 = 0x9e, |
|
291 ESerialAsynchronousOutput0 = 0xa0, |
|
292 ESerialAsynchronousOutput1 = 0xa1, |
|
293 ESerialAsynchronousOutput2 = 0xa2, |
|
294 ESerialAsynchronousOutput3 = 0xa3, |
|
295 ESerialAsynchronousOutput4 = 0xa4, |
|
296 ESerialAsynchronousOutput5 = 0xa5, |
|
297 ESerialAsynchronousOutput6 = 0xa6, |
|
298 ESerialAsynchronousOutput7 = 0xa7, |
|
299 ESerialAsynchronousOutput8 = 0xa8, |
|
300 ESerialAsynchronousOutput9 = 0xa9, |
|
301 ESerialAsynchronousOutput10 = 0xaa, |
|
302 ESerialAsynchronousOutput11 = 0xab, |
|
303 ESerialAsynchronousOutput12 = 0xac, |
|
304 ESerialAsynchronousOutput13 = 0xad, |
|
305 ESerialAsynchronousOutput14 = 0xae, |
|
306 ESerialAsynchronousOutput15 = 0xaf, |
|
307 ESerialAsynchronousOutput16 = 0xb0, |
|
308 ESerialAsynchronousOutput17 = 0xb1, |
|
309 ESerialAsynchronousOutput18 = 0xb2, |
|
310 ESerialAsynchronousOutput19 = 0xb3, |
|
311 ESerialAsynchronousOutput20 = 0xb4, |
|
312 ESerialAsynchronousOutput21 = 0xb5, |
|
313 ESerialAsynchronousOutput22 = 0xb6, |
|
314 ESerialAsynchronousOutput23 = 0xb7, |
|
315 ESerialAsynchronousOutput24 = 0xb8, |
|
316 ESerialAsynchronousOutput25 = 0xb9, |
|
317 ESerialAsynchronousOutput26 = 0xba, |
|
318 ESerialAsynchronousOutput27 = 0xbb, |
|
319 ESerialAsynchronousOutput28 = 0xbc, |
|
320 ESerialAsynchronousOutput29 = 0xbd, |
|
321 ESerialAsynchronousOutput30 = 0xbe, |
|
322 EAnySerialAsynchronousOutput= 0xbf, |
|
323 EMultipleOutputs = 0xfd, |
|
324 EInvalidOutput = 0xfe, |
|
325 EAnyExternalOutput = 0xff |
|
326 }; |
|
327 /** |
|
328 As per section 10.2.3, AV/C Digital Interface Command Set General Specification v4.0 |
|
329 |
|
330 AV/C subunit source plug addresses |
|
331 subunit does not have to implement any subunit plug if it does not send or receive any signals |
|
332 */ |
|
333 enum TSubunitSourcePlug |
|
334 { |
|
335 ESource0 = 0x00, |
|
336 ESource1 = 0x01, |
|
337 ESource2 = 0x02, |
|
338 ESource3 = 0x03, |
|
339 ESource4 = 0x04, |
|
340 ESource5 = 0x05, |
|
341 ESource6 = 0x06, |
|
342 ESource7 = 0x07, |
|
343 ESource8 = 0x08, |
|
344 ESource9 = 0x09, |
|
345 ESource10 = 0x0a, |
|
346 ESource11 = 0x0b, |
|
347 ESource12 = 0x0c, |
|
348 ESource13 = 0x0d, |
|
349 ESource14 = 0x0e, |
|
350 ESource15 = 0x0f, |
|
351 ESource16 = 0x10, |
|
352 ESource17 = 0x11, |
|
353 ESource18 = 0x12, |
|
354 ESource19 = 0x13, |
|
355 ESource20 = 0x14, |
|
356 ESource21 = 0x15, |
|
357 ESource22 = 0x16, |
|
358 ESource23 = 0x17, |
|
359 ESource24 = 0x18, |
|
360 ESource25 = 0x19, |
|
361 ESource26 = 0x1a, |
|
362 ESource27 = 0x1b, |
|
363 ESource28 = 0x1c, |
|
364 ESource29 = 0x1d, |
|
365 ESource30 = 0x1e, |
|
366 EInvalidSource = 0xfe, |
|
367 EAnySource = 0xff |
|
368 }; |
|
369 /** |
|
370 As per section 10.2.3, AV/C Digital Interface Command Set General Specification v4.0 |
|
371 |
|
372 AV/C subunit destination plug |
|
373 subunit does not have to implement any subunit plug if it does not send or receive any signals |
|
374 */ |
|
375 enum TSubunitDestinationPlug |
|
376 { |
|
377 EDestination0 = 0x00, |
|
378 EDestination1 = 0x01, |
|
379 EDestination2 = 0x02, |
|
380 EDestination3 = 0x03, |
|
381 EDestination4 = 0x04, |
|
382 EDestination5 = 0x05, |
|
383 EDestination6 = 0x06, |
|
384 EDestination7 = 0x07, |
|
385 EDestination8 = 0x08, |
|
386 EDestination9 = 0x09, |
|
387 EDestination10 = 0x0a, |
|
388 EDestination11 = 0x0b, |
|
389 EDestination12 = 0x0c, |
|
390 EDestination13 = 0x0d, |
|
391 EDestination14 = 0x0e, |
|
392 EDestination15 = 0x0f, |
|
393 EDestination16 = 0x10, |
|
394 EDestination17 = 0x11, |
|
395 EDestination18 = 0x12, |
|
396 EDestination19 = 0x13, |
|
397 EDestination20 = 0x14, |
|
398 EDestination21 = 0x15, |
|
399 EDestination22 = 0x16, |
|
400 EDestination23 = 0x17, |
|
401 EDestination24 = 0x18, |
|
402 EDestination25 = 0x19, |
|
403 EDestination26 = 0x1a, |
|
404 EDestination27 = 0x1b, |
|
405 EDestination28 = 0x1c, |
|
406 EDestination29 = 0x1d, |
|
407 EDestination30 = 0x1e, |
|
408 EMultipleDestinations = 0xfe, |
|
409 EInvalidDestination = 0xfe, |
|
410 EAnyDestination = 0xff |
|
411 }; |
|
412 /** |
|
413 As per sections 11 and 12, AV/C Digital Interface Command Set General Specification v4.0 |
|
414 Other commands are defined by the various subunit specifications |
|
415 */ |
|
416 enum TOpcode |
|
417 { |
|
418 EPower = 0xb2, |
|
419 EUnitInfo = 0x30, |
|
420 ESubunitInfo = 0x31, |
|
421 EReserve = 0x01, |
|
422 EVersion = 0xb0, |
|
423 EVendorDependent = 0x00, |
|
424 EPlugInfo = 0x02, |
|
425 EChannelUsage = 0x12, |
|
426 EConnect = 0x24, |
|
427 EConnectAV = 0x20, |
|
428 EConnections = 0x22, |
|
429 EDigitalInput = 0x11, |
|
430 EDigitalOutput = 0x10, |
|
431 EDisconnect = 0x25, |
|
432 EDisconnectAV = 0x21, |
|
433 EInputPlugSignalFormat = 0x19, |
|
434 EOutputPlugSignalFormat = 0x18, |
|
435 EPassThrough = 0x7c |
|
436 }; |
|
437 |
|
438 enum TPacketType |
|
439 { |
|
440 EASingle = 0x00, |
|
441 EStart = 0x01, |
|
442 EContinue = 0x10, |
|
443 EEnd = 0x11, |
|
444 }; |
|
445 |
|
446 typedef TUint TAVCVendorId; |
|
447 } |
|
448 |
|
449 /** |
|
450 AVC frame creation and utilities. |
|
451 @released |
|
452 @publishedPartner |
|
453 */ |
|
454 NONSHARABLE_CLASS(CAVCFrame) : public CBase |
|
455 { |
|
456 public: |
|
457 |
|
458 // Construction / destruction |
|
459 // TBH this acts as a factory now and could (eventually!) return a derived class |
|
460 // the caller could check by calling Opcode |
|
461 // at the moment we are going to use the derived classes just for outbound responses |
|
462 IMPORT_C static CAVCFrame* NewL(AVC::TFrameType aFrameType, |
|
463 AVC::TCType aType, |
|
464 AVC::TSubunitType aSubunitType, |
|
465 AVC::TSubunitID aSubunitID); |
|
466 |
|
467 IMPORT_C static CAVCFrame* NewL(const TDesC8& aBuffer, AVC::TFrameType aType); |
|
468 |
|
469 IMPORT_C virtual ~CAVCFrame(); |
|
470 |
|
471 // Utility |
|
472 IMPORT_C AVC::TFrameType FrameType() const; |
|
473 IMPORT_C static AVC::TFrameType FrameType(const TDesC8& aFrame); |
|
474 IMPORT_C void SetFrameType(AVC::TFrameType aFrameType); |
|
475 |
|
476 IMPORT_C AVC::TCType Type() const; |
|
477 IMPORT_C void SetType(AVC::TCType aType); |
|
478 |
|
479 IMPORT_C AVC::TSubunitType SubunitType() const; |
|
480 IMPORT_C AVC::TSubunitID SubunitID() const; |
|
481 IMPORT_C TUint8 Opcode() const; |
|
482 IMPORT_C TInt OperationId(TUint8& aOpId) const; |
|
483 IMPORT_C TInt ButtonAct(AVCPanel::TButtonAction& aButtonAction) const; |
|
484 |
|
485 IMPORT_C const TUint8& operator[](TInt aIndex) const; |
|
486 IMPORT_C const TDesC8& Data() const; |
|
487 |
|
488 IMPORT_C void Append(const TDesC8& aDes); |
|
489 IMPORT_C void Append(TChar aChar); |
|
490 IMPORT_C TInt DataLength() const; |
|
491 |
|
492 IMPORT_C static AVC::TOpcode OpcodeL(const TDesC8& aBuffer); |
|
493 |
|
494 private: |
|
495 CAVCFrame(AVC::TFrameType aFrameType); |
|
496 |
|
497 void ConstructL(AVC::TCType aType, |
|
498 AVC::TSubunitType aSubunitType, |
|
499 AVC::TSubunitID aSubunitID); |
|
500 void ConstructL(const TDesC8& aBuffer); |
|
501 static void FindExtensionL(const TDesC8& aBuffer, TInt& aSubunitTypeExtensionBytes, TInt& aSubunitIDExtensionBytes); |
|
502 |
|
503 private: |
|
504 RBuf8 iBuffer; |
|
505 |
|
506 AVC::TFrameType iFrameType; |
|
507 TInt iSubunitTypeExtensionBytes; |
|
508 TInt iSubunitIDExtensionBytes; |
|
509 }; |
|
510 |
|
511 |
|
512 // Factory pattern stuff - these are useful to do donkey work, |
|
513 // but have existing clients treat them as the base class |
|
514 |
|
515 class CAVCVendorDependentResponse |
|
516 { |
|
517 public: |
|
518 IMPORT_C static CAVCFrame* NewL(TUint aVendorId); |
|
519 }; |
|
520 |
|
521 class CAVCPassthroughCommand |
|
522 { |
|
523 public: |
|
524 }; |
|
525 |
|
526 // likely not have newl because dont allocate on parse pattern |
|
527 class CAVCVendorDependentCommand |
|
528 { |
|
529 public: |
|
530 IMPORT_C static TPtrC8 GetPayloadAndVID(const CAVCFrame& aFrame, TUint& aVID); |
|
531 }; |
|
532 |
|
533 // likely not have newl because dont allocate on parse pattern |
|
534 class CAVCVendorUniquePassthroughCommand |
|
535 { |
|
536 public: |
|
537 IMPORT_C static TPtrC8 GetPayloadAndVID(const CAVCFrame& aFrame, TUint& aVID); |
|
538 }; |
|
539 |
|
540 #endif // AVCFRAME_H |