Main Page   Data Structures   File List   Data Fields   Globals  

tmdlHdmiCEC_Types.h

Go to the documentation of this file.
00001 //=============================================================================
00002 // Copyright (C) 2007 NXP N.V., All Rights Reserved.
00003 // This source code and any compilation or derivative thereof is the proprietary
00004 // information of NXP N.V. and is confidential in nature. Under no circumstances
00005 // is this software to be  exposed to or placed under an Open Source License of
00006 // any type without the expressed written permission of NXP N.V.
00007 //=============================================================================
00008 /*!
00009     \file    tmdlHdmiCEC_Types.h
00010 
00011     \version 1.0
00012 
00013     \date    04/07/2007
00014 
00015     \brief   This provides interfaces description of CEC messages.
00016 
00017     \section refs  Reference Documents
00018              TDA998X Driver - tmdlHdmiTx - SCS.doc
00019     \note    None.
00020  
00021     HISTORY :
00022     \verbatim
00023      Date          Modified by CRPRNr  TASKNr  Maintenance description
00024      -------------|-----------|-------|-------|-----------------------------------
00025      04/07/2007   |  F.G      |       |       | Creation.
00026      -------------|-----------|-------|-------|-----------------------------------
00027     \endverbatim
00028 */
00029 //==========================================================================
00030 
00031 #ifndef TMDLHDMICEC_TYPES_H
00032 #define TMDLHDMICEC_TYPES_H
00033 
00034 /*============================================================================*/
00035 /*                       INCLUDE FILES                                        */
00036 /*============================================================================*/
00037 
00038 #include "tmNxTypes.h"
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 /*============================================================================*/
00045 /*                       MACRO DEFINITIONS                                    */
00046 /*============================================================================*/
00047 
00048 
00049 /*============================================================================*/
00050 /*                                DEFINES                                     */
00051 /*============================================================================*/
00052 
00053 /**< Error Codes */
00054 #define TMDL_ERR_DLHDMICEC_BASE                      CID_DL_HDMICEC
00055 #define TMDL_ERR_DLHDMICEC_COMPATIBILITY             (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_COMPATIBILITY)             /**< SW Interface compatibility   */
00056 #define TMDL_ERR_DLHDMICEC_MAJOR_VERSION             (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_MAJOR_VERSION)             /**< SW Major Version error       */
00057 #define TMDL_ERR_DLHDMICEC_COMP_VERSION              (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_COMP_VERSION)              /**< SW component version error   */
00058 #define TMDL_ERR_DLHDMICEC_BAD_UNIT_NUMBER           (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_BAD_UNIT_NUMBER)           /**< Invalid device unit number   */
00059 #define TMDL_ERR_DLHDMICEC_BAD_INSTANCE              (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_BAD_INSTANCE)              /**< Bad input instance value     */
00060 #define TMDL_ERR_DLHDMICEC_BAD_HANDLE                (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_BAD_HANDLE)                /**< Bad input handle             */
00061 #define TMDL_ERR_DLHDMICEC_BAD_PARAMETER             (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_BAD_PARAMETER)             /**< Invalid input parameter      */
00062 #define TMDL_ERR_DLHDMICEC_NO_RESOURCES              (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_NO_RESOURCES)              /**< Resource is not available    */
00063 #define TMDL_ERR_DLHDMICEC_RESOURCE_OWNED            (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_RESOURCE_OWNED)            /**< Resource is already in use   */
00064 #define TMDL_ERR_DLHDMICEC_RESOURCE_NOT_OWNED        (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_RESOURCE_NOT_OWNED)        /**< Caller does not own resource */
00065 #define TMDL_ERR_DLHDMICEC_INCONSISTENT_PARAMS       (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_INCONSISTENT_PARAMS)       /**< Inconsistent input params    */
00066 #define TMDL_ERR_DLHDMICEC_NOT_INITIALIZED           (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_NOT_INITIALIZED)           /**< Component is not initialized */
00067 #define TMDL_ERR_DLHDMICEC_NOT_SUPPORTED             (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_NOT_SUPPORTED)             /**< Function is not supported    */
00068 #define TMDL_ERR_DLHDMICEC_INIT_FAILED               (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_INIT_FAILED)               /**< Initialization failed        */
00069 #define TMDL_ERR_DLHDMICEC_BUSY                      (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_BUSY)                      /**< Component is busy            */
00070 #define TMDL_ERR_DLHDMICEC_I2C_READ                  (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_READ)                      /**< Read error                   */
00071 #define TMDL_ERR_DLHDMICEC_I2C_WRITE                 (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_WRITE)                     /**< Write error                  */
00072 #define TMDL_ERR_DLHDMICEC_FULL                      (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_FULL)                      /**< Queue is full                */
00073 #define TMDL_ERR_DLHDMICEC_NOT_STARTED               (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_NOT_STARTED)               /**< Function is not started      */
00074 #define TMDL_ERR_DLHDMICEC_ALREADY_STARTED           (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_ALREADY_STARTED)           /**< Function is already started  */
00075 #define TMDL_ERR_DLHDMICEC_ASSERTION                 (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_ASSERTION)                 /**< Assertion failure            */
00076 #define TMDL_ERR_DLHDMICEC_INVALID_STATE             (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_INVALID_STATE)             /**< Invalid state for function   */
00077 #define TMDL_ERR_DLHDMICEC_OPERATION_NOT_PERMITTED   (TMDL_ERR_DLHDMICEC_BASE + TM_ERR_OPERATION_NOT_PERMITTED)   /**< corresponds to posix EPERM   */
00078 
00079 /*============================================================================*/
00080 /*                       ENUM OR TYPE DEFINITIONS                             */
00081 /*============================================================================*/
00082 
00083 /*!
00084     \enum  tmdlHdmiCECAbortReason_t
00085     \brief This enum indicates the reason for a <Feature Abort> response
00086 */
00087 typedef enum
00088 {
00089    CEC_ABORT_UNKNOWN_OPCODE      = 0, /*!< Unrecognized opcode */
00090    CEC_ABORT_INCORRECT_MODE      = 1, /*!< Not in correct mode to respond */
00091    CEC_ABORT_NO_SOURCE           = 2, /*!< cannot provide source */
00092    CEC_ABORT_INVALID_OPERAND     = 3, /*!< Invalid operand  */
00093    CEC_ABORT_REFUSED             = 4, /*!< Refused */
00094    CEC_ABORT_UNABLE_TO_DETERMINE = 5  /*!< Unable to Determine */
00095 } tmdlHdmiCECAbortReason_t;
00096 
00097 /*!
00098     \enum  tmdlHdmiCECAnalogueBroadcastType_t
00099     \brief This enum indicates the analogue broadcast type
00100 */
00101 typedef enum
00102 {
00103    CEC_BROADCAST_TYPE_CABLE       = 0x00, /*!< Cable */
00104    CEC_BROADCAST_TYPE_SATELLITE   = 0x01, /*!< Satellite*/
00105    CEC_BROADCAST_TYPE_TERRESTRIAL = 0x02 /*!< Terrestrial */
00106 } tmdlHdmiCECAnalogueBroadcastType_t;
00107 
00108 /*!
00109     \enum  _tmdlHdmiCECAnalogueFrequency
00110     \brief This enum specify the min and max frequency used by an analogue tuner
00111 */
00112 enum _tmdlHdmiCECAnalogueFrequency
00113 {
00114     CEC_ANALOG_FREQ_MIN = 0x0000, /*!< Min frequency used by analogue tuner */
00115     CEC_ANALOG_FREQ_MAX = 0xFFFF  /*!< Max frequency used by analogue tuner */
00116 };
00117 
00118 /*!
00119     \enum  _tmdlHdmiCECAsciiDigit
00120     \brief This enum represent the min and max of a printable digit character
00121 */
00122 enum _tmdlHdmiCECAsciiDigit
00123 {
00124     CEC_ASCII_DIGIT_MIN = 0x30, /*!< Min of a printable digit character */
00125     CEC_ASCII_DIGIT_MAX = 0x39  /*!< Max of a printable digit character */
00126 };
00127 
00128 /*!
00129     \enum  _tmdlHdmiCECAscii
00130     \brief This enum represent the min and max of a printable character
00131 */
00132 enum _tmbsHdmiCECAscii
00133 {
00134     CEC_ASCII_CHARACTER_MIN  = 0x20, /*!< Min of a printable character */
00135     CEC_ASCII_CHARACTER_MAX  = 0x7E  /*!< Max of a printable character */
00136 };
00137 
00138 /*!
00139     \enum  _tmdlHdmiCECAudioFormatCode
00140     \brief This enum represent the min and max of a Audio Format Code is defined
00141            in CEA-861-D for CEA Short Audio Descriptor
00142 */
00143 enum _tmdlHdmiCECAudioFormatCode
00144 {
00145     CEC_AUDIO_FORMAT_CODE_MIN = 0x01, /*!< Min of a Audio Format Code */
00146     CEC_AUDIO_FORMAT_CODE_MAX = 0x0F  /*!< Max of a Audio Format Code */
00147 };
00148 
00149 /*!
00150     \enum  tmdlHdmiCECAudioRate_t
00151     \brief This enum indicates the audio range control
00152 */
00153 typedef enum
00154 {
00155    CEC_AUDIO_RATE_OFF                        = 0, /*!< Rate Control off */
00156    CEC_AUDIO_RATE_WIDE_RANGE_STANDARD_RATE   = 1, /*!< Standard rate : 100% rate */
00157    CEC_AUDIO_RATE_WIDE_RANGE_FAST_RATE       = 2, /*!< Fast rate : Max 101% rate */
00158    CEC_AUDIO_RATE_WIDE_RANGE_SLOW_RATE       = 3, /*!< Sloaw rate : 99% rate */
00159    CEC_AUDIO_RATE_NARROW_RANGE_STANDARD_RATE = 4, /*!< Standard rate : 100% rate */
00160    CEC_AUDIO_RATE_NARROW_RANGE_FAST_RATE     = 5, /*!< Fast rate : Max 101% rate */
00161    CEC_AUDIO_RATE_NARROW_RANGE_SLOW_RATE     = 6  /*!< Sloaw rate : 99% rate */                                          
00162 } tmdlHdmiCECAudioRate_t;
00163 
00164 /*!
00165     \enum  tmdlHdmiCECAudioMute_t
00166     \brief This enum indicates the audio current audio mute status
00167 */
00168 typedef enum
00169 {
00170    CEC_AUDIO_MUTE_OFF  = 0, /*!< Audio Mute off */
00171    CEC_AUDIO_MUTE_ON   = 1 /*!< Audio Mute on */
00172 } tmdlHdmiCECAudioMute_t;
00173 
00174 
00175 /*!
00176     \struct tmdlHdmiCECAudioStatus_t
00177     \brief  This union indicates the current audio status of a device
00178 */
00179 typedef struct _tmdlHdmiCECAudioStatus_t
00180 {
00181      tmdlHdmiCECAudioMute_t audioMuteStatus   ; /*!< Audio Mute Status */
00182      UInt8                  audioVolumeStatus ; /*!< Audio Volume Status  */
00183 } tmdlHdmiCECAudioStatus_t, *ptmdlHdmiCECAudioStatus_t;
00184 
00185 
00186 /*!
00187     \enum  tmdlHdmiCECBoolean_t
00188     \brief This enum indicates a Flag
00189 */
00190 typedef enum
00191 {
00192    CEC_FALSE  = 0, /*!< False */
00193    CEC_TRUE   = 1, /*!< True */
00194 } tmdlHdmiCECBoolean_t;
00195 
00196 
00197 /*!
00198     \enum  tmdlHdmiCECBroadcastSystem_t
00199     \brief This enum indicates information about the color system, the sound carrier and IF-frequency
00200 */
00201 typedef enum
00202 {                                         /*!< Sound  / Sound Modulation / Video Modulation / Vertical Frequency / Color sub-carier         */
00203    CEC_BROADCAST_SYSTEM_PAL_BG       = 0, /*!< 5.5MHZ / FM                 NEG                50HZ                 4.43 MHZ                 */
00204    CEC_BROADCAST_SYSTEM_PAL_SECAM_L  = 1, /*!< 6.5MHZ / AM                 POS                50HZ                 Fob 4.25MHz,For 4.406Mhz */
00205    CEC_BROADCAST_SYSTEM_PAL_M        = 2, /*!< 4.5MHZ / FM                 NEG                60HZ                 3.5756 MHZ               */
00206    CEC_BROADCAST_SYSTEM_NTSC_M       = 3, /*!< 4.5MHZ / FM                 NEG                60HZ                 3.5795 MHZ               */
00207    CEC_BROADCAST_SYSTEM_PAL_I        = 4, /*!< 6.0MHZ / FM                 NEG                50HZ                 4.43 MHZ                 */
00208    CEC_BROADCAST_SYSTEM_SECAM_DK     = 5, /*!< 6.5MHZ / FM                 NEG                50HZ                 Fob 4.25MHz,For 4.406Mhz */
00209    CEC_BROADCAST_SYSTEM_SECAM_BG     = 6, /*!< 5.5MHZ / FM                 NEG                50HZ                 Fob 4.25MHz,For 4.406Mhz */
00210    CEC_BROADCAST_SYSTEM_SECAM_L      = 7, /*!< 6.5MHZ / AM                 POS                50HZ                 Fob 4.25MHz,For 4.406Mhz */
00211    CEC_BROADCAST_SYSTEM_PAL_DK       = 8, /*!< 5.5MHZ / FM                 NEG                50HZ                 4.43MHZ                  */
00212    CEC_BROADCAST_SYSTEM_FUTURE_USE   = 9, /*!< Future Use   */
00213    CEC_BROADCAST_SYSTEM_OTHER_SYSTEM = 31 /*!< Other System */
00214 } tmdlHdmiCECBroadcastSystem_t;
00215 
00216 /*!
00217     \enum  tmdlHdmiCECVersion_t
00218     \brief This enum indicates the supported CEC version
00219 */
00220 typedef enum
00221 {
00222    CEC_VERSION_Reserved = 0x00, /*!< CEC Reserved */
00223    CEC_VERSION_Reserved1 = 0x01, /*!< CEC Reserved */
00224    CEC_VERSION_Reserved2 = 0x02, /*!< CEC Reserved */
00225    CEC_VERSION_Reserved3 = 0x03, /*!< CEC Reserved */
00226    CEC_VERSION_1_3a     = 0x04, /*!< CEC Version 1.3a */
00227    CEC_VERSION_1_4      = 0x05  /*!< CEC Version 1.4  */
00228 } tmdlHdmiCECVersion_t;
00229 
00230 /*!
00231     \enum  tmdlHdmiCECChanNumFormat_t
00232     \brief This enum indicates the Channel Format
00233 */
00234 typedef enum
00235 {
00236    CEC_FIRST_CHAN_NUMBER  = 0x01, /*!< 1-part channel number */
00237    CEC_SECOND_CHAN_NUMBER = 0x02  /*!< 2-part channel number */
00238 } tmdlHdmiCECChanNumFormat_t;
00239 
00240 /*!
00241     \struct tmdlHdmiCECChannelIdentifier_t
00242     \brief  This struct indicates a 1-part Logical or Virtual Channel Number or
00243             a 2-part Major and Minor channel combination
00244 */
00245 typedef struct
00246 {
00247      tmdlHdmiCECChanNumFormat_t ChanNumFormat   ; /*!< Channel Format */
00248      UInt16                      MajorChanNumber ; /*!< Major Channel Number (if channel is 2-part) */
00249      UInt16                      MinorChanNumber ; /*!< 1-part Channel Number ,or a Minor Channel Number (if channel is 2-part) */
00250 } tmdlHdmiCECChannelIdentifier_t ;
00251 
00252 /*!
00253     \enum  tmdlHdmiCECDayOfMonth_t
00254     \brief This enum indicates the day of the month
00255 */
00256 typedef enum
00257 {
00258    CEC_FIRST_DAY_OF_MONTH  = 1, /*!< First day of the month */
00259    CEC_LAST_DAY_OF_MONTH   = 31 /*!< Last day of the month */
00260 } tmdlHdmiCECDayOfMonth_t;
00261 
00262 /*!
00263     \enum  tmdlHdmiCECDecControlMode_t
00264     \brief This enum indicates command used for opcode <Deck Control>
00265 */
00266 typedef enum
00267 {
00268    CEC_DECK_CONTROL_WIND   = 1, /*!< Skip Forward / Wind   */
00269    CEC_DECK_CONTROL_REWIND = 2, /*!< Skip Reverse / Rewind */
00270    CEC_DECK_CONTROL_STOP   = 3, /*!< Stop                  */
00271    CEC_DECK_CONTROL_EJECT  = 4  /*!< Eject                 */
00272 } tmdlHdmiCECDecControlMode_t;
00273 
00274 /*!
00275     \enum  tmdlHdmiCECDecInfo_t
00276     \brief This enum indicates the current status of a tape or disk deck
00277 */
00278 typedef enum
00279 {
00280    CEC_DECK_INFO_PLAY              = 0x11, /*!< Play                  */
00281    CEC_DECK_INFO_RECORD            = 0x12, /*!< Record                */
00282    CEC_DECK_INFO_PLAY_REVERSE      = 0x13, /*!< Play Reverse          */
00283    CEC_DECK_INFO_STILL             = 0x14, /*!< Still                 */
00284    CEC_DECK_INFO_SLOW              = 0x15, /*!< Slow                  */
00285    CEC_DECK_INFO_SLOW_REVERSE      = 0x16, /*!< Slow Reverse          */
00286    CEC_DECK_INFO_FAST_FORWARD      = 0x17, /*!< Fast Forward          */
00287    CEC_DECK_INFO_FAST_REVERSE      = 0x18, /*!< Fast Reverse          */
00288    CEC_DECK_INFO_NO_MEDIA          = 0x19, /*!< No Media              */
00289    CEC_DECK_INFO_STOP              = 0x1A, /*!< Stop                  */
00290    CEC_DECK_INFO_WIND              = 0x1B, /*!< Skip Forward / Wind   */
00291    CEC_DECK_INFO_REWIND            = 0x1C, /*!< Skip Reverse / Rewind */
00292    CEC_DECK_INFO_ID_SEARCH_FORWARD = 0x1D, /*!< Index Search Forward  */
00293    CEC_DECK_INFO_ID_SEARCH_REVERSE = 0x1E, /*!< Index Search Forward  */
00294    CEC_DECK_INFO_OTHER_STATUS      = 0x1F  /*!< Other Status          */
00295 } tmdlHdmiCECDecInfo_t;
00296 
00297 
00298 /*!
00299     \enum  tmdlHdmiCECDeviceType_t
00300     \brief This enum indicates the device type
00301 */
00302 typedef enum
00303 {
00304    CEC_DEVICE_TYPE_TV               = 0, /*!< TV               */
00305    CEC_DEVICE_TYPE_REC_DEVICE       = 1, /*!< Recording Device */
00306    CEC_DEVICE_TYPE_RESERVED         = 2, /*!< Reserved         */
00307    CEC_DEVICE_TYPE_TUNER            = 3, /*!< Tuner            */
00308    CEC_DEVICE_TYPE_PLAYBACK_DEVICE  = 4, /*!< PlayBack Device  */
00309    CEC_DEVICE_TYPE_AUDIO_DEVICE     = 5, /*!< Audio System     */
00310    CEC_DEVICE_TYPE_PURE_CEC_SWITCTH = 6,  /*!< Pure CEC Switch  */
00311    CEC_DEVICE_TYPE_VIDEO_PROCESSOR  = 7  /*!< Video Processor  */
00312 } tmdlHdmiCECDeviceType_t;
00313 
00314 /*!
00315     \enum  tmdlHdmiCECServiceIdentMethod_t
00316     \brief This enum indicates a Service Indentification Method
00317 */
00318 typedef enum
00319 {
00320    CEC_SERVICE_DIGITAL  = 0, /*!< Service identified by digital IDs  */
00321    CEC_SERVICE_CHANNEL  = 1  /*!< Service identified by channel      */
00322 } tmdlHdmiCECServiceIdentMethod_t;
00323 
00324 /*!
00325     \enum  tmdlHdmiCECDigitalBroadcastSystem_t
00326     \brief This enum indicates the Digital Broadcast System of required service
00327 */
00328 typedef enum
00329 {
00330    CEC_DIGITAL_BROADCAST_SYSTEM_ARIB_GENERIC = 0x01, /*!< ARIB generic */
00331    CEC_DIGITAL_BROADCAST_SYSTEM_ATSC_GENERIC = 0x02, /*!< ATSC generic */
00332    CEC_DIGITAL_BROADCAST_SYSTEM_DVB_GENERIC  = 0x03, /*!< DVB generic  */
00333    CEC_DIGITAL_BROADCAST_SYSTEM_ARIB_BS      = 0x08, /*!< ARIB-BS      */
00334    CEC_DIGITAL_BROADCAST_SYSTEM_ARIB_CS      = 0x09, /*!< ARIB-CS      */
00335    CEC_DIGITAL_BROADCAST_SYSTEM_ARIB_T       = 0x0A, /*!< ARIB-T       */
00336    CEC_DIGITAL_BROADCAST_SYSTEM_CABLE        = 0x10, /*!< Cable        */
00337    CEC_DIGITAL_BROADCAST_SYSTEM_SATELLITE    = 0x11, /*!< Satellite    */
00338    CEC_DIGITAL_BROADCAST_SYSTEM_TERRESTRIAL  = 0x12, /*!< Terrestrial  */
00339    CEC_DIGITAL_BROADCAST_SYSTEM_DVB_C        = 0x18, /*!< DVB-C        */
00340    CEC_DIGITAL_BROADCAST_SYSTEM_DVB_S        = 0x19, /*!< DVB-S        */
00341    CEC_DIGITAL_BROADCAST_SYSTEM_DVB_S2       = 0x1A, /*!< DVB-S2       */
00342    CEC_DIGITAL_BROADCAST_SYSTEM_DVB_T        = 0x1B  /*!< DVB-T        */
00343 } tmdlHdmiCECDigitalBroadcastSystem_t;
00344 
00345 /*!
00346     \struct tmdlHdmiCECAribData_t
00347     \brief  This struct indicates the ARIB Data
00348 */
00349 typedef struct
00350 {
00351      UInt16 TransportStreamID ; /*!< Tansport_stream_id of the transport stream carrying the required service                  */
00352      UInt16 ServiceID         ; /*!< Service_ID of the required service                                                        */
00353      UInt16 OriginalNetworkID ; /*!< Original_network_ID of the network carrying the transport stream for the required service */
00354 } tmdlHdmiCECAribData_t ;
00355 
00356 /*!
00357     \struct tmdlHdmiCECAtscData_t
00358     \brief  This struct indicates the ATSC Data
00359 */
00360 typedef struct
00361 {
00362      UInt16 TransportStreamID ; /*!< Tansport_stream_id of the transport stream carrying the required service */
00363      UInt16 ProgramNumber     ; /*!< Program Number of the required service                                   */
00364      UInt16 Reserved          ; /*!< Reserved                                                                 */
00365 } tmdlHdmiCECAtscData_t ; 
00366 
00367 /*!
00368     \struct tmdlHdmiCECDvbData_t
00369     \brief  This struct indicates the DVB Data
00370 */
00371 typedef struct
00372 {
00373      UInt16 TransportStreamID ; /*!< Tansport_stream_id of the transport stream carrying the required service                  */
00374      UInt16 ServiceID         ; /*!< Service_ID of the required service                                                        */
00375      UInt16 OriginalNetworkID ; /*!< Original_network_ID of the network carrying the transport stream for the required service */
00376 } tmdlHdmiCECDvbData_t ;
00377 
00378 /*!
00379     \struct tmdlHdmiCECChannelData_t
00380     \brief  This struct indicates the Channel Data
00381 */
00382 typedef struct
00383 {
00384      tmdlHdmiCECChannelIdentifier_t ChannelIdentifier ; /*!< Logical or virtual channel number of a service */
00385      UInt16 Reserved                                  ; /*!< Reserved                                       */
00386 } tmdlHdmiCECChannelData_t ;
00387 
00388 /*!
00389     \struct tmdlHdmiCECDigitalServiceIdentification_t
00390     \brief  This struct indicates the Digital Broadcast System 
00391             and the parameters to identify a specific service
00392 */
00393 typedef struct _tmdlHdmiCECDigitalServiceIdentification_t
00394 {
00395      tmdlHdmiCECServiceIdentMethod_t     ServiceIdentificationMethod ; /*!< See tmdlHdmiCECServiceIdentMethod_t                                                                   */
00396      tmdlHdmiCECDigitalBroadcastSystem_t DigitalBroadcastSystem      ; /*!< See tmdlHdmiCECDigitalBroadcastSystem_t                                                               */
00397      void                                *pServiceIdentification     ; /*!< tmdlHdmiCECAribData_t or tmdlHdmiCECAtscData_t or tmdlHdmiCECDvbData_t or tmdlHdmiCECChannelData_t */
00398 }tmdlHdmiCECDigitalServiceIdentification_t, *ptmdlHdmiCECDigitalServiceIdentification_t;
00399 
00400 /*!
00401     \enum  tmdlHdmiCECDisplayControl_t
00402     \brief This enum indicates the display mode for an on screen display message
00403 */
00404 typedef enum
00405 {
00406    CEC_DISPLAY_CONTROL_DEFAULT_TIME           = 0  , /*!< Display for default time */
00407    CEC_DISPLAY_CONTROL_UNTIL_CLEARED          = 64 , /*!< Display until cleared     */
00408    CEC_DISPLAY_CONTROL_CLEAR_PREVIOUS_MESSAGE = 128, /*!< Clear previous message    */
00409    CEC_DISPLAY_CONTROL_RESERVED               = 192  /*!< Clear previous message    */
00410 } tmdlHdmiCECDisplayControl_t;
00411 
00412 /*!
00413     \struct tmdlHdmiCECDuration_t
00414     \brief  This struct indicates a duration in BCD format
00415 */
00416 typedef struct
00417 {
00418      UInt8 Hours  ; /*!< Duration hours in bcd format between 0 and 99 */
00419      UInt8 Minute ; /*!< Duration minute in bcd format between 0 and 59 */
00420 } tmdlHdmiCECDuration_t ;
00421 
00422 /*!
00423     \brief  This typedef indicates physical adress of device that is to be used as the source of a recording
00424 */
00425 typedef UInt16 tmdlHdmiCECExternalPhysicalAddress_t ;
00426 
00427 /*!
00428     \brief  This typedef indicates external plug number (1 to 255 )on the recording device
00429 */
00430 typedef UInt8 tmdlHdmiCECExternalPlug_t;
00431 
00432 /*!
00433     \enum  tmdlHdmiCECExternalSourceSpecifier_t
00434     \brief This enum indicates External source specifier 
00435 */
00436 typedef enum
00437 {
00438    CEC_EXTERNAL_PLUG             = 4  , /*!< Display for default time */
00439    CEC_EXTERNAL_PHYSICAL_ADDRESS = 5    /*!< Display until cleared     */
00440 } tmdlHdmiCECExternalSourceSpecifier_t;
00441 
00442 /*!
00443     \brief  This typedef indicates External Source is specified bey exeternal plug number on the recording device
00444             or by the External physical Adress of the required source
00445 */
00446 typedef UInt8 ExternalSourceSpecifier;
00447 
00448 
00449 /*!
00450     \enum  tmdlHdmiCECFeatureOpcode_t
00451     \brief This enum defines command to be performed
00452 */
00453 typedef enum
00454 {
00455    CEC_OPCODE_FEATURE_ABORT                 = 0x00, /*!< */
00456    CEC_OPCODE_IMAGE_VIEW_ON                 = 0x04, /*!< */
00457    CEC_OPCODE_TUNER_STEP_INCREMENT          = 0x05, /*!< */
00458    CEC_OPCODE_TUNER_STEP_DECREMENT          = 0x06, /*!< */
00459    CEC_OPCODE_TUNER_DEVICE_STATUS           = 0x07, /*!< */
00460    CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS      = 0x08, /*!< */
00461    CEC_OPCODE_RECORD_ON                     = 0x09, /*!< */
00462    CEC_OPCODE_RECORD_STATUS                 = 0x0A, /*!< */
00463    CEC_OPCODE_RECORD_OFF                    = 0x0B, /*!< */
00464    CEC_OPCODE_TEXT_VIEW_ON                  = 0x0D, /*!< */
00465    CEC_OPCODE_RECORD_TV_SCREEN              = 0x0F, /*!< */
00466    CEC_OPCODE_GIVE_DECK_STATUS              = 0x1A, /*!< */
00467    CEC_OPCODE_DECK_STATUS                   = 0x1B, /*!< */
00468    CEC_OPCODE_SET_MENU_LANGUAGE             = 0x32, /*!< */
00469    CEC_OPCODE_CLEAR_ANALOGUE_TIMER          = 0x33, /*!< */
00470    CEC_OPCODE_SET_ANALOGUE_TIMER            = 0x34, /*!< */
00471    CEC_OPCODE_TIMER_STATUS                  = 0x35, /*!< */
00472    CEC_OPCODE_STANDBY                       = 0x36, /*!< */
00473    CEC_OPCODE_PLAY                          = 0x41, /*!< */
00474    CEC_OPCODE_DESCK_CONTROL                 = 0x42, /*!< */
00475    CEC_OPCODE_TIMER_CLEARED_STATUS          = 0x43, /*!< */
00476    CEC_OPCODE_USER_CONTROL_PRESSED          = 0x44, /*!< */
00477    CEC_OPCODE_USER_CONTROL_RELEASED         = 0x45, /*!< */
00478    CEC_OPCODE_GIVE_OSD_NAME                 = 0x46, /*!< */
00479    CEC_OPCODE_SET_OSD_NAME                  = 0x47, /*!< */
00480    CEC_OPCODE_SET_OSD_STRING                = 0x64, /*!< */
00481    CEC_OPCODE_SET_TIMER_PROGRAM_TITLE       = 0x67, /*!< */
00482    CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST     = 0x70, /*!< */
00483    CEC_OPCODE_GIVE_AUDIO_STATUS             = 0x71, /*!< */
00484    CEC_OPCODE_SET_SYSTEM_AUDIO_MODE         = 0x72, /*!< */
00485    CEC_OPCODE_REPORT_AUDIO_STATUS           = 0x7A, /*!< */
00486    CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D, /*!< */
00487    CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS      = 0x7E, /*!< */
00488    CEC_OPCODE_ROUTING_CHANGE                = 0x80, /*!< */
00489    CEC_OPCODE_ROUTING_INFORMATION           = 0x81, /*!< */
00490    CEC_OPCODE_ACTIVE_SOURCE                 = 0x82, /*!< */
00491    CEC_OPCODE_GIVE_PHYSICAL_ADDRESS         = 0x83, /*!< */
00492    CEC_OPCODE_REPORT_PHYSICAL_ADDRESS       = 0x84, /*!< */
00493    CEC_OPCODE_REQUEST_ACTIVE_SOURCE         = 0x85, /*!< */
00494    CEC_OPCODE_SET_STREAM_PATH               = 0x86, /*!< */
00495    CEC_OPCODE_DEVICE_VENDOR_ID          = 0x87, /*!< */
00496    CEC_OPCODE_VENDOR_COMMAND                = 0x89, /*!< */
00497    CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN     = 0x8A, /*!< */
00498    CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP       = 0x8B, /*!< */
00499    CEC_OPCODE_GIVE_DEVICE_VENDOR_ID         = 0x8C, /*!< */
00500    CEC_OPCODE_MENU_REQUEST                  = 0x8D, /*!< */
00501    CEC_OPCODE_MENU_STATUS                   = 0x8E, /*!< */
00502    CEC_OPCODE_GIVE_DEVICE_POWER_STATUS      = 0x8F, /*!< */
00503    CEC_OPCODE_REPORT_POWER_STATUS           = 0x90, /*!< */
00504    CEC_OPCODE_GET_MENU_LANGUAGE             = 0x91, /*!< */
00505    CEC_OPCODE_SET_ANALOGUE_SERVICE          = 0x92, /*!< */
00506    CEC_OPCODE_SET_DIGITAL_SERVICE           = 0x93, /*!< */
00507    CEC_OPCODE_SET_DIGITAL_TIMER             = 0x97, /*!< */
00508    CEC_OPCODE_CLEAR_DIGITAL_TIMER           = 0x99, /*!< */
00509    CEC_OPCODE_SET_AUDIO_RATE                = 0x9A, /*!< */
00510    CEC_OPCODE_INACTIVE_SOURCE               = 0x9D, /*!< */
00511    CEC_OPCODE_CEC_VERSION                   = 0x9E, /*!< */
00512    CEC_OPCODE_GET_CEC_VERSION               = 0x9F, /*!< */
00513    CEC_OPCODE_VENDOR_COMMAND_WITH_ID        = 0xA0, /*!< */
00514    CEC_OPCODE_CLEAR_EXTERNAL_TIMER          = 0xA1, /*!< */
00515    CEC_OPCODE_SET_EXTERNAL_TIMER            = 0xA2, /*!< */
00516    CEC_OPCODE_REPORT_SHORT_AUDIO_DESCRIPTOR = 0xA3, /*!< */
00517    CEC_OPCODE_REQUEST_SHORT_AUDIO_DESCRIPTOR = 0xA4, /*!< */
00518    CEC_OPCODE_INITATE_ARC                   = 0xC0, /*!< */
00519    CEC_OPCODE_REPORT_ARC_INITIATED          = 0xC1, /*!< */
00520    CEC_OPCODE_REPORT_ARC_TERMINATED         = 0xC2, /*!< */
00521    CEC_OPCODE_REPORT_ARC_INITIATION         = 0xC3, /*!< */
00522    CEC_OPCODE_REPORT_ARC_TERMINATION        = 0xC4, /*!< */
00523    CEC_OPCODE_TERMINATE_ARC                 = 0xC5, /*!< */
00524    CEC_OPCODE_ABORT_MESSAGE                 = 0xFF  /*!< This message is reserved for testing*/
00525 } tmdlHdmiCECFeatureOpcode_t;
00526 
00527 
00528 /*!
00529     \enum  tmdlHdmiCECMenuRequestType_t
00530     \brief This enum specifies wether to activate or desactivate a devices menu or
00531            simply query its current menu status
00532 */
00533 typedef enum
00534 {
00535    CEC_MENU_TYPE_ACTIVATE        = 0 , /*!< Activate   */
00536    CEC_MENU_TYPE_DEACTIVATE      = 1 , /*!< Deactivate */
00537    CEC_MENU_TYPE_QUERY           = 2   /*!< Query      */
00538 } tmdlHdmiCECMenuRequestType_t;
00539 
00540 /*!
00541     \enum  tmdlHdmiCECMenuState_t
00542     \brief This enum pecifies state of the device menu
00543 */
00544 typedef enum
00545 {
00546    CEC_MENU_STATE_ACTIVATE        = 0 , /*!< Activate   */
00547    CEC_MENU_STATE_DEACTIVATE      = 1   /*!< Deactivate */
00548 } tmdlHdmiCECMenuState_t;
00549 
00550 /*!
00551     \enum  tmdlHdmiCECPlayMode_t
00552     \brief This enum indicates in which mode to play media
00553 */
00554 typedef enum
00555 {
00556    CEC_MODE_PLAY_FORWARD              = 0x24 ,
00557    CEC_MODE_PLAY_REVERSE              = 0x20 ,
00558    CEC_MODE_FAST_FORWARD_MIN_SPEED    = 0x05 ,
00559    CEC_MODE_FAST_FORWARD_MEDIUM_SPEED = 0x06 ,
00560    CEC_MODE_FAST_FORWARD_MAX_SPEED    = 0x07 ,
00561    CEC_MODE_FAST_REVERSE_MIN_SPEED    = 0x09 ,
00562    CEC_MODE_FAST_REVERSE_MEDIUM_SPEED = 0x0A ,
00563    CEC_MODE_FAST_REVERSE_MAX_SPEED    = 0x0B ,
00564    CEC_MODE_SLOW_FORWARD_MIN_SPEED    = 0x15 ,
00565    CEC_MODE_SLOW_FORWARD_MEDIUM_SPEED = 0x16 ,
00566    CEC_MODE_SLOW_FORWARD_MAX_SPEED    = 0x17 ,
00567    CEC_MODE_SLOW_REVERSE_MIN_SPEED    = 0x19 ,
00568    CEC_MODE_SLOW_REVERSE_MEDIUM_SPEED = 0x1A ,
00569    CEC_MODE_SLOW_REVERSE_MAX_SPEED    = 0x1B  
00570 } tmdlHdmiCECPlayMode_t;
00571 
00572 /*!
00573     \enum  tmdlHdmiCECPowerStatus_t
00574     \brief This enum indicates the current power status of a device
00575 */
00576 typedef enum
00577 {
00578    CEC_POWER_STATUS_ON                       = 0x00 , /*!< On                          */
00579    CEC_POWER_STATUS_STANDBY                  = 0x01 , /*!< Standby                     */
00580    CEC_POWER_STATUS_TRANSITION_STANDBY_TO_ON = 0x02 , /*!< In Transition Standby to On */
00581    CEC_POWER_STATUS_TRANSITION_ON_TO_STANDBY = 0x03   /*!< In Transition On to StandBy */
00582 } tmdlHdmiCECPowerStatus_t;
00583 
00584 /*!
00585     \enum  tmdlHdmiCECRecordSourceType_t
00586     \brief This enum allows the record source to be specified for a recording
00587 */
00588 typedef enum
00589 {
00590    CEC_RECORD_SOURCE_OWN_SOURCE                = 1 , /*!< Own Source                */
00591    CEC_RECORD_SOURCE_DIGITAL_SERVICE           = 2 , /*!< Digital Service           */
00592    CEC_RECORD_SOURCE_ANALOGUE_SERVICE          = 3 , /*!< Analogue Service          */
00593    CEC_RECORD_SOURCE_EXTERNAL_PLUG             = 4 , /*!< External Plug             */
00594    CEC_RECORD_SOURCE_EXTERNAL_PHYSICAL_ADDRESS = 5   /*!< External Physical Address */
00595 } tmdlHdmiCECRecordSourceType_t;
00596 
00597 /*!
00598     \enum  tmdlHdmiCECRecordStatusInfo_t
00599     \brief This enum indicates the status of a recording
00600 */
00601 typedef enum
00602 {
00603    CEC_RECORD_STATUS_INFO_RECORDING_CURRENTLY_SELECTED_SOURCE       = 1 , /*!< */
00604    CEC_RECORD_STATUS_INFO_RECORDING_DIGITAL_SERVICE                 = 2 , /*!< */
00605    CEC_RECORD_STATUS_INFO_RECORDING_ANALOGUE_SERVCICE               = 3 , /*!< */
00606    CEC_RECORD_STATUS_INFO_RECORDING_EXTERNAL_INPUT                  = 4 , /*!< */
00607    CEC_RECORD_STATUS_INFO_NO_REC_UNABLE_TO_RECORD_DIGITAL_SERVICE   = 5 , /*!< */
00608    CEC_RECORD_STATUS_INFO_NO_REC_UNABLE_TO_RECORD_ANALOGUE_SERVICE  = 6 , /*!< */
00609    CEC_RECORD_STATUS_INFO_NO_REC_UNABLE_TO_SELECT_REQUIRED_SERVICE  = 7 , /*!< */
00610    CEC_RECORD_STATUS_INFO_NO_REC_INVALID_EXTERNAL_PLUG_NUMBER       = 9 , /*!< */
00611    CEC_RECORD_STATUS_INFO_NO_REC_INVALID_EXTERNAL_PHYSICAL_ADDRESS  = 10 , /*!< */
00612    CEC_RECORD_STATUS_INFO_NO_REC_CA_SYSTEM_NOT_SUPPORTED            = 11 , /*!< */
00613    CEC_RECORD_STATUS_INFO_NO_REC_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS = 12 , /*!< */
00614    CEC_RECORD_STATUS_INFO_NO_REC_NOT_ALLOWED_TO_COPY_SOURCE         = 13 , /*!< */
00615    CEC_RECORD_STATUS_INFO_NO_REC_NO_FURTHER_COPY_ALLOWED            = 14 , /*!< */
00616    CEC_RECORD_STATUS_INFO_NO_REC_NO_MEDIA                           = 16 , /*!< */
00617    CEC_RECORD_STATUS_INFO_NO_REC_PLAYING                            = 17 , /*!< */
00618    CEC_RECORD_STATUS_INFO_NO_REC_ALREADY_RECORDING                  = 18 , /*!< */
00619    CEC_RECORD_STATUS_INFO_NO_REC_MEDIA_PROTECTED                    = 19 , /*!< */
00620    CEC_RECORD_STATUS_INFO_NO_REC_NO_SOURCE_SIGNAL                   = 20 , /*!< */
00621    CEC_RECORD_STATUS_INFO_NO_REC_MEDIA_PROBLEM                      = 21 , /*!< */
00622    CEC_RECORD_STATUS_INFO_NO_REC_NOT_ENOUGH_SPACE_AVAILABLE         = 22 , /*!< */
00623    CEC_RECORD_STATUS_INFO_NO_REC_PARENTAL_LOCK_ON                   = 23 , /*!< */
00624    CEC_RECORD_STATUS_INFO_RECORDING_TERMINATED_NORMALLY             = 26 , /*!< */
00625    CEC_RECORD_STATUS_INFO_RECORDING_HAS_ALREADY_TERMINATED          = 27 , /*!< */
00626    CEC_RECORD_STATUS_INFO_NO_RECORDING_OTHER_REASON                 = 31 /*!< */
00627 } tmdlHdmiCECRecordStatusInfo_t;
00628 
00629 
00630 /*!
00631     \enum  tmdlHdmiCECRecordingSequence_t
00632     \brief This enum indicates the status of a recording
00633 */
00634 typedef enum
00635 {
00636    CEC_RECORDING_SEQUENCE_ONCE_ONLY = 0 , /*!< */
00637    CEC_RECORDING_SEQUENCE_SYNDAY    = 1 , /*!< */
00638    CEC_RECORDING_SEQUENCE_MONDAY    = 2 , /*!< */
00639    CEC_RECORDING_SEQUENCE_TUESDAY   = 4 , /*!< */
00640    CEC_RECORDING_SEQUENCE_WEDNESDAY = 8 , /*!< */
00641    CEC_RECORDING_SEQUENCE_THURSDAY  = 16, /*!< */
00642    CEC_RECORDING_SEQUENCE_FRIDAY    = 32, /*!< */
00643    CEC_RECORDING_SEQUENCE_SATURDAY  = 64  /*!< */
00644 } tmdlHdmiCECRecordingSequence_t;
00645 
00646 /*!
00647     \enum  tmdlHdmiCECStatusRequest_t
00648     \brief This enum contains the status request mode which can be report once or
00649            on all future state changes or reporting off.
00650 */
00651 typedef enum
00652 {
00653    CEC_STATUS_REQUEST_ON   = 1 , /*!< Status Request ON   */
00654    CEC_STATUS_REQUEST_OFF  = 2 , /*!< Status Request OFF  */
00655    CEC_STATUS_REQUEST_ONCE = 3   /*!< Status Request ONCE */
00656 } tmdlHdmiCECStatusRequest_t;
00657 
00658 /*!
00659     \enum  tmdlHdmiCECSystemAudioStatus_t
00660     \brief This enum indicates if the system audio Mode is On or Off
00661 */
00662 typedef enum
00663 {
00664    CEC_SYSTEM_AUDIO_STATUS_OFF  = 0 ,   /*!< Status Request OFF  */   
00665    CEC_SYSTEM_AUDIO_STATUS_ON   = 1  /*!< Status Request ON   */
00666 } tmdlHdmiCECSystemAudioStatus_t;
00667 
00668 /*!
00669     \enum  tmdlHdmiCECTimerClearedStatusData_t
00670     \brief This enum indicates status in <Timer Cleared Status> message
00671 */
00672 typedef enum
00673 {
00674    CEC_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING          = 0,  /*!< */
00675    CEC_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING        = 1,  /*!< */
00676    CEC_TIMER_STATUS_TIMER_NOT_CLEARED_NO_INFO_AVAILABLE  = 2,  /*!< */
00677    CEC_TIMER_STATUS_TIMER_NOT_TIMER_CLEARED              = 128 /*!< */
00678 } tmdlHdmiCECTimerClearedStatusData_t;
00679 
00680 
00681 /*!
00682     \enum  tmdlHdmiCECTimerOverlapWarning_t
00683     \brief This enum indicates if there is another timer block already set which
00684            overlaps with this new recording request
00685 */
00686 typedef enum
00687 {
00688    CEC_TIMER_OVERLAP_WARNING_NO_OVERLAP            = 0, /*!< No Overlap   */
00689    CEC_TIMER_OVERLAP_WARNING_TIMER_BLOCKS_OVERLAP  = 1  /*!< Timer blocks overlap  */
00690 } tmdlHdmiCECTimerOverlapWarning_t;
00691 
00692 /*!
00693     \enum  tmdlHdmiCECMediaInfo_t
00694     \brief This enum indicates if removable media is present and its write protect state
00695 */
00696 typedef enum
00697 {
00698    CEC_MEDIA_INFO_MEDIA_PRESENT_AND_NOT_PROTECTED   = 0, /*!< Media present and not protected */
00699    CEC_MEDIA_INFO_MEDIA_PRESENT_BUT_PROTECTED       = 1, /*!< Media present but protected     */
00700    CEC_MEDIA_INFO_MEDIA_NOT_PRESENT                 = 2, /*!< Media not present               */
00701    CEC_MEDIA_INFO_FUTURE_USE                        = 3  /*!< Future use                      */
00702 } tmdlHdmiCECMediaInfo_t;
00703 
00704 
00705 /*!
00706     \enum  tmdlHdmiCECProgrammedIndicator_t
00707     \brief This enum indicates a selector for [Timer Programmed Info]
00708 */
00709 typedef enum
00710 {
00711    CEC_PROGRAM_INDICATOR_NOT_PROGRAMMED = 0, /*!< */
00712    CEC_PROGRAM_INDICATOR_PROGRAMMED     = 1  /*!< */
00713 } tmdlHdmiCECProgrammedIndicator_t;
00714 
00715 /*!
00716     \enum  tmdlHdmiCECProgrammedInfo_t
00717     \brief This enum indicates any non-fatal issues with the programming request
00718 */
00719 typedef enum
00720 {
00721    CEC_PROGRAM_INFO_ENOUGHT_SPACE_AVAILABLE_FOR_RECORDING     = 8, /*!< */
00722    CEC_PROGRAM_INFO_NOT_ENOUGHT_SPACE_AVAILABLE_FOR_RECORDING = 9, /*!< */
00723    CEC_PROGRAM_INFO_NO_MEDIA_INFO_AVAILABLE                   = 10,/*!< */
00724    CEC_PROGRAM_INFO_MAY_NOT_BE_ENOUGH_SPACE_AVAILABLE         = 11 /*!< */
00725 } tmdlHdmiCECProgrammedInfo_t;
00726 
00727 
00728 /*!
00729     \enum  tmdlHdmiCECNotProgrammedErrorInfo_t
00730     \brief This enum indicates reason for programming failure
00731 */
00732 typedef enum
00733 {
00734    CEC_PROGRAM_ERROR_INFO_FUTURE_USE                        = 0,  /*!< */
00735    CEC_PROGRAM_ERROR_INFO_NO_FREE_TIMER_AVAILABLE           = 1,  /*!< */
00736    CEC_PROGRAM_ERROR_INFO_DATE_OUT_OF_RANGE                 = 2,  /*!< */
00737    CEC_PROGRAM_ERROR_INFO_RECORDING_SEQUENCE_ERROR          = 3,  /*!< */
00738    CEC_PROGRAM_ERROR_INFO_INVALID_EXTERNAL_PLUG_NUMBER      = 4,  /*!< */
00739    CEC_PROGRAM_ERROR_INFO_INVALID_EXTERNAL_PHYSICAL_ADDRESS = 5,  /*!< */
00740    CEC_PROGRAM_ERROR_INFO_CA_SYSTEM_NOT_SUPPORTED           = 6,  /*!< */
00741    CEC_PROGRAM_ERROR_INFO_NO_OR_INSUFFICIENT_CA_ENTITLMENTS = 7,  /*!< */
00742    CEC_PROGRAM_ERROR_INFO_DOES_NOT_SUPPORT_RESOLUTION       = 8,  /*!< Tuner or recorder does not support HD */
00743    CEC_PROGRAM_ERROR_INFO_PARENTAL_LOCK_ON                  = 9,  /*!< */
00744    CEC_PROGRAM_ERROR_INFO_CLOCK_FAILURE                     = 10, /*!< */
00745    CEC_PROGRAM_ERROR_INFO_DUPLICATE_ALREADY_PROGRAMMED      = 14  /*!< A timer block with identical details has already been programmed*/
00746 } tmdlHdmiCECNotProgrammedErrorInfo_t;
00747 
00748 /*!
00749     \struct tmdlHdmiCECTimerProgrammedInfo_t
00750     \brief  This struct 
00751 */
00752 typedef struct
00753 {
00754   tmdlHdmiCECProgrammedIndicator_t SelectProgramInfo ; /*!< tmdlHdmiCECProgrammedIndicator_t */
00755   UInt8                             ProgramInfo;        /*!< tmdlHdmiCECProgrammedInfo_t or tmdlHdmiCECNotProgrammedErrorInfo_t*/
00756   UInt16                            DurationAvailable ; /*!< Optional paramter : If [Programmed Info] is "Not enough space available" */
00757 } tmdlHdmiCECTimerProgrammedInfo_t ;                   /*!<  If [Not Programmed Info] is "Duplicate : already programmed" */
00758 
00759 /*!
00760     \struct tmdlHdmiCECTimerStatusData_t
00761     \brief  This struct is used by recording device to respond to the initiator
00762             of a <Set Timer> message
00763 */
00764 typedef struct
00765 {
00766   tmdlHdmiCECTimerOverlapWarning_t TimerOverlapWarning ; /*!< Indicates if there is another timer block already set which overlaps with this bew recording request*/
00767   tmdlHdmiCECMediaInfo_t           MediaInfo           ; /*!< Indicate if removable media is present and its write protect state */
00768   tmdlHdmiCECTimerProgrammedInfo_t TimerProgrammedInfo ; /*!< Give information about how and if the programming request has been done */
00769 } tmdlHdmiCECTimerStatusData_t ;
00770 
00771 
00772 /*!
00773     \enum  tmdlHdmiCECRecordingFlag_t
00774     \brief This enum indicates if the tuner is being used as a source of a recording
00775 */
00776 typedef enum
00777 {
00778    CEC_RECORDING_FLAG_NOT_BEING_USED_FOR_RECORDING = 0, /*!< Not Being used for recording  */
00779    CEC_RECORDING_FLAG_BEING_USED_FOR_RECORDING     = 1  /*!< Being used for recording      */
00780 } tmdlHdmiCECRecordingFlag_t;
00781 
00782 /*!
00783     \enum  tmdlHdmiCECTunerDisplayInfo_t
00784     \brief This enum indicates if the device is currently displaying its tuner or not.
00785            (it may for example be displaying an external source or media)
00786 */
00787 typedef enum
00788 {
00789    CEC_TUNER_DISPLAY_MEDIA_DISPLAYING_DIGITAL_TUNER  = 0, /*!< Displaying Digital Tuner */
00790    CEC_TUNER_DISPLAY_MEDIA_NOT_DISPLAYING_TUNER      = 1, /*!< Not Displaying Tuner */
00791    CEC_TUNER_DISPLAY_MEDIA_DISPLAYING_ANALOGUE_TUNER = 2  /*!< Not Displaying Tuner */
00792 } tmdlHdmiCECTunerDisplayInfo_t;
00793 
00794 /*!
00795     \enum  tmdlHdmiCECUiBroadcastType_t
00796     \brief This enum indicates type of broadcast
00797 */
00798 typedef enum
00799 {
00800    CEC_UI_BROADCAST_TYPE_ALL_AVAILABLE           = 0x00 , /*!< */
00801    CEC_UI_BROADCAST_TYPE_DIGITAL_ANALOGUE_TOGGLE = 0x01 , /*!< */
00802    CEC_UI_BROADCAST_TYPE_ANALOGUE                = 0x10 , /*!< */
00803    CEC_UI_BROADCAST_TYPE_ANALOGUE_TERRESTRIAL    = 0x20 , /*!< */
00804    CEC_UI_BROADCAST_TYPE_ANALOGUE_CABLE          = 0x30 , /*!< */
00805    CEC_UI_BROADCAST_TYPE_ANALOGUE_SATELLITE      = 0x40 , /*!< */
00806    CEC_UI_BROADCAST_TYPE_DIGITAL                 = 0x50 , /*!< */
00807    CEC_UI_BROADCAST_TYPE_DIGITAL_TERRESTRIAL     = 0x60 , /*!< */
00808    CEC_UI_BROADCAST_TYPE_DIGITAL_CABLE           = 0x70 , /*!< */
00809    CEC_UI_BROADCAST_TYPE_DIGITAL_SATELLITE       = 0x80 , /*!< */
00810    CEC_UI_BROADCAST_TYPE_DIGITAL_COM_SATELLITE   = 0x90 , /*!< */
00811    CEC_UI_BROADCAST_TYPE_DIGITAL_COM_SATELLITE_2 = 0x91 , /*!< */
00812    CEC_UI_BROADCAST_TYPE_IP                      = 0xA0   /*!< */
00813 } tmdlHdmiCECUiBroadcastType_t;
00814 
00815 /*!
00816     \enum  tmdlHdmiCECUiSoundPresentationControl_t
00817     \brief This enum indicates the selected command
00818 */
00819 typedef enum
00820 {
00821    CEC_UI_PRESENTATION_CONTROL_SOUND_MIX_DUAL_MONO        = 0x20 , /*!< "Sound Mixing Mode (Dual Mono)" */
00822    CEC_UI_PRESENTATION_CONTROL_SOUND_MIX_KARAOKE          = 0x30 , /*!< "Sound Mixing Mode (Karaoke)" */
00823    CEC_UI_PRESENTATION_CONTROL_SELECT_AUDIO_DOWNMIX       = 0x80 , /*!< "Select Audio Downmix Mode" */
00824    CEC_UI_PRESENTATION_CONTROL_SELECT_AUDIO_REVERBERATION = 0x90 , /*!< "Select Audio Reverberation Processing Mode" */
00825    CEC_UI_PRESENTATION_CONTROL_SELECT_AUDIO_EQUALIZER     = 0xA0 , /*!< "Select Audio Equalizer Mode" */
00826    CEC_UI_PRESENTATION_CONTROL_BASS_STEP_PLUS             = 0xB1 , /*!< "bass step + " */
00827    CEC_UI_PRESENTATION_CONTROL_BASS_NEUTRAL_POSITION      = 0xB2 , /*!< "bass neutral position" */
00828    CEC_UI_PRESENTATION_CONTROL_BASS_STEP_MINUS            = 0xB3 , /*!< "bass step - " */
00829    CEC_UI_PRESENTATION_CONTROL_TREBLE_STEP_PLUS           = 0xC1 , /*!< "Treble step + " */
00830    CEC_UI_PRESENTATION_CONTROL_TREBLE_NEUTRAL_POSITION    = 0xC2 , /*!< "Treble neutral position" */
00831    CEC_UI_PRESENTATION_CONTROL_TREBLE_STEP_MINUS          = 0xC3  /*!< "Treble step - " */
00832  
00833 } tmdlHdmiCECUiSoundPresentationControl_t;
00834 
00835 /*!
00836     \enum  tmdlHdmiCECUserRemoteControlCommand_t
00837     \brief This enum indicates the remote control button pressed
00838 */
00839 typedef enum
00840 {
00841    CEC_REMOTE_BUTTON_SELECT                       = 0, 
00842    CEC_REMOTE_BUTTON_UP                           = 1, 
00843    CEC_REMOTE_BUTTON_DOWN                         = 2,
00844    CEC_REMOTE_BUTTON_LEFT                         = 3,
00845    CEC_REMOTE_BUTTON_RIGHT                        = 4,
00846    CEC_REMOTE_BUTTON_RIGHT_UP                     = 5,
00847    CEC_REMOTE_BUTTON_RIGHT_DOWN                   = 6,
00848    CEC_REMOTE_BUTTON_LEFT_UP                      = 7,
00849    CEC_REMOTE_BUTTON_LEFT_DOWN                    = 8,
00850    CEC_REMOTE_BUTTON_ROOT_MENU                    = 9,
00851    CEC_REMOTE_BUTTON_SETUP_MENU                   = 10,
00852    CEC_REMOTE_BUTTON_CONTENTS_MENU                = 11,
00853    CEC_REMOTE_BUTTON_FAVORITE_MENU                = 12,
00854    CEC_REMOTE_BUTTON_EXIT                         = 13,
00855    CEC_REMOTE_BUTTON_MEDIA_TOP_MENU               = 16,
00856    CEC_REMOTE_BUTTON_MEDIA_CONTEXT                = 17,
00857    CEC_REMOTE_BUTTON_NUMBER_ENTRY_MODE            = 29,
00858    CEC_REMOTE_BUTTON_NUMBER_11                    = 30,
00859    CEC_REMOTE_BUTTON_NUMBER_12                    = 31,
00860    CEC_REMOTE_BUTTON_NUMBER_0_OR_NUMBER_10        = 32,
00861    CEC_REMOTE_BUTTON_NUMBER_1                     = 33,
00862    CEC_REMOTE_BUTTON_NUMBER_2                     = 34,
00863    CEC_REMOTE_BUTTON_NUMBER_3                     = 35,
00864    CEC_REMOTE_BUTTON_NUMBER_4                     = 36,
00865    CEC_REMOTE_BUTTON_NUMBER_5                     = 37,
00866    CEC_REMOTE_BUTTON_NUMBER_6                     = 38,
00867    CEC_REMOTE_BUTTON_NUMBER_7                     = 39,
00868    CEC_REMOTE_BUTTON_NUMBER_8                     = 40,
00869    CEC_REMOTE_BUTTON_NUMBER_9                     = 41,
00870    CEC_REMOTE_BUTTON_DOT                          = 42,
00871    CEC_REMOTE_BUTTON_ENTER                        = 43,
00872    CEC_REMOTE_BUTTON_CLEAR                        = 44,
00873    CEC_REMOTE_BUTTON_NEXT_FAVORITE                = 47,
00874    CEC_REMOTE_BUTTON_CHANNEL_UP                   = 48,
00875    CEC_REMOTE_BUTTON_CHANNEL_DOWN                 = 49,
00876    CEC_REMOTE_BUTTON_PREVIOUS_CHANNEL             = 50,
00877    CEC_REMOTE_BUTTON_SOUND_SELECT                 = 51,
00878    CEC_REMOTE_BUTTON_INPUT_SELECT                 = 52,
00879    CEC_REMOTE_BUTTON_DISPLAY_INFORMATION          = 53,
00880    CEC_REMOTE_BUTTON_HELP                         = 54,
00881    CEC_REMOTE_BUTTON_PAGE_UP                      = 55,
00882    CEC_REMOTE_BUTTON_PAGE_DOWN                    = 56,
00883    CEC_REMOTE_BUTTON_POWER                        = 64,
00884    CEC_REMOTE_BUTTON_VOLUME_UP                    = 65,
00885    CEC_REMOTE_BUTTON_VOLUME_DOWN                  = 66,
00886    CEC_REMOTE_BUTTON_MUTE                         = 67,
00887    CEC_REMOTE_BUTTON_PLAY                         = 68,
00888    CEC_REMOTE_BUTTON_STOP                         = 69,
00889    CEC_REMOTE_BUTTON_PAUSE                        = 70,
00890    CEC_REMOTE_BUTTON_RECORD                       = 71,
00891    CEC_REMOTE_BUTTON_REWIND                       = 72,
00892    CEC_REMOTE_BUTTON_FAST_FORWARD                 = 73,
00893    CEC_REMOTE_BUTTON_EJECT                        = 74,
00894    CEC_REMOTE_BUTTON_FORWARD                      = 75,
00895    CEC_REMOTE_BUTTON_BACKWARD                     = 76,
00896    CEC_REMOTE_BUTTON_STOP_RECORD                  = 77,
00897    CEC_REMOTE_BUTTON_PAUSE_RECORD                 = 78,
00898    CEC_REMOTE_BUTTON_ANGLE                        = 80,
00899    CEC_REMOTE_BUTTON_SUB_PICTURE                  = 81,
00900    CEC_REMOTE_BUTTON_VIDEO_ON_DEMAND              = 82,
00901    CEC_REMOTE_BUTTON_ELECTRONIC_PROGRAM_GUIDE     = 83,
00902    CEC_REMOTE_BUTTON_TIMER_PROGRAMMING            = 84,
00903    CEC_REMOTE_BUTTON_INITIAL_CONFIGURATION        = 85,
00904    CEC_REMOTE_BUTTON_SELECT_BROADCAST_TYPE        = 86,
00905    CEC_REMOTE_BUTTON_SELECT_SOUND_PRESENTATION    = 87,
00906    CEC_REMOTE_BUTTON_PLAY_FUNCTION                = 96,
00907    CEC_REMOTE_BUTTON_PAUSE_PLAY_FUNCTION          = 97,
00908    CEC_REMOTE_BUTTON_RECORD_FUNCTION              = 98,
00909    CEC_REMOTE_BUTTON_PAUSE_RECORD_FUNCTION        = 99,
00910    CEC_REMOTE_BUTTON_STOP_FUNCTION                = 100,
00911    CEC_REMOTE_BUTTON_MUTE_FUNCTION                = 101,
00912    CEC_REMOTE_BUTTON_RESTORE_VOLUME_FUNCTION      = 102,
00913    CEC_REMOTE_BUTTON_TUNE_FUNCTION                = 103,
00914    CEC_REMOTE_BUTTON_SELECT_MEDIA_FUNCTION        = 104,
00915    CEC_REMOTE_BUTTON_SELECT_AV_INPUT_FUNCTION     = 105,
00916    CEC_REMOTE_BUTTON_SELECT_AUDIO_INPUT_FUNCTION  = 106,
00917    CEC_REMOTE_BUTTON_POWER_TOGGLE_FUNCTION        = 107,
00918    CEC_REMOTE_BUTTON_POWER_OFF_FUNCTION           = 108,
00919    CEC_REMOTE_BUTTON_POWER_ON_FUNCTION            = 109,
00920    CEC_REMOTE_BUTTON_F1_BLUE                      = 113,
00921    CEC_REMOTE_BUTTON_F2_RED                       = 114,
00922    CEC_REMOTE_BUTTON_F3_GREEN                     = 115,
00923    CEC_REMOTE_BUTTON_F4_YELLOW                    = 116,
00924    CEC_REMOTE_BUTTON_F5                           = 117,
00925    CEC_REMOTE_BUTTON_DATA                         = 118
00926 } tmdlHdmiCECUserRemoteControlCommand_t;
00927 
00928 /*!
00929     \enum  tmdlHdmiCECLogicalAddress_t
00930     \brief This enum indicates the logical address of the a device
00931 */
00932 typedef enum
00933 {
00934    CEC_LOGICAL_ADDRESS_TV                     = 0,  /*!< TV                    */
00935    CEC_LOGICAL_ADDRESS_RECORDING_DEVICE_1     = 1,  /*!< Recording Device 1    */
00936    CEC_LOGICAL_ADDRESS_RECORDING_DEVICE_2     = 2,  /*!< Recording Device 1    */
00937    CEC_LOGICAL_ADDRESS_TUNER_1                = 3,  /*!< Tuner 1               */
00938    CEC_LOGICAL_ADDRESS_PLAYBACK_DEVICE_1      = 4,  /*!< Playback Device 1     */
00939    CEC_LOGICAL_ADDRESS_AUDIO_SYSTEM           = 5,  /*!< Audio System          */
00940    CEC_LOGICAL_ADDRESS_TUNER_2                = 6,  /*!< Tuner 2               */
00941    CEC_LOGICAL_ADDRESS_TUNER_3                = 7,  /*!< Tuner 3               */
00942    CEC_LOGICAL_ADDRESS_PLAYBACK_DEVICE_2      = 8,  /*!< Playback Device 2     */
00943    CEC_LOGICAL_ADDRESS_RECORDING_DEVICE_3     = 9,  /*!< Recording Device 3    */
00944    CEC_LOGICAL_ADDRESS_TUNER_4                = 10, /*!< Tuner 4               */
00945    CEC_LOGICAL_ADDRESS_PLAYBACK_DEVICE_3      = 11, /*!< Playback Device 3     */
00946    CEC_LOGICAL_ADDRESS_RESERVED1              = 12, /*!< Reserved              */
00947    CEC_LOGICAL_ADDRESS_RESERVED2              = 13, /*!< Reserved              */
00948    CEC_LOGICAL_ADDRESS_SPECIFIC_USE           = 14, /*!< Specific Use          */
00949    CEC_LOGICAL_ADDRESS_UNREGISTRED_BROADCAST  = 15  /*!< Unregistred/Broadcast */
00950 } tmdlHdmiCECLogicalAddress_t;
00951 
00952 
00953 /*!
00954    \enum  tmdlHdmiCecEvent_t
00955    \brief Enum listing all events that can be signalled to application
00956  */
00957 typedef enum
00958 {
00959     TMDL_HDMICEC_CALLBACK_MESSAGE_AVAILABLE = 0,  /**< A message is available on CEC line */
00960     TMDL_HDMICEC_CALLBACK_STATUS = 1,             /**< Status of CEC line */
00961 } tmdlHdmiCecEvent_t;
00962 
00963 /*!
00964    \enum  tmdlHdmiCecEventStatus_t
00965    \brief Enum listing all available event status
00966  */
00967 typedef enum
00968 {
00969     TMDL_HDMICEC_EVENT_ENABLED,      /*!< Event is enabled  */
00970     TMDL_HDMICEC_EVENT_DISABLED      /*!< Event is disabled */
00971 } tmdlHdmiCecEventStatus_t;
00972 
00973 /**
00974  * \brief System function pointer type, to call user I2C read/write functions
00975  * \param slaveAddr     The I2C slave address
00976  * \param firstRegister The first device register address to read or write 
00977  * \param lenData       Length of data to read or write (i.e. no. of registers)
00978  * \param pData         Pointer to data to write, or to buffer to receive data
00979  * \return              The call result:
00980  *                      - TM_OK: the call was successful
00981  *                      - TMBSL_ERR_HDMI_I2C_WRITE: failed when writing
00982  *                      - TMBSL_ERR_HDMI_I2C_READ:  failed when reading
00983  */
00984 typedef struct
00985 {
00986     UInt8 slaveAddr;
00987     UInt8 firstRegister;
00988     UInt8 lenData;
00989     UInt8 *pData;
00990 } tmdlHdmiCecSysArgs_t;
00991 typedef tmErrorCode_t (*ptmdlHdmiCecSysFunc_t) (tmdlHdmiCecSysArgs_t *pSysArgs);
00992 
00993 
00994 /*!
00995    \brief Timer function pointer type, to call an application timer
00996    \param Parameter ms: Delay in milliseconds required
00997  */
00998 typedef Void (*ptmbslHdmiCecSysFuncTimer_t) (UInt16 ms);
00999 
01000 /*!
01001    \brief Callback function pointer type, used to allow driver to callback
01002           application when activity status is changing at input.
01003    \param Event Identifier of the source event.
01004  */
01005 typedef void (*ptmdlHdmiCecCallbackFunc_t) (tmdlHdmiCecEvent_t event,
01006                                                UInt8           *pdata,
01007                                                UInt8           size);
01008 
01009 /*!
01010    \brief Enum listing all supported device versions
01011  */
01012  typedef enum
01013  {
01014      TMDL_HDMICEC_DEVICE_UNKNOWN, /*!< HW device is unknown   */
01015      TMDL_HDMICEC_DEVICE_TDA9950, /*!< HW device is a TDA9950 */
01016      TMDL_HDMICEC_DEVICE_TDA9989, /*!< HW device is a TDA9989 */
01017  } tmdlHdmiCecDeviceVersion_t;
01018 
01019 
01020 /*!
01021    \brief Enum listing possible CEC clock source
01022  */
01023  typedef enum
01024  {
01025      TMDL_HDMICEC_CLOCK_XTAL,
01026      TMDL_HDMICEC_CLOCK_FRO,
01027      TMDL_HDMICEC_CLOCK_PCLK
01028  } tmdlHdmiCecClockSource_t;
01029 
01030 
01031 /**
01032  * \brief Structure describing unit capabilities
01033  */
01034 typedef struct
01035 {
01036     tmdlHdmiCecDeviceVersion_t DeviceVersion;  /*!< HW device version                        */
01037     tmdlHdmiCECVersion_t       HdmiCecVersion; /*!< Supported HDMI CEC standard version      */
01038 } tmdlHdmiCecCapabilities_t;
01039 
01040  
01041 /*!
01042     \struct tmdlHdmiCECInstanceSetup_t
01043     \brief  This struct is used to setup CEC driver by application
01044             Application setup the device and state of the device.
01045 */
01046 
01047 typedef struct _tmdlHdmiCecInstanceSetup_t
01048 {
01049     tmdlHdmiCECLogicalAddress_t DeviceLogicalAddress;
01050     tmdlHdmiCecClockSource_t    cecClockSource;
01051 //  tmdlHdmiCECDeviceState_t    DeviceState;
01052 } tmdlHdmiCecInstanceSetup_t, *ptmdlHdmiCecInstanceSetup_t; 
01053  
01054  
01055 /**
01056  * \brief The structure of a CEC Data Register Protocol
01057 */
01058 typedef struct
01059 {
01060   UInt8 AddressByte;
01061   Bool  MessageTypePolling;       /* Indicate if it's a poolling message "1" or a normal CEC message "0" */
01062   UInt8 Opcode;
01063 }tmdlHdmiCecSaveMessage_t;
01064 
01065 typedef struct
01066 {
01067   UInt8 FrameByteCount;  
01068   UInt8 AddressByte;
01069   UInt8 DataBytes[15];
01070 }tmdlHdmiCecFrameFormat_t;
01071 
01072 
01073 
01074 #ifdef __cplusplus
01075 }
01076 #endif
01077 
01078 #endif /* TMDLHDMICEC_TYPES_H */
01079 
01080 /*============================================================================*/
01081 /*                            END OF FILE                                     */
01082 /*============================================================================*/
01083 

Hdmi version Tx_4.26 - Generated on Tue Jan 26 09:25:05 2010 - tmdmHdmiCEC component API
PHILIPS