initial commit containing libcec v0.1. see README for details.
[deb_libcec.git] / include / CECTypes.h
1 #pragma once
2 /*
3 * This file is part of the libCEC(R) library.
4 *
5 * libCEC(R) is Copyright (C) 2011 Pulse-Eight Limited. All rights reserved.
6 * libCEC(R) is an original work, containing original code.
7 *
8 * libCEC(R) is a trademark of Pulse-Eight Limited.
9 *
10 * This program is dual-licensed; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 *
24 *
25 * Alternatively, you can license this library under a commercial license,
26 * please contact Pulse-Eight Licensing for more information.
27 *
28 * For more information contact:
29 * Pulse-Eight Licensing <license@pulse-eight.com>
30 * http://www.pulse-eight.com/
31 * http://www.pulse-eight.net/
32 */
33
34 #include <stdint.h>
35 #include <vector>
36 #include <string>
37 #include "CECExports.h"
38
39 typedef enum
40 {
41 CEC_OPCODE_ACTIVE_SOURCE = 0x82,
42 CEC_OPCODE_IMAGE_VIEW_ON = 0x04,
43 CEC_OPCODE_TEXT_VIEW_ON = 0x0D,
44 CEC_OPCODE_INACTIVE_SOURCE = 0x9D,
45 CEC_OPCODE_REQUEST_ACTIVE_SOURCE = 0x85,
46 CEC_OPCODE_ROUTING_CHANGE = 0x80,
47 CEC_OPCODE_ROUTING_INFORMATION = 0x81,
48 CEC_OPCODE_SET_STREAM_PATH = 0x86,
49 CEC_OPCODE_STANDBY = 0x36,
50 CEC_OPCODE_RECORD_OFF = 0x0B,
51 CEC_OPCODE_RECORD_ON = 0x09,
52 CEC_OPCODE_RECORD_STATUS = 0x0A,
53 CEC_OPCODE_RECORD_TV_SCREEN = 0x0F,
54 CEC_OPCODE_CLEAR_ANALOGUE_TIMER = 0x33,
55 CEC_OPCODE_CLEAR_DIGITAL_TIMER = 0x99,
56 CEC_OPCODE_CLEAR_EXTERNAL_TIMER = 0xA1,
57 CEC_OPCODE_SET_ANALOGUE_TIMER = 0x34,
58 CEC_OPCODE_SET_DIGITAL_TIMER = 0x97,
59 CEC_OPCODE_SET_EXTERNAL_TIMER = 0xA2,
60 CEC_OPCODE_SET_TIMER_PROGRAM_TITLE = 0x67,
61 CEC_OPCODE_TIMER_CLEARED_STATUS = 0x43,
62 CEC_OPCODE_TIMER_STATUS = 0x35,
63 CEC_OPCODE_CEC_VERSION = 0x9E,
64 CEC_OPCODE_GET_CEC_VERSION = 0x9F,
65 CEC_OPCODE_GIVE_PHYSICAL_ADDRESS = 0x83,
66 CEC_OPCODE_GET_MENU_LANGUAGE = 0x91,
67 CEC_OPCODE_REPORT_PHYSICAL_ADDRESS = 0x84,
68 CEC_OPCODE_SET_MENU_LANGUAGE = 0x32,
69 CEC_OPCODE_DECK_CONTROL = 0x42,
70 CEC_OPCODE_DECK_STATUS = 0x1B,
71 CEC_OPCODE_GIVE_DECK_STATUS = 0x1A,
72 CEC_OPCODE_PLAY = 0x41,
73 CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS = 0x08,
74 CEC_OPCODE_SELECT_ANALOGUE_SERVICE = 0x92,
75 CEC_OPCODE_SELECT_DIGITAL_SERVICE = 0x93,
76 CEC_OPCODE_TUNER_DEVICE_STATUS = 0x07,
77 CEC_OPCODE_TUNER_STEP_DECREMENT = 0x06,
78 CEC_OPCODE_TUNER_STEP_INCREMENT = 0x05,
79 CEC_OPCODE_DEVICE_VENDOR_ID = 0x87,
80 CEC_OPCODE_GIVE_DEVICE_VENDOR_ID = 0x8C,
81 CEC_OPCODE_VENDOR_COMMAND = 0x89,
82 CEC_OPCODE_VENDOR_COMMAND_WITH_ID = 0xA0,
83 CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN = 0x8A,
84 CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP = 0x8B,
85 CEC_OPCODE_SET_OSD_STRING = 0x64,
86 CEC_OPCODE_GIVE_OSD_NAME = 0x46,
87 CEC_OPCODE_SET_OSD_NAME = 0x47,
88 CEC_OPCODE_MENU_REQUEST = 0x8D,
89 CEC_OPCODE_MENU_STATUS = 0x8E,
90 CEC_OPCODE_USER_CONTROL_PRESSED = 0x44,
91 CEC_OPCODE_USER_CONTROL_RELEASE = 0x45,
92 CEC_OPCODE_GIVE_DEVICE_POWER_STATUS = 0x8F,
93 CEC_OPCODE_REPORT_POWER_STATUS = 0x90,
94 CEC_OPCODE_FEATURE_ABORT = 0x00,
95 CEC_OPCODE_ABORT = 0xFF,
96 CEC_OPCODE_GIVE_AUDIO_STATUS = 0x71,
97 CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D,
98 CEC_OPCODE_REPORT_AUDIO_STATUS = 0x7A,
99 CEC_OPCODE_SET_SYSTEM_AUDIO_MODE = 0x72,
100 CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST = 0x70,
101 CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS = 0x7E,
102 CEC_OPCODE_SET_AUDIO_RATE = 0x9A
103 } ECecOpcode;
104
105 typedef enum
106 {
107 CEC_ABORT_REASON_UNRECOGNIZED_OPCODE = 0,
108 CEC_ABORT_REASON_NOT_IN_CORRECT_MODE_TO_RESPOND = 1,
109 CEC_ABORT_REASON_CANNOT_PROVIDE_SOURCE = 2,
110 CEC_ABORT_REASON_INVALID_OPERAND = 3,
111 CEC_ABORT_REASON_REFUSED = 4
112 } ECecAbortReason;
113
114 typedef enum
115 {
116 CEC_ANALOGUE_BROADCAST_TYPE_CABLE = 0x00,
117 CEC_ANALOGUE_BROADCAST_TYPE_SATELLITE = 0x01,
118 CEC_ANALOGUE_BROADCAST_TYPE_TERRESTIAL = 0x02
119 } ECecAnalogueBroadcastType;
120
121 typedef enum
122 {
123 CEC_AUDIO_RATE_RATE_CONTROL_OFF = 0,
124 CEC_AUDIO_RATE_STANDARD_RATE_100 = 1,
125 CEC_AUDIO_RATE_FAST_RATE_MAX_101 = 2,
126 CEC_AUDIO_RATE_SLOW_RATE_MIN_99 = 3,
127 CEC_AUDIO_RATE_STANDARD_RATE_100_0 = 4,
128 CEC_AUDIO_RATE_FAST_RATE_MAX_100_1 = 5,
129 CEC_AUDIO_RATE_SLOW_RATE_MIN_99_9 = 6
130 } ECecAudioRate;
131
132 typedef enum
133 {
134 CEC_AUDIO_MUTE_STATUS_MASK = 0x80,
135 CEC_AUDIO_VOLUME_STATUS_MASK = 0x7F,
136 CEC_AUDIO_VOLUME_MIN = 0x00,
137 CEC_AUDIO_VOLUME_MAX = 0x64,
138 CEC_AUDIO_VOLUME_STATUS_UNKNOWN = 0x7F
139 } ECecAudioStatus;
140
141 typedef enum
142 {
143 CEC_FALSE = 0,
144 CEC_TRUE = 1
145 } ECecBoolean;
146
147 typedef enum
148 {
149 CEC_VERSION_1_2 = 0x01,
150 CEC_VERSION_1_2A = 0x02,
151 CEC_VERSION_1_3 = 0x03,
152 CEC_VERSION_1_3A = 0x04
153 } ECecVersion;
154
155 typedef enum
156 {
157 CEC_CHANNEL_NUMBER_FORMAT_MASK = 0xFC000000,
158 CEC_1_PART_CHANNEL_NUMBER = 0x04000000,
159 CEC_2_PART_CHANNEL_NUMBER = 0x08000000,
160 CEC_MAJOR_CHANNEL_NUMBER_MASK = 0x3FF0000,
161 CEC_MINOR_CHANNEL_NUMBER_MASK = 0xFFFF
162 } ECecChannelIdentifier;
163
164 typedef enum
165 {
166 CEC_DESK_CONTROL_MODE_SKIP_FORWARD_WIND = 1,
167 CEC_DESK_CONTROL_MODE_SKIP_REVERSE_REWIND = 2,
168 CEC_DESK_CONTROL_MODE_STOP = 3,
169 CEC_DESK_CONTROL_MODE_EJECT = 4
170 } ECecDeskControlMode;
171
172 typedef enum
173 {
174 CEC_DECK_INFO_PLAY = 0x11,
175 CEC_DECK_INFO_RECORD = 0x12,
176 CEC_DECK_INFO_PLAY_REVERSE = 0x13,
177 CEC_DECK_INFO_STILL = 0x14,
178 CEC_DECK_INFO_SLOW = 0x15,
179 CEC_DECK_INFO_SLOW_REVERSE = 0x16,
180 CEC_DECK_INFO_FAST_FORWARD = 0x17,
181 CEC_DECK_INFO_FAST_REVERSE = 0x18,
182 CEC_DECK_INFO_NO_MEDIA = 0x19,
183 CEC_DECK_INFO_STOP = 0x1A,
184 CEC_DECK_INFO_SKIP_FORWARD_WIND = 0x1B,
185 CEC_DECK_INFO_SKIP_REVERSE_REWIND = 0x1C,
186 CEC_DECK_INFO_INDEX_SEARCH_FORWARD = 0x1D,
187 CEC_DECK_INFO_INDEX_SEARCH_REVERSE = 0x1E,
188 CEC_DECK_INFO_OTHER_STATUS = 0x1F
189 } ECecDeckInfo;
190
191 typedef enum
192 {
193 CEC_DEVICE_TYPE_TV = 0,
194 CEC_DEVICE_TYPE_RECORDING_DEVICE = 1,
195 CEC_DEVICE_TYPE_RESERVED = 2,
196 CEC_DEVICE_TYPE_TUNER = 3,
197 CEC_DEVICE_TYPE_PLAYBACK_DEVICE = 4,
198 CEC_DEVICE_TYPE_AUDIO_SYSTEM = 5
199 } ECecDeviceType;
200
201 typedef enum
202 {
203 CEC_DISPLAY_CONTROL_DISPLAY_FOR_DEFAULT_TIME = 0x00,
204 CEC_DISPLAY_CONTROL_DISPLAY_UNTIL_CLEARED = 0x40,
205 CEC_DISPLAY_CONTROL_CLEAR_PREVIOUS_MESSAGE = 0x80,
206 CEC_DISPLAY_CONTROL_RESERVED_FOR_FUTURE_USE = 0xC0
207 } ECecDisplayControl;
208
209 typedef enum
210 {
211 CEC_EXTERNAL_SOURCE_SPECIFIER_EXTERNAL_PLUG = 4,
212 CEC_EXTERNAL_SOURCE_SPECIFIER_EXTERNAL_PHYSICAL_ADDRESS = 5
213 } ECecExternalSourceSpecifier;
214
215 typedef enum
216 {
217 CEC_MENU_REQUEST_TYPE_ACTIVATE = 0,
218 CEC_MENU_REQUEST_TYPE_DEACTIVATE = 1,
219 CEC_MENU_REQUEST_TYPE_QUERY = 2
220 } ECecMenuRequestType;
221
222 typedef enum
223 {
224 CEC_MENU_STATE_ACTIVATED = 0,
225 CEC_MENU_STATE_DEACTIVATED = 1
226 } ECecMenuState;
227
228 typedef enum
229 {
230 CEC_PLAY_MODE_PLAY_FORWARD = 0x24,
231 CEC_PLAY_MODE_PLAY_REVERSE = 0x20,
232 CEC_PLAY_MODE_PLAY_STILL = 0x25,
233 CEC_PLAY_MODE_FAST_FORWARD_MIN_SPEED = 0x05,
234 CEC_PLAY_MODE_FAST_FORWARD_MEDIUM_SPEED = 0x06,
235 CEC_PLAY_MODE_FAST_FORWARD_MAX_SPEED = 0x07,
236 CEC_PLAY_MODE_FAST_REVERSE_MIN_SPEED = 0x09,
237 CEC_PLAY_MODE_FAST_REVERSE_MEDIUM_SPEED = 0x0A,
238 CEC_PLAY_MODE_FAST_REVERSE_MAX_SPEED = 0x0B,
239 CEC_PLAY_MODE_SLOW_FORWARD_MIN_SPEED = 0x15,
240 CEC_PLAY_MODE_SLOW_FORWARD_MEDIUM_SPEED = 0x16,
241 CEC_PLAY_MODE_SLOW_FORWARD_MAX_SPEED = 0x17,
242 CEC_PLAY_MODE_SLOW_REVERSE_MIN_SPEED = 0x19,
243 CEC_PLAY_MODE_SLOW_REVERSE_MEDIUM_SPEED = 0x1A,
244 CEC_PLAY_MODE_SLOW_REVERSE_MAX_SPEED = 0x1B
245 } ECecPlayMode;
246
247 typedef enum
248 {
249 CEC_POWER_STATUS_ON = 0x00,
250 CEC_POWER_STATUS_STANDBY = 0x01,
251 CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON = 0x02,
252 CEC_POWER_STATUS_IN_TRANSITION_ON_TO_STANDBY = 0x03
253 } ECecPowerStatus;
254
255 typedef enum
256 {
257 CEC_RECORD_SOURCE_TYPE_OWN_SOURCE = 1,
258 CEC_RECORD_SOURCE_TYPE_DIGITAL_SERVICE = 2,
259 CEC_RECORD_SOURCE_TYPE_ANALOGUE_SERVICE = 3,
260 CEC_RECORD_SOURCE_TYPE_EXTERNAL_PLUS = 4,
261 CEC_RECORD_SOURCE_TYPE_EXTERNAL_PHYSICAL_ADDRESS = 5
262 } ECecRecordSourceType;
263
264 typedef enum
265 {
266 CEC_RECORD_STATUS_INFO_RECORDING_CURRENTLY_SELECTED_SOURCE = 0x01,
267 CEC_RECORD_STATUS_INFO_RECORDING_DIGITAL_SERVICE = 0x02,
268 CEC_RECORD_STATUS_INFO_RECORDING_ANALOGUE_SERVICE = 0x03,
269 CEC_RECORD_STATUS_INFO_RECORDING_EXTERNAL_INPUT = 0x04,
270 CEC_RECORD_STATUS_INFO_NO_RECORDING_UNABLE_TO_RECORD_DIGITAL_SERVICE = 0x05,
271 CEC_RECORD_STATUS_INFO_NO_RECORDING_UNABLE_TO_RECORD_ANALOGUE_SERVICE = 0x06,
272 CEC_RECORD_STATUS_INFO_NO_RECORDING_UNABLE_TO_SELECT_REQUIRED_SERVICE = 0x07,
273 CEC_RECORD_STATUS_INFO_NO_RECORDING_INVALID_EXTERNAL_PLUG_NUMBER = 0x09,
274 CEC_RECORD_STATUS_INFO_NO_RECORDING_INVALID_EXTERNAL_ADDRESS = 0x0A,
275 CEC_RECORD_STATUS_INFO_NO_RECORDING_CA_SYSTEM_NOT_SUPPORTED = 0x0B,
276 CEC_RECORD_STATUS_INFO_NO_RECORDING_NO_OR_INSUFFICIENT_ENTITLEMENTS = 0x0C,
277 CEC_RECORD_STATUS_INFO_NO_RECORDING_NOT_ALLOWED_TO_COPY_SOURCE = 0x0D,
278 CEC_RECORD_STATUS_INFO_NO_RECORDING_NO_FURTHER_COPIES_ALLOWED = 0x0E,
279 CEC_RECORD_STATUS_INFO_NO_RECORDING_NO_MEDIA = 0x10,
280 CEC_RECORD_STATUS_INFO_NO_RECORDING_PLAYING = 0x11,
281 CEC_RECORD_STATUS_INFO_NO_RECORDING_ALREADY_RECORDING = 0x12,
282 CEC_RECORD_STATUS_INFO_NO_RECORDING_MEDIA_PROTECTED = 0x13,
283 CEC_RECORD_STATUS_INFO_NO_RECORDING_NO_SOURCE_SIGNAL = 0x14,
284 CEC_RECORD_STATUS_INFO_NO_RECORDING_MEDIA_PROBLEM = 0x15,
285 CEC_RECORD_STATUS_INFO_NO_RECORDING_NOT_ENOUGH_SPACE_AVAILABLE = 0x16,
286 CEC_RECORD_STATUS_INFO_NO_RECORDING_PARENTAL_LOCK_ON = 0x17,
287 CEC_RECORD_STATUS_INFO_RECORDING_TERMINATED_NORMALLY = 0x1A,
288 CEC_RECORD_STATUS_INFO_RECORDING_HAS_ALREADY_TERMINATED = 0x1B,
289 CEC_RECORD_STATUS_INFO_NO_RECORDING_OTHER_REASON = 0x1F
290 } ECecRecordStatusInfo;
291
292 typedef enum
293 {
294 CEC_RECORDING_SEQUENCE_SUNDAY = 0x01,
295 CEC_RECORDING_SEQUENCE_MONDAY = 0x02,
296 CEC_RECORDING_SEQUENCE_TUESDAY = 0x04,
297 CEC_RECORDING_SEQUENCE_WEDNESDAY = 0x08,
298 CEC_RECORDING_SEQUENCE_THURSDAY = 0x10,
299 CEC_RECORDING_SEQUENCE_FRIDAY = 0x20,
300 CEC_RECORDING_SEQUENCE_SATURDAY = 0x40,
301 CEC_RECORDING_SEQUENCE_ONCE_ONLY = 0x00
302 } ECecRecordingSequence;
303
304 typedef enum
305 {
306 CEC_STATUS_REQUEST_ON = 1,
307 CEC_STATUS_REQUEST_OFF = 2,
308 CEC_STATUS_REQUEST_ONCE = 3
309 } ECecStatusRequest;
310
311 typedef enum
312 {
313 CEC_SYSTEM_AUDIO_STATUS_OFF = 0,
314 CEC_SYSTEM_AUDIO_STATUS_ON = 1
315 } ECecSystemAudioStatus;
316
317 typedef enum
318 {
319 CEC_TIMER_CLEARED_STATUS_DATA_TIMER_NOT_CLEARED_RECORDING = 0x00,
320 CEC_TIMER_CLEARED_STATUS_DATA_TIMER_NOT_CLEARED_NO_MATCHING = 0x01,
321 CEC_TIMER_CLEARED_STATUS_DATA_TIMER_NOT_CLEARED_NO_INF0_AVAILABLE = 0x02,
322 CEC_TIMER_CLEARED_STATUS_DATA_TIMER_CLEARED = 0x80
323 } ECecTimerClearedStatusData;
324
325 typedef enum
326 {
327 CEC_TIMER_OVERLAP_WARNING_NO_OVERLAP = 0,
328 CEC_TIMER_OVERLAP_WARNING_TIMER_BLOCKS_OVERLAP = 1
329 } ECecTimerOverlapWarning;
330
331 typedef enum
332 {
333 CEC_MEDIA_INFO_MEDIA_PRESENT_AND_NOT_PROTECTED = 0x00,
334 CEC_MEDIA_INFO_MEDIA_PRESENT_BUT_PROTECTED = 0x01,
335 CEC_MEDIA_INFO_MEDIA_NOT_PRESENT = 0x02,
336 CEC_MEDIA_INFO_FUTURE_USE = 0x03
337 } ECecMediaInfo;
338
339 typedef enum
340 {
341 CEC_PROGRAMMED_INDICATOR_NOT_PROGRAMMED = 0,
342 CEC_PROGRAMMED_INDICATOR_PROGRAMMED = 1
343 } ECecProgrammedIndicator;
344
345 typedef enum
346 {
347 CEC_PROGRAMMED_INFO_FUTURE_USE = 0x0,
348 CEC_PROGRAMMED_INFO_ENOUGH_SPACE_AVAILABLE_FOR_RECORDING = 0x08,
349 CEC_PROGRAMMED_INFO_NOT_ENOUGH_SPACE_AVAILABLE_FOR_RECORDING = 0x09,
350 CEC_PROGRAMMED_INFO_MAY_NOT_BE_ENOUGH_SPACE_AVAILABLE = 0x0B,
351 CEC_PROGRAMMED_INFO_NO_MEDIA_INFO_AVAILABLE = 0x0A
352 } ECecProgrammedInfo;
353
354 typedef enum
355 {
356 CEC_NOT_PROGRAMMED_ERROR_INFO_FUTURE_USE = 0x0,
357 CEC_NOT_PROGRAMMED_ERROR_INFO_NO_FREE_TIMER_AVAILABLE = 0x01,
358 CEC_NOT_PROGRAMMED_ERROR_INFO_DATE_OUT_OF_RANGE = 0x02,
359 CEC_NOT_PROGRAMMED_ERROR_INFO_RECORDING_SEQUENCE_ERROR = 0x03,
360 CEC_NOT_PROGRAMMED_ERROR_INFO_INVALID_EXTERNAL_PLUG_NUMBER = 0x04,
361 CEC_NOT_PROGRAMMED_ERROR_INFO_INVALID_EXTERNAL_PHYSICAL_ADDRESS = 0x05,
362 CEC_NOT_PROGRAMMED_ERROR_INFO_CA_SYSTEM_NOT_SUPPORTED = 0x06,
363 CEC_NOT_PROGRAMMED_ERROR_INFO_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS = 0x07,
364 CEC_NOT_PROGRAMMED_ERROR_INFO_DOES_NOT_SUPPORT_RESOLUTION = 0x08,
365 CEC_NOT_PROGRAMMED_ERROR_INFO_PARENTAL_LOCK_ON = 0x09,
366 CEC_NOT_PROGRAMMED_ERROR_INFO_CLOCK_FAILURE = 0x0A,
367 CEC_NOT_PROGRAMMED_ERROR_INFO_RESERVED_FOR_FUTURE_USE_START = 0x0B,
368 CEC_NOT_PROGRAMMED_ERROR_INFO_RESERVED_FOR_FUTURE_USE_END = 0x0D,
369 CEC_NOT_PROGRAMMED_ERROR_INFO_DUPLICATE_ALREADY_PROGRAMMED = 0x0E
370 } ECecNotProgrammedErrorInfo;
371
372 typedef enum
373 {
374 CEC_RECORDING_FLAG_NOT_BEING_USED_FOR_RECORDING = 0,
375 CEC_RECORDING_FLAG_BEING_USED_FOR_RECORDING = 1
376 } ECecRecordingFlag;
377
378 typedef enum
379 {
380 CEC_TUNER_DISPLAY_INFO_DISPLAYING_DIGITAL_TUNER = 0,
381 CEC_TUNER_DISPLAY_INFO_NOT_DISPLAYING_TUNER = 1,
382 CEC_TUNER_DISPLAY_INFO_DISPLAYING_ANALOGUE_TUNER = 2
383 } ECecTunerDisplayInfo;
384
385
386 typedef enum
387 {
388 CEC_BROADCAST_SYSTEM_PAL_B_G = 0,
389 CEC_BROADCAST_SYSTEM_SECAM_L1 = 1,
390 CEC_BROADCAST_SYSTEM_PAL_M = 2,
391 CEC_BROADCAST_SYSTEM_NTSC_M = 3,
392 CEC_BROADCAST_SYSTEM_PAL_I = 4,
393 CEC_BROADCAST_SYSTEM_SECAM_DK = 5,
394 CEC_BROADCAST_SYSTEM_SECAM_B_G = 6,
395 CEC_BROADCAST_SYSTEM_SECAM_L2 = 7,
396 CEC_BROADCAST_SYSTEM_PAL_DK = 8,
397 CEC_BROADCAST_SYSTEM_OTHER_SYSTEM = 30
398 } ECecBroadcastSystem;
399
400 typedef enum
401 {
402 MSGCODE_NOTHING = 0,
403 MSGCODE_PING,
404 MSGCODE_TIMEOUT_ERROR,
405 MSGCODE_HIGH_ERROR,
406 MSGCODE_LOW_ERROR,
407 MSGCODE_FRAME_START,
408 MSGCODE_FRAME_DATA,
409 MSGCODE_RECEIVE_FAILED,
410 MSGCODE_COMMAND_ACCEPTED,
411 MSGCODE_COMMAND_REJECTED,
412 MSGCODE_SET_ACK_MASK,
413 MSGCODE_TRANSMIT,
414 MSGCODE_TRANSMIT_EOM,
415 MSGCODE_TRANSMIT_IDLETIME,
416 MSGCODE_TRANSMIT_ACK_POLARITY,
417 MSGCODE_TRANSMIT_LINE_TIMEOUT,
418 MSGCODE_TRANSMIT_SUCCEEDED,
419 MSGCODE_TRANSMIT_FAILED_LINE,
420 MSGCODE_TRANSMIT_FAILED_ACK,
421 MSGCODE_TRANSMIT_FAILED_TIMEOUT_DATA,
422 MSGCODE_TRANSMIT_FAILED_TIMEOUT_LINE,
423 MSGCODE_FIRMWARE_VERSION,
424 MSGCODE_START_BOOTLOADER,
425 MSGCODE_FRAME_EOM = 0x80,
426 MSGCODE_FRAME_ACK = 0x40,
427 } ECecMessageCode;
428
429 //default physical address 1.0.0.0
430 #define CEC_DEFAULT_PHYSICAL_ADDRESS 0x1000
431 #define MSGSTART 0xFF
432 #define MSGEND 0xFE
433 #define MSGESC 0xFD
434 #define ESCOFFSET 3