CEC_DEVICE_TYPE_AUDIO_SYSTEM = 5
} ECecDeviceType;
-typedef enum
+typedef enum cec_display_control
{
CEC_DISPLAY_CONTROL_DISPLAY_FOR_DEFAULT_TIME = 0x00,
CEC_DISPLAY_CONTROL_DISPLAY_UNTIL_CLEARED = 0x40,
CEC_DISPLAY_CONTROL_CLEAR_PREVIOUS_MESSAGE = 0x80,
CEC_DISPLAY_CONTROL_RESERVED_FOR_FUTURE_USE = 0xC0
-} ECecDisplayControl;
+} cec_display_control;
typedef enum
{
CEC_USER_CONTROL_CODE_UNKNOWN
} cec_user_control_code;
+typedef enum cec_an_user_control_code
+{
+ CEC_AN_USER_CONTROL_CODE_RETURN = 0x91
+} cec_an_user_control_code;
+
typedef enum cec_logical_address
{
CECDEVICE_UNKNOWN = -1, //not a valid logical address
typedef enum cec_log_level
{
- CEC_LOG_DEBUG = 0,
- CEC_LOG_NOTICE,
- CEC_LOG_WARNING,
- CEC_LOG_ERROR
+ CEC_LOG_ERROR = 1,
+ CEC_LOG_WARNING = 2,
+ CEC_LOG_NOTICE = 4,
+ CEC_LOG_TRAFFIC = 8,
+ CEC_LOG_DEBUG = 16,
+ CEC_LOG_ALL = 31
} cec_log_level;
typedef struct cec_log_message
void push_back(uint8_t data)
{
- if (!opcode_set)
+ if (initiator == CECDEVICE_UNKNOWN && destination == CECDEVICE_UNKNOWN)
+ {
+ initiator = (cec_logical_address) (data >> 4);
+ destination = (cec_logical_address) (data & 0xF);
+ }
+ else if (!opcode_set)
{
opcode_set = 1;
opcode = (cec_opcode) data;
typedef enum cec_vendor_id
{
- CEC_VENDOR_SAMSUNG = 240,
+ CEC_VENDOR_SAMSUNG = 0x00F0,
+ CEC_VENDOR_LG = 0xE091,
CEC_VENDOR_UNKNOWN = 0
} vendor_id;
-//default physical address 1.0.0.0
+//default physical address 1.0.0.0, HDMI port 1
#define CEC_DEFAULT_PHYSICAL_ADDRESS 0x1000
#define MSGSTART 0xFF
#define MSGEND 0xFE
#define MSGESC 0xFD
#define ESCOFFSET 3
-#define CEC_MIN_VERSION 6
-#define CEC_LIB_VERSION 7
+#define CEC_MIN_VERSION 8
+#define CEC_LIB_VERSION 8
#define CEC_BUTTON_TIMEOUT 500
#ifdef __cplusplus