41#if defined(_WIN32) || defined(_WIN64) || defined(_M_ARM64)
42#define CEC_CDECL __cdecl
48#if defined(_WIN32) || defined(_WIN64) || defined(_M_ARM64)
51#define DECLSPEC __declspec(dllexport)
53#define DECLSPEC __declspec(dllimport)
69#define CEC_DEFAULT_PHYSICAL_ADDRESS 0x1000
73#define CEC_DEFAULT_HDMI_PORT 1
77#define CEC_DEFAULT_BASE_DEVICE 0
82#define CEC_BUTTON_TIMEOUT 500
89#define CEC_BUTTON_RELEASE_BACKSTOP_MS 5000
94#define CEC_DOUBLE_TAP_TIMEOUT_MS 200
99#define CEC_BUTTON_REPEAT_DELAY_MS 200
104#define CEC_POWER_STATE_REFRESH_TIME 30000
109#define CEC_AUDIO_STATUS_REFRESH_TIME 200
114#define CEC_FW_VERSION_UNKNOWN 0xFFFF
119#define CEC_FW_BUILD_UNKNOWN 0
124#define CEC_CONNECT_TRIES 3
129#define CEC_PHYSICAL_ADDRESS_TV 0
134#define CEC_MIN_PHYSICAL_ADDRESS 0x1000
139#define CEC_MAX_PHYSICAL_ADDRESS 0xFFFE
144#define CEC_INVALID_PHYSICAL_ADDRESS 0xFFFF
149#define CEC_MIN_VENDORID 1
154#define CEC_MAX_VENDORID 0xFFFFFE
159#define CEC_INVALID_VENDORID 0xFFFFFF
164#define CEC_MIN_HDMI_PORTNUMBER 1
169#define CEC_MAX_HDMI_PORTNUMBER 15
174#define CEC_HDMI_PORTNUMBER_NONE 0
179#define CEC_DEFAULT_SETTING_ACTIVATE_SOURCE 1
184#define CEC_DEFAULT_SETTING_POWER_OFF_SHUTDOWN 1
189#define CEC_DEFAULT_SETTING_POWER_OFF_ON_STANDBY 1
194#define CEC_DEFAULT_DEVICE_LANGUAGE "eng"
199#define CEC_DEFAULT_SETTING_AUTODETECT_ADDRESS 0
204#define CEC_DEFAULT_SETTING_GET_SETTINGS_FROM_ROM 0
209#define CEC_DEFAULT_SETTING_CEC_VERSION 0x05
214#define CEC_DEFAULT_TRANSMIT_RETRY_WAIT 500
219#define CEC_DEFAULT_TRANSMIT_TIMEOUT 1000
224#define CEC_DEFAULT_TRANSMIT_WAIT 1000
229#define CEC_DEFAULT_TRANSMIT_RETRIES 1
234#define CEC_DEFAULT_CONNECT_TIMEOUT 10000
239#define CEC_DEFAULT_CONNECT_RETRY_WAIT 1000
244#define CEC_SERIAL_DEFAULT_BAUDRATE 38400
249#define CEC_CLEAR_INPUT_DEFAULT_WAIT 1000
254#define CEC_ACTIVE_SOURCE_SWITCH_RETRY_TIME_MS 1000
259#define CEC_FORWARD_STANDBY_MIN_INTERVAL 10000
264#define CEC_DEFAULT_COMBO_TIMEOUT_MS 1000
269#define CEC_RPI_VIRTUAL_PATH "Raspberry Pi"
274#define CEC_RPI_VIRTUAL_COM "RPI"
279#define CEC_TDA995x_PATH "/dev/hdmicec"
284#define CEC_TDA995x_VIRTUAL_COM "CuBox"
289#define CEC_EXYNOS_PATH "/dev/CEC"
294#define CEC_EXYNOS_VIRTUAL_COM "Exynos"
299#define CEC_MAX_DATA_PACKET_SIZE (16 * 4)
306#define CEC_MAX_FRAME_SIZE 16
311#define CEC_LINUX_PATH "/dev/cec0"
319#define CEC_LINUX_PATH_FORMAT "/dev/cec%u"
320#define CEC_LINUX_PATH_PREFIX "/dev/cec"
321#define CEC_LINUX_MAX_DEVICES 32
326#define CEC_LINUX_VIRTUAL_COM "Linux"
331#define CEC_AOCEC_PATH "/dev/aocec"
336#define CEC_AOCEC_VIRTUAL_COM "AOCEC"
341#define CEC_IMX_PATH "/dev/mxc_hdmi_cec"
346#define CEC_IMX_VIRTUAL_COM "i.MX"
351#define CEC_MIN_LIB_VERSION 4
358#define DOUBLE_TAP_TIMEOUT_UNIT_SIZE (50)
361#define CEC_FEATURE_CONFIGURABLE_COMBO_KEY 1
960 char strComPath[1024];
961 char strComName[1024];
968 char strDeviceName[64];
971#if defined(__cplusplus)
979 iFirmwareBuildDate(0),
980 adapterType(ADAPTERTYPE_UNKNOWN)
1018 for (uint8_t iPtr = 0; iPtr < packet.
size; iPtr++)
1019 PushBack(packet[iPtr]);
1026 if (size != packet.
size)
1028 for (uint8_t iPtr = 0; iPtr < size; iPtr++)
1029 if (packet.
data[iPtr] != data[iPtr])
1044 uint8_t
operator[](uint8_t pos)
const {
return pos < size ? data[pos] : 0; }
1050 uint8_t
At(uint8_t pos)
const {
return pos < size ? data[pos] : 0; }
1058 if (iShiftBy >= size)
1064 for (uint8_t iPtr = 0; iPtr < size; iPtr++)
1065 data[iPtr] = (iPtr + iShiftBy < size) ? data[iPtr + iShiftBy] : 0;
1066 size = (uint8_t) (size - iShiftBy);
1085 memset(data, 0,
sizeof(data));
1125 return parameters.
size + opcode_set + 1;
1143 int Serialize(uint8_t* buffer, uint8_t iBufSize,
bool bWithHeader =
true)
const
1145 const uint8_t iNeeded = (uint8_t) (bWithHeader ? Size() : Size() - 1);
1151 buffer[iPtr++] = (uint8_t) (((uint8_t)initiator << 4) | ((uint8_t)destination & 0x0f));
1155 buffer[iPtr++] = (uint8_t)opcode;
1156 for (uint8_t iParam = 0; iParam < parameters.
size; ++iParam)
1157 buffer[iPtr++] = parameters[iParam];
1177 if (opcode != CEC_OPCODE_NONE)
1190 if (initiator == CECDEVICE_UNKNOWN && destination == CECDEVICE_UNKNOWN)
1192 initiator = (cec_logical_address) (data >> 4);
1193 destination = (cec_logical_address) (data & 0xF);
1195 else if (!opcode_set)
1198 opcode = (cec_opcode) data;
1209 initiator = CECDEVICE_UNKNOWN;
1210 destination = CECDEVICE_UNKNOWN;
1214 opcode = CEC_OPCODE_FEATURE_ABORT;
1223 case CEC_OPCODE_REQUEST_ACTIVE_SOURCE:
1224 return CEC_OPCODE_ACTIVE_SOURCE;
1225 case CEC_OPCODE_GET_CEC_VERSION:
1226 return CEC_OPCODE_CEC_VERSION;
1227 case CEC_OPCODE_GIVE_PHYSICAL_ADDRESS:
1228 return CEC_OPCODE_REPORT_PHYSICAL_ADDRESS;
1229 case CEC_OPCODE_GET_MENU_LANGUAGE:
1230 return CEC_OPCODE_SET_MENU_LANGUAGE;
1231 case CEC_OPCODE_GIVE_DECK_STATUS:
1232 return CEC_OPCODE_DECK_STATUS;
1233 case CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS:
1234 return CEC_OPCODE_TUNER_DEVICE_STATUS;
1235 case CEC_OPCODE_GIVE_DEVICE_VENDOR_ID:
1236 return CEC_OPCODE_DEVICE_VENDOR_ID;
1237 case CEC_OPCODE_GIVE_OSD_NAME:
1238 return CEC_OPCODE_SET_OSD_NAME;
1239 case CEC_OPCODE_MENU_REQUEST:
1240 return CEC_OPCODE_MENU_STATUS;
1241 case CEC_OPCODE_GIVE_DEVICE_POWER_STATUS:
1242 return CEC_OPCODE_REPORT_POWER_STATUS;
1243 case CEC_OPCODE_GIVE_AUDIO_STATUS:
1244 return CEC_OPCODE_REPORT_AUDIO_STATUS;
1245 case CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS:
1246 return CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS;
1247 case CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST:
1248 return CEC_OPCODE_SET_SYSTEM_AUDIO_MODE;
1253 return CEC_OPCODE_NONE;
1258 for (
size_t iPtr = 0; iPtr < len; iPtr++)
1259 PushBack(data[iPtr]);
1266 cec_device_type types[5];
1274 for (
unsigned int iPtr = 0; iPtr < 5; iPtr++)
1275 types[iPtr] = CEC_DEVICE_TYPE_RESERVED;
1282 void Add(
const cec_device_type type)
1284 for (
unsigned int iPtr = 0; iPtr < 5; iPtr++)
1286 if (types[iPtr] == CEC_DEVICE_TYPE_RESERVED)
1301 bool bReturn(
false);
1302 for (
unsigned int iPtr = 0; !bReturn && iPtr < 5; iPtr++)
1304 if (types[iPtr] == type)
1316 for (
unsigned int iPtr = 0; bReturn && iPtr < 5; iPtr++)
1318 if (types[iPtr] != CEC_DEVICE_TYPE_RESERVED)
1329 cec_device_type
operator[](uint8_t pos)
const {
return pos < 5 ? types[pos] : CEC_DEVICE_TYPE_RESERVED; }
1334 for (uint8_t iPtr = 0; iPtr < 5; iPtr++)
1335 bEqual &= (types[iPtr] == other[iPtr]);
1341 return !(*
this == other);
1357 primary = CECDEVICE_UNREGISTERED;
1358 for (
unsigned int iPtr = 0; iPtr < 16; iPtr++)
1359 addresses[iPtr] = 0;
1367 return primary == CECDEVICE_UNREGISTERED;
1377 for (
unsigned int iPtr = 0; iPtr < 16; iPtr++)
1378 if (addresses[iPtr] == 1)
1379 mask |= 0x1 << iPtr;
1387 void Set(cec_logical_address address)
1389 if (primary == CECDEVICE_UNREGISTERED)
1392 addresses[(int) address] = 1;
1399 void Unset(
const cec_logical_address address)
1401 if (primary == address)
1402 primary = CECDEVICE_UNREGISTERED;
1404 addresses[(int) address] = 0;
1412 bool IsSet(cec_logical_address address)
const {
return addresses[(int) address] == 1; }
1419 bool operator[](uint8_t pos)
const {
return pos < 16 ? IsSet((cec_logical_address) pos) :
false; }
1424 for (uint8_t iPtr = 0; iPtr < 16; iPtr++)
1425 bEqual &= ((addresses[(
int)iPtr] == 1) == other[iPtr]);
1431 return !(*
this == other);
1497 void (
CEC_CDECL* configurationChanged)(
void* cbparam,
const libcec_configuration* configuration);
1518 int (
CEC_CDECL* menuStateChanged)(
void* cbparam,
const cec_menu_state state);
1526 void (
CEC_CDECL* sourceActivated)(
void* cbParam,
const cec_logical_address logicalAddress,
const uint8_t bActivated);
1543 logMessage =
nullptr;
1545 commandReceived =
nullptr;
1546 configurationChanged =
nullptr;
1548 menuStateChanged =
nullptr;
1549 sourceActivated =
nullptr;
1550 commandHandler =
nullptr;
1555#if CEC_LIB_VERSION_MAJOR >= 5
1556#define LIBCEC_OSD_NAME_SIZE (15)
1558#define LIBCEC_OSD_NAME_SIZE (13)
1597#if CEC_LIB_VERSION_MAJOR >= 5
1600#if CEC_LIB_VERSION_MAJOR >= 8
1639#
if CEC_LIB_VERSION_MAJOR >= 5
1642#
if CEC_LIB_VERSION_MAJOR >= 8
1652 return !(*
this == other);
1682#if CEC_LIB_VERSION_MAJOR >= 5
1685#if CEC_LIB_VERSION_MAJOR >= 8
1697 #if CEC_DEFAULT_SETTING_POWER_OFF_SHUTDOWN == 1
1700 #if CEC_DEFAULT_SETTING_ACTIVATE_SOURCE == 1
#define CEC_DEFAULT_TRANSMIT_TIMEOUT
transmission fails when not acked within this amount of milliseconds after sending the initial packet
#define CEC_DOUBLE_TAP_TIMEOUT_MS
don't send the same key twice within this timeout in milliseconds
#define CEC_MAX_FRAME_SIZE
Maximum size of a CEC frame on the wire: 1 header byte + 1 opcode + up to 14 operands.
#define LIBCEC_OSD_NAME_SIZE
#define CEC_DEFAULT_SETTING_ACTIVATE_SOURCE
default value for settings "activate source"
#define CEC_PHYSICAL_ADDRESS_TV
physical address of the TV
#define CEC_FW_VERSION_UNKNOWN
unknown firmware version value
#define CEC_DEFAULT_BASE_DEVICE
default logical address of the device to which the adapter is connected, TV
#define CEC_FW_BUILD_UNKNOWN
unknown build date value
#define CEC_BUTTON_REPEAT_DELAY_MS
delay in milliseconds before a held button starts auto-repeating
#define CEC_BUTTON_TIMEOUT
timeout in milliseconds to send a key release event after receiving a key press
#define CEC_DEFAULT_COMBO_TIMEOUT_MS
default timeout in milliseconds for combo keys
#define CEC_DEFAULT_SETTING_POWER_OFF_ON_STANDBY
default value for settings "power off on standby"
#define CEC_DEFAULT_SETTING_GET_SETTINGS_FROM_ROM
default value for settings "get settings from ROM"
#define CEC_HDMI_PORTNUMBER_NONE
invalid HDMI port number value
#define CEC_DEFAULT_DEVICE_LANGUAGE
default value for settings "device menu language"
#define CEC_MAX_DATA_PACKET_SIZE
Maximum size of a data packet.
#define CEC_DEFAULT_SETTING_CEC_VERSION
default value for settings "libCEC CEC version"
@ CEC_PARAMETER_TYPE_UNKOWN
@ CEC_PARAMETER_TYPE_STRING
@ CEC_PROGRAMMED_INDICATOR_NOT_PROGRAMMED
@ CEC_PROGRAMMED_INDICATOR_PROGRAMMED
@ CEC_AUDIO_RATE_SLOW_RATE_MIN_99
@ CEC_AUDIO_RATE_RATE_CONTROL_OFF
@ CEC_AUDIO_RATE_SLOW_RATE_MIN_99_9
@ CEC_AUDIO_RATE_STANDARD_RATE_100
@ CEC_AUDIO_RATE_FAST_RATE_MAX_100_1
@ CEC_AUDIO_RATE_FAST_RATE_MAX_101
@ CEC_AUDIO_RATE_STANDARD_RATE_100_0
cec_not_programmed_error_info
@ CEC_NOT_PROGRAMMED_ERROR_INFO_DOES_NOT_SUPPORT_RESOLUTION
@ CEC_NOT_PROGRAMMED_ERROR_INFO_RESERVED_FOR_FUTURE_USE_START
@ CEC_NOT_PROGRAMMED_ERROR_INFO_PARENTAL_LOCK_ON
@ CEC_NOT_PROGRAMMED_ERROR_INFO_DUPLICATE_ALREADY_PROGRAMMED
@ CEC_NOT_PROGRAMMED_ERROR_INFO_CLOCK_FAILURE
@ CEC_NOT_PROGRAMMED_ERROR_INFO_RESERVED_FOR_FUTURE_USE_END
@ CEC_NOT_PROGRAMMED_ERROR_INFO_RECORDING_SEQUENCE_ERROR
@ CEC_NOT_PROGRAMMED_ERROR_INFO_NO_FREE_TIMER_AVAILABLE
@ CEC_NOT_PROGRAMMED_ERROR_INFO_INVALID_EXTERNAL_PHYSICAL_ADDRESS
@ CEC_NOT_PROGRAMMED_ERROR_INFO_FUTURE_USE
@ CEC_NOT_PROGRAMMED_ERROR_INFO_INVALID_EXTERNAL_PLUG_NUMBER
@ CEC_NOT_PROGRAMMED_ERROR_INFO_CA_SYSTEM_NOT_SUPPORTED
@ CEC_NOT_PROGRAMMED_ERROR_INFO_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS
@ CEC_NOT_PROGRAMMED_ERROR_INFO_DATE_OUT_OF_RANGE
@ CEC_VENDOR_HARMAN_KARDON2
@ CEC_VENDOR_HARMAN_KARDON
@ CEC_DECK_INFO_SKIP_REVERSE_REWIND
@ CEC_DECK_INFO_OTHER_STATUS_LG
@ CEC_DECK_INFO_SKIP_FORWARD_WIND
@ CEC_DECK_INFO_OTHER_STATUS
@ CEC_DECK_INFO_INDEX_SEARCH_FORWARD
@ CEC_DECK_INFO_FAST_REVERSE
@ CEC_DECK_INFO_FAST_FORWARD
@ CEC_DECK_INFO_SLOW_REVERSE
@ CEC_DECK_INFO_INDEX_SEARCH_REVERSE
@ CEC_DECK_INFO_PLAY_REVERSE
@ CEC_DEVICE_STATUS_NOT_PRESENT
@ CEC_DEVICE_STATUS_HANDLED_BY_LIBCEC
@ CEC_DEVICE_STATUS_UNKNOWN
@ CEC_DEVICE_STATUS_PRESENT
cec_analogue_broadcast_type
@ CEC_ANALOGUE_BROADCAST_TYPE_CABLE
@ CEC_ANALOGUE_BROADCAST_TYPE_TERRESTIAL
@ CEC_ANALOGUE_BROADCAST_TYPE_SATELLITE
@ CEC_ALERT_SERVICE_DEVICE
@ CEC_ALERT_PERMISSION_ERROR
@ CEC_ALERT_CONNECTION_LOST
@ CEC_ALERT_TV_POLL_FAILED
@ CEC_ALERT_PHYSICAL_ADDRESS_ERROR
@ CEC_STATUS_REQUEST_ONCE
@ CEC_SYSTEM_AUDIO_STATUS_ON
@ CEC_SYSTEM_AUDIO_STATUS_OFF
@ CEC_SYSTEM_AUDIO_STATUS_UNKNOWN
@ CEC_ABORT_REASON_NOT_IN_CORRECT_MODE_TO_RESPOND
CEC_ABORT_REASON_NOT_IN_CORRECT_MODE_TO_RESPOND.
@ CEC_ABORT_REASON_INVALID_OPERAND
CEC_ABORT_REASON_INVALID_OPERAND.
@ CEC_ABORT_REASON_CANNOT_PROVIDE_SOURCE
CEC_ABORT_REASON_CANNOT_PROVIDE_SOURCE.
@ CEC_ABORT_REASON_UNRECOGNIZED_OPCODE
CEC_ABORT_REASON_UNRECOGNIZED_OPCODE.
@ CEC_ABORT_REASON_REFUSED
CEC_ABORT_REASON_REFUSED.
@ CEC_POWER_STATUS_UNKNOWN
@ CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON
@ CEC_POWER_STATUS_STANDBY
@ CEC_POWER_STATUS_IN_TRANSITION_ON_TO_STANDBY
cec_timer_overlap_warning
@ CEC_TIMER_OVERLAP_WARNING_NO_OVERLAP
@ CEC_TIMER_OVERLAP_WARNING_TIMER_BLOCKS_OVERLAP
@ CEC_PROGRAMMED_INFO_MAY_NOT_BE_ENOUGH_SPACE_AVAILABLE
@ CEC_PROGRAMMED_INFO_NO_MEDIA_INFO_AVAILABLE
@ CEC_PROGRAMMED_INFO_ENOUGH_SPACE_AVAILABLE_FOR_RECORDING
@ CEC_PROGRAMMED_INFO_NOT_ENOUGH_SPACE_AVAILABLE_FOR_RECORDING
@ CEC_PROGRAMMED_INFO_FUTURE_USE
libcec_version
force exporting through swig
@ CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST
@ CEC_OPCODE_USER_CONTROL_PRESSED
@ CEC_OPCODE_GET_CEC_VERSION
@ CEC_OPCODE_IMAGE_VIEW_ON
@ CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN
@ CEC_OPCODE_VENDOR_COMMAND
@ CEC_OPCODE_GIVE_AUDIO_STATUS
@ CEC_OPCODE_SET_STREAM_PATH
@ CEC_OPCODE_REQUEST_SHORT_AUDIO_DESCRIPTORS
@ CEC_OPCODE_TUNER_STEP_DECREMENT
@ CEC_OPCODE_MENU_REQUEST
@ CEC_OPCODE_CLEAR_EXTERNAL_TIMER
@ CEC_OPCODE_SET_TIMER_PROGRAM_TITLE
@ CEC_OPCODE_GIVE_DEVICE_VENDOR_ID
@ CEC_OPCODE_SET_DIGITAL_TIMER
@ CEC_OPCODE_REQUEST_ARC_START
@ CEC_OPCODE_DEVICE_VENDOR_ID
@ CEC_OPCODE_SET_MENU_LANGUAGE
@ CEC_OPCODE_REQUEST_ACTIVE_SOURCE
@ CEC_OPCODE_SET_ANALOGUE_TIMER
@ CEC_OPCODE_REQUEST_ARC_END
@ CEC_OPCODE_REPORT_ARC_STARTED
@ CEC_OPCODE_RECORD_STATUS
@ CEC_OPCODE_INACTIVE_SOURCE
@ CEC_OPCODE_GIVE_DECK_STATUS
@ CEC_OPCODE_SELECT_DIGITAL_SERVICE
@ CEC_OPCODE_SET_OSD_STRING
@ CEC_OPCODE_TUNER_DEVICE_STATUS
@ CEC_OPCODE_REPORT_POWER_STATUS
@ CEC_OPCODE_RECORD_TV_SCREEN
@ CEC_OPCODE_REPORT_SHORT_AUDIO_DESCRIPTORS
@ CEC_OPCODE_GIVE_DEVICE_POWER_STATUS
@ CEC_OPCODE_CLEAR_ANALOGUE_TIMER
@ CEC_OPCODE_SET_OSD_NAME
@ CEC_OPCODE_REPORT_PHYSICAL_ADDRESS
@ CEC_OPCODE_USER_CONTROL_RELEASE
@ CEC_OPCODE_ROUTING_CHANGE
@ CEC_OPCODE_CLEAR_DIGITAL_TIMER
@ CEC_OPCODE_ROUTING_INFORMATION
@ CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS
@ CEC_OPCODE_REPORT_ARC_ENDED
@ CEC_OPCODE_SELECT_ANALOGUE_SERVICE
@ CEC_OPCODE_SET_SYSTEM_AUDIO_MODE
@ CEC_OPCODE_TEXT_VIEW_ON
@ CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP
@ CEC_OPCODE_REPORT_AUDIO_STATUS
@ CEC_OPCODE_TIMER_CLEARED_STATUS
@ CEC_OPCODE_SET_EXTERNAL_TIMER
@ CEC_OPCODE_FEATURE_ABORT
@ CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS
@ CEC_OPCODE_VENDOR_COMMAND_WITH_ID
@ CEC_OPCODE_ACTIVE_SOURCE
@ CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS
@ CEC_OPCODE_DECK_CONTROL
@ CEC_OPCODE_GET_MENU_LANGUAGE
@ CEC_OPCODE_GIVE_PHYSICAL_ADDRESS
@ CEC_OPCODE_TIMER_STATUS
@ CEC_OPCODE_SET_AUDIO_RATE
@ CEC_OPCODE_GIVE_OSD_NAME
@ CEC_OPCODE_TUNER_STEP_INCREMENT
@ ADAPTERTYPE_P8_EXTERNAL
@ ADAPTERTYPE_P8_DAUGHTERBOARD
@ CEC_MEDIA_INFO_MEDIA_NOT_PRESENT
@ CEC_MEDIA_INFO_MEDIA_PRESENT_BUT_PROTECTED
@ CEC_MEDIA_INFO_FUTURE_USE
@ CEC_MEDIA_INFO_MEDIA_PRESENT_AND_NOT_PROTECTED
@ CEC_MENU_STATE_ACTIVATED
@ CEC_MENU_STATE_DEACTIVATED
@ CEC_AUDIO_MUTE_STATUS_MASK
@ CEC_AUDIO_VOLUME_STATUS_MASK
@ CEC_AUDIO_VOLUME_STATUS_UNKNOWN
@ CECDEVICE_RECORDINGDEVICE1
@ CECDEVICE_RECORDINGDEVICE2
@ CECDEVICE_RECORDINGDEVICE3
@ CECDEVICE_PLAYBACKDEVICE2
@ CECDEVICE_PLAYBACKDEVICE1
@ CECDEVICE_PLAYBACKDEVICE3
@ CEC_DISPLAY_CONTROL_CLEAR_PREVIOUS_MESSAGE
@ CEC_DISPLAY_CONTROL_DISPLAY_FOR_DEFAULT_TIME
@ CEC_DISPLAY_CONTROL_DISPLAY_UNTIL_CLEARED
@ CEC_DISPLAY_CONTROL_RESERVED_FOR_FUTURE_USE
@ CEC_USER_CONTROL_CODE_TOP_MENU
@ CEC_USER_CONTROL_CODE_CONTENTS_MENU
@ CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION
@ CEC_USER_CONTROL_CODE_SETUP_MENU
@ CEC_USER_CONTROL_CODE_TUNE_FUNCTION
@ CEC_USER_CONTROL_CODE_SOUND_SELECT
@ CEC_USER_CONTROL_CODE_INITIAL_CONFIGURATION
@ CEC_USER_CONTROL_CODE_LEFT_DOWN
@ CEC_USER_CONTROL_CODE_FAST_FORWARD
@ CEC_USER_CONTROL_CODE_NUMBER_ENTRY_MODE
@ CEC_USER_CONTROL_CODE_LEFT
@ CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION
@ CEC_USER_CONTROL_CODE_DVD_MENU
@ CEC_USER_CONTROL_CODE_RECORD_FUNCTION
@ CEC_USER_CONTROL_CODE_NUMBER1
@ CEC_USER_CONTROL_CODE_SELECT_MEDIA_FUNCTION
@ CEC_USER_CONTROL_CODE_NUMBER6
@ CEC_USER_CONTROL_CODE_RIGHT_DOWN
@ CEC_USER_CONTROL_CODE_PAUSE
@ CEC_USER_CONTROL_CODE_VOLUME_UP
@ CEC_USER_CONTROL_CODE_NUMBER7
@ CEC_USER_CONTROL_CODE_DOWN
@ CEC_USER_CONTROL_CODE_F3_GREEN
@ CEC_USER_CONTROL_CODE_PAGE_UP
@ CEC_USER_CONTROL_CODE_F5
@ CEC_USER_CONTROL_CODE_NEXT_FAVORITE
@ CEC_USER_CONTROL_CODE_UNKNOWN
@ CEC_USER_CONTROL_CODE_BACKWARD
@ CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION
@ CEC_USER_CONTROL_CODE_NUMBER12
@ CEC_USER_CONTROL_CODE_FORWARD
@ CEC_USER_CONTROL_CODE_NUMBER3
@ CEC_USER_CONTROL_CODE_EXIT
@ CEC_USER_CONTROL_CODE_VIDEO_ON_DEMAND
@ CEC_USER_CONTROL_CODE_STOP_FUNCTION
@ CEC_USER_CONTROL_CODE_SUB_PICTURE
@ CEC_USER_CONTROL_CODE_SELECT_BROADCAST_TYPE
@ CEC_USER_CONTROL_CODE_CHANNEL_UP
@ CEC_USER_CONTROL_CODE_REWIND
@ CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE
@ CEC_USER_CONTROL_CODE_CHANNEL_DOWN
@ CEC_USER_CONTROL_CODE_NUMBER4
@ CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION
@ CEC_USER_CONTROL_CODE_RIGHT_UP
@ CEC_USER_CONTROL_CODE_SELECT_AV_INPUT_FUNCTION
@ CEC_USER_CONTROL_CODE_CLEAR
@ CEC_USER_CONTROL_CODE_ENTER
@ CEC_USER_CONTROL_CODE_NUMBER11
@ CEC_USER_CONTROL_CODE_PLAY
@ CEC_USER_CONTROL_CODE_NUMBER2
@ CEC_USER_CONTROL_CODE_NUMBER0
@ CEC_USER_CONTROL_CODE_RECORD
@ CEC_USER_CONTROL_CODE_PAUSE_RECORD
@ CEC_USER_CONTROL_CODE_F4_YELLOW
@ CEC_USER_CONTROL_CODE_DATA
@ CEC_USER_CONTROL_CODE_STOP
@ CEC_USER_CONTROL_CODE_NUMBER8
@ CEC_USER_CONTROL_CODE_POWER
@ CEC_USER_CONTROL_CODE_SELECT
@ CEC_USER_CONTROL_CODE_RESTORE_VOLUME_FUNCTION
@ CEC_USER_CONTROL_CODE_VOLUME_DOWN
@ CEC_USER_CONTROL_CODE_SELECT_SOUND_PRESENTATION
@ CEC_USER_CONTROL_CODE_LEFT_UP
@ CEC_USER_CONTROL_CODE_ROOT_MENU
@ CEC_USER_CONTROL_CODE_AN_CHANNELS_LIST
@ CEC_USER_CONTROL_CODE_PAUSE_RECORD_FUNCTION
@ CEC_USER_CONTROL_CODE_UP
@ CEC_USER_CONTROL_CODE_EJECT
@ CEC_USER_CONTROL_CODE_HELP
@ CEC_USER_CONTROL_CODE_MAX
@ CEC_USER_CONTROL_CODE_RIGHT
@ CEC_USER_CONTROL_CODE_PLAY_FUNCTION
@ CEC_USER_CONTROL_CODE_F1_BLUE
@ CEC_USER_CONTROL_CODE_DOT
@ CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING
@ CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL
@ CEC_USER_CONTROL_CODE_ANGLE
@ CEC_USER_CONTROL_CODE_SELECT_AUDIO_INPUT_FUNCTION
@ CEC_USER_CONTROL_CODE_INPUT_SELECT
@ CEC_USER_CONTROL_CODE_STOP_RECORD
@ CEC_USER_CONTROL_CODE_NUMBER5
@ CEC_USER_CONTROL_CODE_PAGE_DOWN
@ CEC_USER_CONTROL_CODE_FAVORITE_MENU
@ CEC_USER_CONTROL_CODE_F2_RED
@ CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION
@ CEC_USER_CONTROL_CODE_MUTE
@ CEC_USER_CONTROL_CODE_MUTE_FUNCTION
@ CEC_USER_CONTROL_CODE_NUMBER9
@ CEC_USER_CONTROL_CODE_AN_RETURN
char cec_menu_language[4]
the iso language code + (char)0
@ CEC_RECORD_SOURCE_TYPE_DIGITAL_SERVICE
@ CEC_RECORD_SOURCE_TYPE_OWN_SOURCE
@ CEC_RECORD_SOURCE_TYPE_EXTERNAL_PLUS
@ CEC_RECORD_SOURCE_TYPE_ANALOGUE_SERVICE
@ CEC_RECORD_SOURCE_TYPE_EXTERNAL_PHYSICAL_ADDRESS
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_NO_MEDIA
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_UNABLE_TO_RECORD_ANALOGUE_SERVICE
@ CEC_RECORD_STATUS_INFO_RECORDING_HAS_ALREADY_TERMINATED
@ CEC_RECORD_STATUS_INFO_RECORDING_TERMINATED_NORMALLY
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_NO_FURTHER_COPIES_ALLOWED
@ CEC_RECORD_STATUS_INFO_RECORDING_DIGITAL_SERVICE
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_NO_OR_INSUFFICIENT_ENTITLEMENTS
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_NOT_ALLOWED_TO_COPY_SOURCE
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_NO_SOURCE_SIGNAL
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_NOT_ENOUGH_SPACE_AVAILABLE
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_UNABLE_TO_RECORD_DIGITAL_SERVICE
@ CEC_RECORD_STATUS_INFO_RECORDING_ANALOGUE_SERVICE
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_INVALID_EXTERNAL_ADDRESS
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_MEDIA_PROTECTED
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_UNABLE_TO_SELECT_REQUIRED_SERVICE
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_CA_SYSTEM_NOT_SUPPORTED
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_OTHER_REASON
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_MEDIA_PROBLEM
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_ALREADY_RECORDING
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_INVALID_EXTERNAL_PLUG_NUMBER
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_PLAYING
@ CEC_RECORD_STATUS_INFO_RECORDING_EXTERNAL_INPUT
@ CEC_RECORD_STATUS_INFO_NO_RECORDING_PARENTAL_LOCK_ON
@ CEC_RECORD_STATUS_INFO_RECORDING_CURRENTLY_SELECTED_SOURCE
cec_external_source_specifier
@ CEC_EXTERNAL_SOURCE_SPECIFIER_EXTERNAL_PHYSICAL_ADDRESS
@ CEC_EXTERNAL_SOURCE_SPECIFIER_EXTERNAL_PLUG
char cec_osd_name[14]
the name of the device
@ CEC_MENU_REQUEST_TYPE_QUERY
@ CEC_MENU_REQUEST_TYPE_ACTIVATE
@ CEC_MENU_REQUEST_TYPE_DEACTIVATE
cec_timer_cleared_status_data
@ CEC_TIMER_CLEARED_STATUS_DATA_TIMER_NOT_CLEARED_RECORDING
@ CEC_TIMER_CLEARED_STATUS_DATA_TIMER_CLEARED
@ CEC_TIMER_CLEARED_STATUS_DATA_TIMER_NOT_CLEARED_NO_MATCHING
@ CEC_TIMER_CLEARED_STATUS_DATA_TIMER_NOT_CLEARED_NO_INF0_AVAILABLE
@ CEC_DEVICE_TYPE_PLAYBACK_DEVICE
@ CEC_DEVICE_TYPE_RECORDING_DEVICE
@ CEC_DEVICE_TYPE_AUDIO_SYSTEM
@ CEC_DEVICE_TYPE_RESERVED
@ CEC_DECK_CONTROL_MODE_SKIP_REVERSE_REWIND
@ CEC_DECK_CONTROL_MODE_STOP
@ CEC_DECK_CONTROL_MODE_SKIP_FORWARD_WIND
@ CEC_DECK_CONTROL_MODE_EJECT
@ CEC_PLAY_MODE_PLAY_STILL
@ CEC_PLAY_MODE_FAST_FORWARD_MIN_SPEED
@ CEC_PLAY_MODE_SLOW_FORWARD_MAX_SPEED
@ CEC_PLAY_MODE_PLAY_FORWARD
@ CEC_PLAY_MODE_SLOW_REVERSE_MAX_SPEED
@ CEC_PLAY_MODE_SLOW_FORWARD_MEDIUM_SPEED
@ CEC_PLAY_MODE_FAST_FORWARD_MAX_SPEED
@ CEC_PLAY_MODE_SLOW_FORWARD_MIN_SPEED
@ CEC_PLAY_MODE_FAST_FORWARD_MEDIUM_SPEED
@ CEC_PLAY_MODE_PLAY_REVERSE
@ CEC_PLAY_MODE_SLOW_REVERSE_MEDIUM_SPEED
@ CEC_PLAY_MODE_FAST_REVERSE_MEDIUM_SPEED
@ CEC_PLAY_MODE_SLOW_REVERSE_MIN_SPEED
@ CEC_PLAY_MODE_FAST_REVERSE_MIN_SPEED
@ CEC_PLAY_MODE_FAST_REVERSE_MAX_SPEED
@ CEC_RECORDING_SEQUENCE_FRIDAY
@ CEC_RECORDING_SEQUENCE_SATURDAY
@ CEC_RECORDING_SEQUENCE_SUNDAY
@ CEC_RECORDING_SEQUENCE_MONDAY
@ CEC_RECORDING_SEQUENCE_THURSDAY
@ CEC_RECORDING_SEQUENCE_TUESDAY
@ CEC_RECORDING_SEQUENCE_WEDNESDAY
@ CEC_RECORDING_SEQUENCE_ONCE_ONLY
@ CEC_RECORDING_FLAG_BEING_USED_FOR_RECORDING
@ CEC_RECORDING_FLAG_NOT_BEING_USED_FOR_RECORDING
@ CEC_BROADCAST_SYSTEM_PAL_M
@ CEC_BROADCAST_SYSTEM_OTHER_SYSTEM
@ CEC_BROADCAST_SYSTEM_PAL_B_G
@ CEC_BROADCAST_SYSTEM_SECAM_DK
@ CEC_BROADCAST_SYSTEM_SECAM_L1
@ CEC_BROADCAST_SYSTEM_SECAM_B_G
@ CEC_BROADCAST_SYSTEM_SECAM_L2
@ CEC_BROADCAST_SYSTEM_PAL_I
@ CEC_BROADCAST_SYSTEM_NTSC_M
@ CEC_BROADCAST_SYSTEM_PAL_DK
@ CEC_MAJOR_CHANNEL_NUMBER_MASK
@ CEC_MINOR_CHANNEL_NUMBER_MASK
@ CEC_2_PART_CHANNEL_NUMBER
@ CEC_1_PART_CHANNEL_NUMBER
@ CEC_CHANNEL_NUMBER_FORMAT_MASK
@ CEC_TUNER_DISPLAY_INFO_DISPLAYING_DIGITAL_TUNER
@ CEC_TUNER_DISPLAY_INFO_DISPLAYING_ANALOGUE_TUNER
@ CEC_TUNER_DISPLAY_INFO_NOT_DISPLAYING_TUNER
uint32_t iFirmwareBuildDate
uint16_t iPhysicalAddress
std::string strDeviceName
a human-readable display name for the adapter, e.g.
uint16_t iFirmwareVersion
std::string strComPath
the adapter's stable location: USB-tree path (Linux) / device instance id (Windows); does not change ...
AdapterDescriptor(const cec_adapter_descriptor &other)
cec_adapter_type adapterType
std::string strComName
the com port used to open the adapter, e.g.
uint16_t iFirmwareVersion
(read-only) the firmware version of the adapter.
uint32_t iButtonRepeatRateMs
rate at which buttons autorepeat.
uint32_t clientVersion
the version of the client that is connecting
ICECCallbacks * callbacks
the callback methods to use.
uint8_t bAutoPowerOn
set to 1 and save eeprom config to wake the tv when usb is powered.
uint16_t iPhysicalAddress
the physical address of the CEC adapter
bool operator!=(const libcec_configuration &other) const
uint32_t iDoubleTapTimeoutMs
prevent double taps within this timeout.
cec_version cecVersion
CEC spec version to use by libCEC.
uint32_t serverVersion
the version number of the server.
uint32_t iFirmwareBuildDate
(read-only) the build date of the firmware, in seconds since epoch.
uint8_t bAutonomousMode
set to 1 (default) to let the adapter stay active on the CEC bus when the host isn't running (ack pol...
char strDeviceLanguage[3]
the menu language used by the client.
cec_logical_addresses wakeDevices
list of devices to wake when initialising libCEC or when calling PowerOnDevices() without any paramet...
cec_adapter_type adapterType
type of the CEC adapter that we're connected to.
uint32_t iComboKeyTimeoutMs
timeout until the combo key is sent as normal keypress
cec_user_control_code comboKey
key code that initiates combo keys.
~libcec_configuration(void)
uint32_t tvVendor
override the vendor ID of the TV.
uint8_t bAutodetectAddress
(read only) set to 1 by libCEC when the physical address was autodetected
libcec_configuration(void)
cec_device_type_list deviceTypes
the device type(s) to use on the CEC bus for libCEC
cec_logical_address baseDevice
the logical address of the device to which the adapter is connected.
uint8_t bMonitorOnly
won't allocate a CCECClient when starting the connection when set (same as monitor mode).
uint8_t bPowerOffOnStandby
put this PC in standby mode when the TV is switched off.
cec_logical_addresses powerOffDevices
list of devices to power off when calling StandbyDevices() without any parameter.
void Clear(void)
Reset this configution struct to the default values.
bool operator==(const libcec_configuration &other) const
char strDeviceName[(15)]
the device name to use on the CEC bus, name + 0 terminator
uint32_t iDeviceVendorId
the vendor ID to announce for this device.
uint32_t iButtonReleaseDelayMs
duration after last update until a button is considered released
uint32_t iButtonRepeatDelayMs
delay before a held button starts auto-repeating, when iButtonRepeatRateMs is set.
uint8_t bAutoWakeAVR
set to 1 to automatically waking an AVR when the source is activated.
uint8_t bGetSettingsFromROM
true to get the settings from the ROM (if set, and a v2 ROM is present), false to use these settings.
uint8_t iHDMIPort
the HDMI port to which the adapter is connected.
cec_logical_addresses logicalAddresses
(read-only) the current logical addresses.
void * callbackParam
the object to pass along with a call of the callback methods.
uint8_t bActivateSource
make libCEC the active source on the bus when starting the player application
void(* alert)(void *cbparam, const libcec_alert alert, const libcec_parameter param)
Transfer a libcec alert message from libCEC to the client.
char strDeviceName[64]
a human-readable display name for the adapter, e.g.
uint32_t iFirmwareBuildDate
cec_adapter_type adapterType
char strComPath[1024]
the adapter's stable location: USB-tree path (Linux) / device instance id (Windows); does not change ...
uint16_t iPhysicalAddress
char strComName[1024]
the com port used to open the adapter, e.g.
uint16_t iFirmwareVersion
int32_t transmit_timeout
the timeout to use in ms
static cec_opcode GetResponseOpcode(cec_opcode opcode)
int8_t eom
1 when the EOM bit is set, 0 otherwise
cec_datapacket parameters
the parameters attached to this message
void PushArray(size_t len, const uint8_t *data)
static void Format(cec_command &command, cec_logical_address initiator, cec_logical_address destination, cec_opcode opcode, int32_t timeout=1000)
Formats a cec_command.
cec_opcode opcode
the opcode of this message
cec_logical_address initiator
the logical address of the initiator of this message
void PushBack(uint8_t data)
Push a byte to the back of this command.
int8_t opcode_set
1 when an opcode is set, 0 otherwise (POLL message)
void Clear(void)
Clear this command, resetting everything to the default values.
int8_t ack
1 when the ACK bit is set, 0 otherwise
int Serialize(uint8_t *buffer, uint8_t iBufSize, bool bWithHeader=true) const
Serialize this command as an on-wire CEC frame: [header][opcode][operands...].
cec_logical_address destination
the logical address of the destination of this message
void PushBack(uint8_t add)
Push a byte to the end of this packet.
void Clear(void)
Clear this packet.
uint8_t operator[](uint8_t pos) const
Get the byte at the requested position.
uint8_t size
the size of the data
void Shift(uint8_t iShiftBy)
Shift the contents of this packet.
uint8_t At(uint8_t pos) const
Get the byte at the requested position.
uint8_t data[(16 *4)]
the actual data
cec_device_type operator[](uint8_t pos) const
Get the type at the requested position.
void Clear(void)
Clear this list.
bool operator==(const cec_device_type_list &other) const
void Add(const cec_device_type type)
Add a type to this list.
bool IsSet(cec_device_type type)
Check whether a type is set in this list.
bool operator!=(const cec_device_type_list &other) const
cec_user_control_code keycode
the keycode
unsigned int duration
the duration of the keypress
int64_t time
the timestamp of this message
const char * message
the actual message, valid until returning from the log callback
cec_log_level level
log level of the message
void Set(cec_logical_address address)
Mark a logical address as 'set'.
bool IsSet(cec_logical_address address) const
Check whether an address is set in this list.
bool operator==(const cec_logical_addresses &other) const
bool operator!=(const cec_logical_addresses &other) const
bool operator[](uint8_t pos) const
Check whether an address is set in this list.
void Clear(void)
Clear this list.
uint16_t AckMask(void) const
Calculate the ack-mask for this list, the mask to use when determining whether to send an ack message...
cec_logical_address primary
the primary logical address to use
void Unset(const cec_logical_address address)
Mark a logical address as 'unset'.
void * paramData
the value of this parameter
libcec_parameter_type paramType
the type of this parameter