X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Fcectypes.h;h=d8376206f31d442dfb6957aa9796e48eda0a77c6;hb=66e5bd7231e47eaef8a6472856443b4acffb48bd;hp=e6cd0b4e942967783474a23cb2fcec4ffd62f399;hpb=caaf64d7c66d998adf1e66b4d8c7a53ab882215b;p=deb_libcec.git diff --git a/include/cectypes.h b/include/cectypes.h index e6cd0b4..d837620 100644 --- a/include/cectypes.h +++ b/include/cectypes.h @@ -2,7 +2,7 @@ /* * This file is part of the libCEC(R) library. * - * libCEC(R) is Copyright (C) 2011 Pulse-Eight Limited. All rights reserved. + * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited. All rights reserved. * libCEC(R) is an original work, containing original code. * * libCEC(R) is a trademark of Pulse-Eight Limited. @@ -37,6 +37,12 @@ #include #include +#if defined(_WIN32) || defined(_WIN64) +#define CEC_CDECL __cdecl +#else +#define CEC_CDECL +#endif + #if !defined(DECLSPEC) #if defined(_WIN32) || defined(_WIN64) #include @@ -64,10 +70,17 @@ namespace CEC { #define MSGESC 0xFD #define ESCOFFSET 3 #define CEC_BUTTON_TIMEOUT 500 +#define CEC_POWER_STATE_REFRESH_TIME 30000 +#define CEC_FW_VERSION_UNKNOWN 0xFFFF + +#define CEC_DEFAULT_TRANSMIT_RETRY_WAIT 500 +#define CEC_DEFAULT_TRANSMIT_TIMEOUT 1000 +#define CEC_DEFAULT_TRANSMIT_WAIT 2000 +#define CEC_DEFAULT_TRANSMIT_RETRIES 1 #define CEC_MIN_LIB_VERSION 1 #define CEC_LIB_VERSION_MAJOR 1 -#define CEC_LIB_VERSION_MINOR 2 +#define CEC_LIB_VERSION_MINOR 4 typedef enum cec_abort_reason { @@ -581,6 +594,8 @@ typedef enum cec_adapter_messagecode MSGCODE_TRANSMIT_FAILED_TIMEOUT_LINE, MSGCODE_FIRMWARE_VERSION, MSGCODE_START_BOOTLOADER, + MSGCODE_SET_POWERSTATE, + MSGCODE_SET_CONTROLLED, MSGCODE_FRAME_EOM = 0x80, MSGCODE_FRAME_ACK = 0x40, } cec_adapter_messagecode; @@ -595,13 +610,14 @@ typedef enum cec_bus_device_status typedef enum cec_vendor_id { - CEC_VENDOR_SAMSUNG = 0x00F0, - CEC_VENDOR_LG = 0xE091, - CEC_VENDOR_PANASONIC = 0x8045, - CEC_VENDOR_PIONEER = 0xE036, - CEC_VENDOR_ONKYO = 0x09B0, - CEC_VENDOR_YAMAHA = 0xA0DE, - CEC_VENDOR_PHILIPS = 0x903E, + CEC_VENDOR_SAMSUNG = 0x0000F0, + CEC_VENDOR_LG = 0x00E091, + CEC_VENDOR_PANASONIC = 0x008045, + CEC_VENDOR_PIONEER = 0x00E036, + CEC_VENDOR_ONKYO = 0x0009B0, + CEC_VENDOR_YAMAHA = 0x00A0DE, + CEC_VENDOR_PHILIPS = 0x00903E, + CEC_VENDOR_SONY = 0x080046, CEC_VENDOR_UNKNOWN = 0 } cec_vendor_id; @@ -695,7 +711,6 @@ typedef struct cec_command cec_datapacket parameters; int8_t opcode_set; int32_t transmit_timeout; - int8_t retries; #ifdef __cplusplus cec_command &operator =(const struct cec_command &command) @@ -708,12 +723,11 @@ typedef struct cec_command opcode_set = command.opcode_set; transmit_timeout = command.transmit_timeout; parameters = command.parameters; - retries = command.retries; return *this; } - static void Format(cec_command &command, cec_logical_address initiator, cec_logical_address destination, cec_opcode opcode, int32_t timeout = 1000) + static void Format(cec_command &command, cec_logical_address initiator, cec_logical_address destination, cec_opcode opcode, int32_t timeout = CEC_DEFAULT_TRANSMIT_TIMEOUT) { command.Clear(); command.initiator = initiator; @@ -750,8 +764,7 @@ typedef struct cec_command eom = 0; opcode_set = 0; opcode = CEC_OPCODE_FEATURE_ABORT; - transmit_timeout = 0; - retries = 4; + transmit_timeout = CEC_DEFAULT_TRANSMIT_TIMEOUT; parameters.Clear(); }; #endif @@ -863,6 +876,43 @@ typedef struct cec_logical_addresses #endif } cec_logical_addresses; +typedef int (CEC_CDECL* CBCecLogMessageType)(void *param, const CEC::cec_log_message &); +typedef int (CEC_CDECL* CBCecKeyPressType)(void *param, const cec_keypress &); +typedef int (CEC_CDECL* CBCecCommandType)(void *param, const cec_command &); + +typedef struct ICECCallbacks +{ + /*! + * @brief Transfer a log message from libCEC to the client. + * @param message The message to transfer. + * @return 1 when ok, 0 otherwise. + */ + CBCecLogMessageType CBCecLogMessage; + + /*! + * @brief Transfer a keypress from libCEC to the client. + * @param key The keypress to transfer. + * @return 1 when ok, 0 otherwise. + */ + CBCecKeyPressType CBCecKeyPress; + + /*! + * @brief Transfer a CEC command from libCEC to the client. + * @param command The command to transfer. + * @return 1 when ok, 0 otherwise. + */ + CBCecCommandType CBCecCommand; +} ICECCallbacks; + +#ifdef UNUSED +#elif defined(__GNUC__) +#define UNUSED(x) UNUSED_ ## x __attribute__((unused)) +#elif defined(__LCLINT__) +#define UNUSED(x) /*@unused@*/ x +#else +#define UNUSED(x) x +#endif + #ifdef __cplusplus }; };