X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=include%2Fcectypes.h;h=29a2e3806fcb840fa1d64f333793b9abf37099bc;hb=5ee37222777c8f0712ffa75ceff7a4102583b432;hp=41d124e9a6d8ccee0778879220a3bcec64714b6f;hpb=32403cc3b1abb8b186ca4bbe14cb7431a492f768;p=deb_libcec.git diff --git a/include/cectypes.h b/include/cectypes.h index 41d124e..29a2e38 100644 --- a/include/cectypes.h +++ b/include/cectypes.h @@ -72,12 +72,15 @@ namespace CEC { #define CEC_BUTTON_TIMEOUT 500 #define CEC_POWER_STATE_REFRESH_TIME 30000 #define CEC_FW_VERSION_UNKNOWN 0xFFFF +#define CEC_CONNECT_TRIES 3 #define CEC_DEFAULT_SETTING_USE_TV_MENU_LANGUAGE 1 -#define CEC_DEFAULT_SETTING_POWER_ON_STARTUP 1 +#define CEC_DEFAULT_SETTING_ACTIVATE_SOURCE 1 #define CEC_DEFAULT_SETTING_POWER_OFF_SHUTDOWN 1 #define CEC_DEFAULT_SETTING_POWER_OFF_SCREENSAVER 1 #define CEC_DEFAULT_SETTING_POWER_OFF_ON_STANDBY 1 +#define CEC_DEFAULT_SETTING_SEND_INACTIVE_SOURCE 1 +#define CEC_DEFAULT_SETTING_POWER_OFF_DEVICES_STANDBY 1 #define CEC_DEFAULT_TRANSMIT_RETRY_WAIT 500 #define CEC_DEFAULT_TRANSMIT_TIMEOUT 1000 @@ -86,7 +89,7 @@ namespace CEC { #define CEC_MIN_LIB_VERSION 1 #define CEC_LIB_VERSION_MAJOR 1 -#define CEC_LIB_VERSION_MINOR 4 +#define CEC_LIB_VERSION_MINOR 5 typedef enum cec_abort_reason { @@ -598,6 +601,21 @@ typedef enum cec_adapter_messagecode MSGCODE_START_BOOTLOADER, MSGCODE_SET_POWERSTATE, MSGCODE_SET_CONTROLLED, + MSGCODE_GET_AUTO_ENABLED, + MSGCODE_SET_AUTO_ENABLED, + MSGCODE_GET_DEFAULT_LOGICAL_ADDRESS, + MSGCODE_SET_DEFAULT_LOGICAL_ADDRESS, + MSGCODE_GET_LOGICAL_ADDRESS_MASK, + MSGCODE_SET_LOGICAL_ADDRESS_MASK, + MSGCODE_GET_PHYSICAL_ADDRESS, + MSGCODE_SET_PHYSICAL_ADDRESS, + MSGCODE_GET_DEVICE_TYPE, + MSGCODE_SET_DEVICE_TYPE, + MSGCODE_GET_HDMI_VERSION, + MSGCODE_SET_HDMI_VERSION, + MSGCODE_GET_OSD_NAME, + MSGCODE_SET_OSD_NAME, + MSGCODE_WRITE_EEPROM, MSGCODE_FRAME_EOM = 0x80, MSGCODE_FRAME_ACK = 0x40, } cec_adapter_messagecode; @@ -620,6 +638,7 @@ typedef enum cec_vendor_id CEC_VENDOR_YAMAHA = 0x00A0DE, CEC_VENDOR_PHILIPS = 0x00903E, CEC_VENDOR_SONY = 0x080046, + CEC_VENDOR_TOSHIBA = 0x000039, CEC_VENDOR_UNKNOWN = 0 } cec_vendor_id; @@ -903,12 +922,29 @@ typedef struct cec_logical_addresses #endif } cec_logical_addresses; +typedef enum libcec_alert +{ + CEC_ALERT_SERVICE_DEVICE +} libcec_alert; + +typedef enum libcec_parameter_type +{ + CEC_PARAMETER_TYPE_STRING +} libcec_parameter_type; + +struct libcec_parameter +{ + libcec_parameter_type paramType; + void* paramData; +}; + struct libcec_configuration; typedef int (CEC_CDECL* CBCecLogMessageType)(void *param, const cec_log_message &); typedef int (CEC_CDECL* CBCecKeyPressType)(void *param, const cec_keypress &); typedef int (CEC_CDECL* CBCecCommandType)(void *param, const cec_command &); typedef int (CEC_CDECL* CBCecConfigurationChangedType)(void *param, const libcec_configuration &); +typedef int (CEC_CDECL* CBCecAlertType)(void *param, const libcec_alert, const libcec_parameter &); typedef struct ICECCallbacks { @@ -939,36 +975,66 @@ typedef struct ICECCallbacks * @return 1 when ok, 0 otherwise */ CBCecConfigurationChangedType CBCecConfigurationChanged; + + /*! + * @Brief Transfer a libcec alert message from libCEC to the client + * @Param alert The alert type transfer. + * @Param data Misc. additional information. + * @return 1 when ok, 0 otherwise + */ + CBCecAlertType CBCecAlert; } ICECCallbacks; typedef enum cec_client_version { CEC_CLIENT_VERSION_PRE_1_5 = 0, - CEC_CLIENT_VERSION_1_5_0 = 0x1500 + CEC_CLIENT_VERSION_1_5_0 = 0x1500, + CEC_CLIENT_VERSION_1_5_1 = 0x1501, + CEC_CLIENT_VERSION_1_5_2 = 0x1502, + CEC_CLIENT_VERSION_1_5_3 = 0x1503, + CEC_CLIENT_VERSION_1_6_0 = 0x1600 } cec_client_version; +typedef enum cec_server_version +{ + CEC_SERVER_VERSION_PRE_1_5 = 0, + CEC_SERVER_VERSION_1_5_0 = 0x1500, + CEC_SERVER_VERSION_1_5_1 = 0x1501, + CEC_SERVER_VERSION_1_5_2 = 0x1502, + CEC_SERVER_VERSION_1_5_3 = 0x1503, + CEC_SERVER_VERSION_1_6_0 = 0x1600 +} cec_server_version; + typedef struct libcec_configuration { - cec_client_version clientVersion; /*!< the version of the client that is connecting */ + uint32_t clientVersion; /*!< the version of the client that is connecting */ char strDeviceName[13]; /*!< how to name the device on the CEC bus */ cec_device_type_list deviceTypes; /*!< the CEC device types to emulate */ - uint16_t iPhysicalAddress; /*!< the physical address of the CEC adapter */ - cec_logical_address baseDevice; /*!< the logical address of the device to which the adapter is connected. only used when iPhysicalAddress = 0 */ - uint8_t iHDMIPort; /*!< the HDMI port to which the adapter is connected. only used when iPhysicalAddress = 0 */ - cec_vendor_id tvVendor; /*!< the vendor ID of the TV. leave this untouched to autodetect */ - cec_logical_addresses wakeDevices; /*!< wake these CEC devices when starting libCEC */ + uint8_t bAutodetectAddress; /*!< try to autodetect the physical address when 1 */ + uint16_t iPhysicalAddress; /*!< the physical address of the CEC adapter. only used when bAutodetectAddress = 0 or when the adapter doesn't support autodetection */ + cec_logical_address baseDevice; /*!< the logical address of the device to which the adapter is connected. only used when iPhysicalAddress = 0 and bAutodetectAddress = 0 or when the adapter doesn't support autodetection */ + uint8_t iHDMIPort; /*!< the HDMI port to which the adapter is connected. only used when iPhysicalAddress = 0 and bAutodetectAddress = 0 or when the adapter doesn't support autodetection */ + uint64_t tvVendor; /*!< override the vendor ID of the TV. leave this untouched to autodetect */ + cec_logical_addresses wakeDevices; /*!< wake these CEC devices when initialising libCEC or when calling PowerOnDevices() without any parameter */ + cec_logical_addresses powerOffDevices; /*!< power off these devices when calling StandbyDevices() without any parameter */ + + uint32_t serverVersion; /*!< the version number of the server. read-only */ // player specific settings 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 bUseTVMenuLanguage; /*!< use the menu language of the TV in the player application */ - uint8_t bPowerOnStartup; /*!< power on CEC devices when start the player application */ - uint8_t bPowerOffShutdown; /*!< power off CEC devices when stopping the player application */ + uint8_t bActivateSource; /*!< make libCEC the active source on the bus when starting the player application */ uint8_t bPowerOffScreensaver; /*!< put devices in standby mode when activating the screensaver */ uint8_t bPowerOffOnStandby; /*!< put this PC in standby mode when the TV is switched off */ + uint8_t bSendInactiveSource; /*!< send an 'inactive source' message when stopping the player. added in 1.5.1 */ void * callbackParam; /*!< the object to pass along with a call of the callback methods. NULL to ignore */ ICECCallbacks * callbacks; /*!< the callback methods to use. set this to NULL when not using callbacks */ + cec_logical_addresses logicalAddresses; /*!< the current logical addresses. read-only. added in 1.5.3 */ + uint16_t iFirmwareVersion; /*!< the firmware version of the adapter. added in 1.6.0 */ + uint8_t bPowerOffDevicesOnStandby; /*!< put devices in standby when the PC/player is put in standby. added in 1.6.0 */ + #ifdef __cplusplus void Clear(void) { @@ -977,16 +1043,28 @@ typedef struct libcec_configuration iPhysicalAddress = 0; baseDevice = (cec_logical_address)CEC_DEFAULT_BASE_DEVICE; iHDMIPort = CEC_DEFAULT_HDMI_PORT; - tvVendor = CEC_VENDOR_UNKNOWN; - clientVersion = CEC_CLIENT_VERSION_PRE_1_5; + tvVendor = (uint64_t)CEC_VENDOR_UNKNOWN; + clientVersion = (uint32_t)CEC_CLIENT_VERSION_PRE_1_5; + serverVersion = (uint32_t)CEC_SERVER_VERSION_PRE_1_5; wakeDevices.Clear(); + powerOffDevices.Clear(); + bAutodetectAddress = 1; bGetSettingsFromROM = 0; bUseTVMenuLanguage = CEC_DEFAULT_SETTING_USE_TV_MENU_LANGUAGE; - bPowerOnStartup = CEC_DEFAULT_SETTING_POWER_ON_STARTUP; - bPowerOffShutdown = CEC_DEFAULT_SETTING_POWER_OFF_SHUTDOWN; + bActivateSource = CEC_DEFAULT_SETTING_ACTIVATE_SOURCE; + #if CEC_DEFAULT_SETTING_POWER_OFF_SHUTDOWN == 1 + powerOffDevices.Set(CECDEVICE_BROADCAST); + #endif + #if CEC_DEFAULT_SETTING_ACTIVATE_SOURCE == 1 + wakeDevices.Set(CECDEVICE_TV); + #endif bPowerOffScreensaver = CEC_DEFAULT_SETTING_POWER_OFF_SCREENSAVER; bPowerOffOnStandby = CEC_DEFAULT_SETTING_POWER_OFF_ON_STANDBY; + bSendInactiveSource = CEC_DEFAULT_SETTING_SEND_INACTIVE_SOURCE; + logicalAddresses.Clear(); + iFirmwareVersion = 0; + bPowerOffDevicesOnStandby = CEC_DEFAULT_SETTING_POWER_OFF_DEVICES_STANDBY; callbackParam = NULL; callbacks = NULL;