51
|
1 |
// Copyright (c) 2004-2010 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 // codescanner::missingcclass
|
|
516 |
{
|
|
517 |
public:
|
|
518 |
IMPORT_C static CAVCFrame* NewL(TUint aVendorId);
|
|
519 |
};
|
|
520 |
|
|
521 |
class CAVCPassthroughCommand // codescanner::missingcclass
|
|
522 |
{
|
|
523 |
public:
|
|
524 |
};
|
|
525 |
|
|
526 |
// likely not have newl because dont allocate on parse pattern
|
|
527 |
class CAVCVendorDependentCommand // codescanner::missingcclass
|
|
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 // codescanner::missingcclass
|
|
535 |
{
|
|
536 |
public:
|
|
537 |
IMPORT_C static TPtrC8 GetPayloadAndVID(const CAVCFrame& aFrame, TUint& aVID);
|
|
538 |
};
|
|
539 |
|
|
540 |
#endif // AVCFRAME_H
|