- public enum class CecDeviceType
- {
- Tv = 0,
- RecordingDevice = 1,
- Reserved = 2,
- Tuner = 3,
- PlaybackDevice = 4,
- AudioSystem = 5
- };
-
- public enum class CecLogLevel
- {
- None = 0,
- Error = 1,
- Warning = 2,
- Notice = 4,
- Traffic = 8,
- Debug = 16,
- All = 31
- };
-
- public enum class CecLogicalAddress
- {
- Unknown = -1, //not a valid logical address
- Tv = 0,
- RecordingDevice1 = 1,
- RecordingDevice2 = 2,
- Tuner1 = 3,
- PlaybackDevice1 = 4,
- AudioSystem = 5,
- Tuner2 = 6,
- Tuner3 = 7,
- PlaybackDevice2 = 8,
- RecordingDevice3 = 9,
- Tuner4 = 10,
- PlaybackDevice3 = 11,
- Reserved1 = 12,
- Reserved2 = 13,
- FreeUse = 14,
- Unregistered = 15,
- Broadcast = 15
- };
-
- public enum class CecAlert
- {
- ServiceDevice = 1
- };
-
- public enum class CecParameterType
- {
- ParameterTypeString = 1
- };
-
- public ref class CecParameter
- {
- public:
- CecParameter(CecParameterType type, System::String ^ strData)
- {
- Type = type;
- Data = strData;
- }
-
- property CecParameterType Type;
- property System::String ^ Data;
- };
-
- public enum class CecPowerStatus
- {
- On = 0x00,
- Standby = 0x01,
- InTransitionStandbyToOn = 0x02,
- InTransitionOnToStandby = 0x03,
- Unknown = 0x99
- };
-
- public enum class CecVersion
- {
- Unknown = 0x00,
- V1_2 = 0x01,
- V1_2A = 0x02,
- V1_3 = 0x03,
- V1_3A = 0x04,
- V1_4 = 0x05
- };
-
- public enum class CecDisplayControl
- {
- DisplayForDefaultTime = 0x00,
- DisplayUntilCleared = 0x40,
- ClearPreviousMessage = 0x80,
- ReservedForFutureUse = 0xC0
- };
-
- public enum class CecMenuState
- {
- Activated = 0,
- Deactivated = 1
- };
-
- public enum class CecDeckControlMode
- {
- SkipForwardWind = 1,
- SkipReverseRewind = 2,
- Stop = 3,
- Eject = 4
- };
-
- public enum class CecDeckInfo
- {
- Play = 0x11,
- Record = 0x12,
- Reverse = 0x13,
- Still = 0x14,
- Slow = 0x15,
- SlowReverse = 0x16,
- FastForward = 0x17,
- FastReverse = 0x18,
- NoMedia = 0x19,
- Stop = 0x1A,
- SkipForwardWind = 0x1B,
- SkipReverseRewind = 0x1C,
- IndexSearchForward = 0x1D,
- IndexSearchReverse = 0x1E,
- OtherStatus = 0x1F
- };
-
- public enum class CecUserControlCode
- {
- Select = 0x00,
- Up = 0x01,
- Down = 0x02,
- Left = 0x03,
- Right = 0x04,
- RightUp = 0x05,
- RightDown = 0x06,
- LeftUp = 0x07,
- LeftDown = 0x08,
- RootMenu = 0x09,
- SetupMenu = 0x0A,
- ContentsMenu = 0x0B,
- FavoriteMenu = 0x0C,
- Exit = 0x0D,
- Number0 = 0x20,
- Number1 = 0x21,
- Number2 = 0x22,
- Number3 = 0x23,
- Number4 = 0x24,
- Number5 = 0x25,
- Number6 = 0x26,
- Number7 = 0x27,
- Number8 = 0x28,
- Number9 = 0x29,
- Dot = 0x2A,
- Enter = 0x2B,
- Clear = 0x2C,
- NextFavorite = 0x2F,
- ChannelUp = 0x30,
- ChannelDown = 0x31,
- PreviousChannel = 0x32,
- SoundSelect = 0x33,
- InputSelect = 0x34,
- DisplayInformation = 0x35,
- Help = 0x36,
- PageUp = 0x37,
- PageDown = 0x38,
- Power = 0x40,
- VolumeUp = 0x41,
- VolumeDown = 0x42,
- Mute = 0x43,
- Play = 0x44,
- Stop = 0x45,
- Pause = 0x46,
- Record = 0x47,
- Rewind = 0x48,
- FastForward = 0x49,
- Eject = 0x4A,
- Forward = 0x4B,
- Backward = 0x4C,
- StopRecord = 0x4D,
- PauseRecord = 0x4E,
- Angle = 0x50,
- SubPicture = 0x51,
- VideoOnDemand = 0x52,
- ElectronicProgramGuide = 0x53,
- TimerProgramming = 0x54,
- InitialConfiguration = 0x55,
- PlayFunction = 0x60,
- PausePlayFunction = 0x61,
- RecordFunction = 0x62,
- PauseRecordFunction = 0x63,
- StopFunction = 0x64,
- MuteFunction = 0x65,
- RestoreVolumeFunction = 0x66,
- TuneFunction = 0x67,
- SelectMediaFunction = 0x68,
- SelectAVInputFunction = 0x69,
- SelectAudioInputFunction = 0x6A,
- PowerToggleFunction = 0x6B,
- PowerOffFunction = 0x6C,
- PowerOnFunction = 0x6D,
- F1Blue = 0x71,
- F2Red = 0X72,
- F3Green = 0x73,
- F4Yellow = 0x74,
- F5 = 0x75,
- Data = 0x76,
- Max = 0x76,
- Unknown
- };
-
- public enum class CecVendorId
- {
- Samsung = 0x00F0,
- LG = 0xE091,
- Panasonic = 0x8045,
- Pioneer = 0xE036,
- Onkyo = 0x09B0,
- Yamaha = 0xA0DE,
- Philips = 0x903E,
- Sony = 0x080046,
- Unknown = 0
- };
-
- public enum class CecAudioStatus
- {
- MuteStatusMask = 0x80,
- VolumeStatusMask = 0x7F,
- VolumeMin = 0x00,
- VolumeMax = 0x64,
- VolumeStatusUnknown = 0x7F
- };
-
- public enum class CecOpcode
- {
- ActiveSource = 0x82,
- ImageViewOn = 0x04,
- TextViewOn = 0x0D,
- InactiveSource = 0x9D,
- RequestActiveSource = 0x85,
- RoutingChange = 0x80,
- RoutingInformation = 0x81,
- SetStreamPath = 0x86,
- Standby = 0x36,
- RecordOff = 0x0B,
- RecordOn = 0x09,
- RecordStatus = 0x0A,
- RecordTvScreen = 0x0F,
- ClearAnalogueTimer = 0x33,
- ClearDigitalTimer = 0x99,
- ClearExternalTimer = 0xA1,
- SetAnalogueTimer = 0x34,
- SetDigitalTimer = 0x97,
- SetExternalTimer = 0xA2,
- SetTimerProgramTitle = 0x67,
- TimerClearedStatus = 0x43,
- TimerStatus = 0x35,
- CecVersion = 0x9E,
- GetCecVersion = 0x9F,
- GivePhysicalAddress = 0x83,
- GetMenuLanguage = 0x91,
- ReportPhysicalAddress = 0x84,
- SetMenuLanguage = 0x32,
- DeckControl = 0x42,
- DeckStatus = 0x1B,
- GiveDeckStatus = 0x1A,
- Play = 0x41,
- GiveTunerDeviceStatus = 0x08,
- SelectAnalogueService = 0x92,
- SelectDigtalService = 0x93,
- TunerDeviceStatus = 0x07,
- TunerStepDecrement = 0x06,
- TunerStepIncrement = 0x05,
- DeviceVendorId = 0x87,
- GiveDeviceVendorId = 0x8C,
- VendorCommand = 0x89,
- VendorCommandWithId = 0xA0,
- VendorRemoteButtonDown = 0x8A,
- VendorRemoteButtonUp = 0x8B,
- SetOsdString = 0x64,
- GiveOsdName = 0x46,
- SetOsdName = 0x47,
- MenuRequest = 0x8D,
- MenuStatus = 0x8E,
- UserControlPressed = 0x44,
- UserControlRelease = 0x45,
- GiveDevicePowerStatus = 0x8F,
- ReportPowerStatus = 0x90,
- FeatureAbort = 0x00,
- Abort = 0xFF,
- GiveAudioStatus = 0x71,
- GiveSystemAudioMode = 0x7D,
- ReportAudioStatus = 0x7A,
- SetSystemAudioMode = 0x72,
- SystemAudioModeRequest = 0x70,
- SystemAudioModeStatus = 0x7E,
- SetAudioRate = 0x9A,
- /* when this opcode is set, no opcode will be sent to the device. this is one of the reserved numbers */
- None = 0xFD
- };
-
- public enum class CecSystemAudioStatus
- {
- Off = 0,
- On = 1
- };
-
- public enum class CecClientVersion
- {
- VersionPre1_5 = 0,
- Version1_5_0 = 0x1500,
+ /// <summary>
+ /// The device type. For client applications, libCEC only supports RecordingDevice, PlaybackDevice or Tuner.
+ /// libCEC uses RecordingDevice by default.
+ /// </summary>
+ public enum class CecDeviceType
+ {
+ /// <summary>
+ /// Television
+ /// </summary>
+ Tv = 0,
+ /// <summary>
+ /// Recording device
+ /// </summary>
+ RecordingDevice = 1,
+ /// <summary>
+ /// Reserved / do not use
+ /// </summary>
+ Reserved = 2,
+ /// <summary>
+ /// Tuner
+ /// </summary>
+ Tuner = 3,
+ /// <summary>
+ /// Playback device
+ /// </summary>
+ PlaybackDevice = 4,
+ /// <summary>
+ /// Audio system / AVR
+ /// </summary>
+ AudioSystem = 5
+ };
+
+ /// <summary>
+ /// Log level that can be used by the logging callback method to filter messages from libCEC.
+ /// </summary>
+ public enum class CecLogLevel
+ {
+ /// <summary>
+ /// No logging
+ /// </summary>
+ None = 0,
+ /// <summary>
+ /// libCEC encountered a serious problem, and couldn't complete an action.
+ /// </summary>
+ Error = 1,
+ /// <summary>
+ /// libCEC warns that it encountered a problem, but recovered.
+ /// </summary>
+ Warning = 2,
+ /// <summary>
+ /// libCEC informs the client about a CEC state change.
+ /// </summary>
+ Notice = 4,
+ /// <summary>
+ /// Raw CEC data traffic
+ /// </summary>
+ Traffic = 8,
+ /// <summary>
+ /// Debugging messages
+ /// </summary>
+ Debug = 16,
+ /// <summary>
+ /// Display all messages
+ /// </summary>
+ All = 31
+ };
+
+ /// <summary>
+ /// A logical address on the CEC bus
+ /// </summary>
+ public enum class CecLogicalAddress
+ {
+ /// <summary>
+ /// Not a valid logical address
+ /// </summary>
+ Unknown = -1,
+ /// <summary>
+ /// Television
+ /// </summary>
+ Tv = 0,
+ /// <summary>
+ /// Recording device 1
+ /// </summary>
+ RecordingDevice1 = 1,
+ /// <summary>
+ /// Recording device 2
+ /// </summary>
+ RecordingDevice2 = 2,
+ /// <summary>
+ /// Tuner 1
+ /// </summary>
+ Tuner1 = 3,
+ /// <summary>
+ /// Playback device 1
+ /// </summary>
+ PlaybackDevice1 = 4,
+ /// <summary>
+ /// Audio system / AVR
+ /// </summary>
+ AudioSystem = 5,
+ /// <summary>
+ /// Tuner 2
+ /// </summary>
+ Tuner2 = 6,
+ /// <summary>
+ /// Tuner 3
+ /// </summary>
+ Tuner3 = 7,
+ /// <summary>
+ /// Playback device 2
+ /// </summary>
+ PlaybackDevice2 = 8,
+ /// <summary>
+ /// Recording device 3
+ /// </summary>
+ RecordingDevice3 = 9,
+ /// <summary>
+ /// Tuner 4
+ /// </summary>
+ Tuner4 = 10,
+ /// <summary>
+ /// Playback device 3
+ /// </summary>
+ PlaybackDevice3 = 11,
+ /// <summary>
+ /// Reserved address 1
+ /// </summary>
+ Reserved1 = 12,
+ /// <summary>
+ /// Reserved address 2
+ /// </summary>
+ Reserved2 = 13,
+ /// <summary>
+ /// Free to use
+ /// </summary>
+ FreeUse = 14,
+ /// <summary>
+ /// Unregistered / new device
+ /// </summary>
+ Unregistered = 15,
+ /// <summary>
+ /// Broadcast address
+ /// </summary>
+ Broadcast = 15
+ };
+
+ /// <summary>
+ /// The type of alert when libCEC calls the CecAlert callback
+ /// </summary>
+ public enum class CecAlert
+ {
+ /// <summary>
+ /// The device needs servicing. This is set when the firmware can be upgraded, or when a problem with the firmware is detected.
+ /// The latest firmware flash tool can be downloaded from http://packages.pulse-eight.net/
+ /// </summary>
+ ServiceDevice = 0,
+ /// <summary>
+ /// The connection to the adapter was lost, probably because the device got unplugged.
+ /// </summary>
+ ConnectionLost,
+ /// <summary>
+ /// No permission from the OS to access the adapter.
+ /// </summary>
+ PermissionError,
+ /// <summary>
+ /// The device is being used by another program.
+ /// </summary>
+ PortBusy,
+ /// <summary>
+ /// The physical address that is assigned to the adapter is already being used.
+ /// </summary>
+ PhysicalAddressError,
+ /// <summary>
+ /// The TV does not respond to polls.
+ /// </summary>
+ TVPollFailed
+ };
+
+ /// <summary>
+ /// The type of parameter that is sent with the CecAlert callback
+ /// </summary>
+ public enum class CecParameterType
+ {
+ /// <summary>
+ /// The parameter is a string
+ /// </summary>
+ ParameterTypeString = 1
+ };
+
+ /// <summary>
+ /// A parameter for the CecAlert callback
+ /// </summary>
+ public ref class CecParameter
+ {
+ public:
+ /// <summary>
+ /// Create a new parameter
+ /// </summary>
+ /// <param name="type">The type of this parameter.</param>
+ /// <param name="data">The value of this parameter.</param>
+ CecParameter(CecParameterType type, System::String ^ data)
+ {
+ Type = type;
+ Data = data;
+ }
+
+ /// <summary>
+ /// The type of this parameter
+ /// </summary>
+ property CecParameterType Type;
+ /// <summary>
+ /// The value of this parameter
+ /// </summary>
+ property System::String ^ Data;
+ };
+
+ /// <summary>
+ /// The power status of a CEC device
+ /// </summary>
+ public enum class CecPowerStatus
+ {
+ /// <summary>
+ /// Powered on
+ /// </summary>
+ On = 0x00,
+ /// <summary>
+ /// In standby mode
+ /// </summary>
+ Standby = 0x01,
+ /// <summary>
+ /// In transition from standby to on
+ /// </summary>
+ InTransitionStandbyToOn = 0x02,
+ /// <summary>
+ /// In transition from on to standby
+ /// </summary>
+ InTransitionOnToStandby = 0x03,
+ /// <summary>
+ /// Unknown status
+ /// </summary>
+ Unknown = 0x99
+ };
+
+ /// <summary>
+ /// The CEC version of a CEC device
+ /// </summary>
+ public enum class CecVersion
+ {
+ /// <summary>
+ /// Unknown version
+ /// </summary>
+ Unknown = 0x00,
+ /// <summary>
+ /// Version 1.2
+ /// </summary>
+ V1_2 = 0x01,
+ /// <summary>
+ /// Version 1.2a
+ /// </summary>
+ V1_2A = 0x02,
+ /// <summary>
+ /// Version 1.3
+ /// </summary>
+ V1_3 = 0x03,
+ /// <summary>
+ /// Version 1.3a
+ /// </summary>
+ V1_3A = 0x04,
+ /// <summary>
+ /// Version 1.4
+ /// </summary>
+ V1_4 = 0x05
+ };
+
+ /// <summary>
+ /// Parameter for OSD string display, that controls how to display the string
+ /// </summary>
+ public enum class CecDisplayControl
+ {
+ /// <summary>
+ /// Display for the default time
+ /// </summary>
+ DisplayForDefaultTime = 0x00,
+ /// <summary>
+ /// Display until it is cleared by ClearPreviousMessage
+ /// </summary>
+ DisplayUntilCleared = 0x40,
+ /// <summary>
+ /// Clear message displayed by DisplayUntilCleared
+ /// </summary>
+ ClearPreviousMessage = 0x80,
+ /// <summary>
+ /// Reserved / do not use
+ /// </summary>
+ ReservedForFutureUse = 0xC0
+ };
+
+ /// <summary>
+ /// The menu state of a CEC device
+ /// </summary>
+ public enum class CecMenuState
+ {
+ /// <summary>
+ /// Menu active
+ /// </summary>
+ Activated = 0,
+ /// <summary>
+ /// Menu not active
+ /// </summary>
+ Deactivated = 1
+ };
+
+ /// <summary>
+ /// Deck control mode for playback and recording devices
+ /// </summary>
+ public enum class CecDeckControlMode
+ {
+ /// <summary>
+ /// Skip forward / wind
+ /// </summary>
+ SkipForwardWind = 1,
+ /// <summary>
+ /// Skip reverse / rewind
+ /// </summary>
+ SkipReverseRewind = 2,
+ /// <summary>
+ /// Stop
+ /// </summary>
+ Stop = 3,
+ /// <summary>
+ /// Eject
+ /// </summary>
+ Eject = 4
+ };
+
+ /// <summary>
+ /// Deck status for playback and recording devices
+ /// </summary>
+ public enum class CecDeckInfo
+ {
+ /// <summary>
+ /// Playing
+ /// </summary>
+ Play = 0x11,
+ /// <summary>
+ /// Recording
+ /// </summary>
+ Record = 0x12,
+ /// <summary>
+ /// Reverse
+ /// </summary>
+ Reverse = 0x13,
+ /// <summary>
+ /// Showing still frame
+ /// </summary>
+ Still = 0x14,
+ /// <summary>
+ /// Playing slow
+ /// </summary>
+ Slow = 0x15,
+ /// <summary>
+ /// Playing slow reverse
+ /// </summary>
+ SlowReverse = 0x16,
+ /// <summary>
+ /// Fast forward
+ /// </summary>
+ FastForward = 0x17,
+ /// <summary>
+ /// Fast reverse
+ /// </summary>
+ FastReverse = 0x18,
+ /// <summary>
+ /// No media detected
+ /// </summary>
+ NoMedia = 0x19,
+ /// <summary>
+ /// Stop / not playing
+ /// </summary>
+ Stop = 0x1A,
+ /// <summary>
+ /// Skip forward / wind
+ /// </summary>
+ SkipForwardWind = 0x1B,
+ /// <summary>
+ /// Skip reverse / rewind
+ /// </summary>
+ SkipReverseRewind = 0x1C,
+ /// <summary>
+ /// Index search forward
+ /// </summary>
+ IndexSearchForward = 0x1D,
+ /// <summary>
+ /// Index search reverse
+ /// </summary>
+ IndexSearchReverse = 0x1E,
+ /// <summary>
+ /// Other / unknown status
+ /// </summary>
+ OtherStatus = 0x1F
+ };
+
+ /// <summary>
+ /// User control code, the key code when the user presses or releases a button on the remote.
+ /// Used by SendKeypress() and the CecKey callback.
+ /// </summary>
+ public enum class CecUserControlCode
+ {
+ /// <summary>
+ /// Select / OK
+ /// </summary>
+ Select = 0x00,
+ /// <summary>
+ /// Direction up
+ /// </summary>
+ Up = 0x01,
+ /// <summary>
+ /// Direction down
+ /// </summary>
+ Down = 0x02,
+ /// <summary>
+ /// Direction left
+ /// </summary>
+ Left = 0x03,
+ /// <summary>
+ /// Direction right
+ /// </summary>
+ Right = 0x04,
+ /// <summary>
+ /// Direction right + up
+ /// </summary>
+ RightUp = 0x05,
+ /// <summary>
+ /// Direction right + down
+ /// </summary>
+ RightDown = 0x06,
+ /// <summary>
+ /// Direction left + up
+ /// </summary>
+ LeftUp = 0x07,
+ /// <summary>
+ /// Direction left + down
+ /// </summary>
+ LeftDown = 0x08,
+ /// <summary>
+ /// Root menu
+ /// </summary>
+ RootMenu = 0x09,
+ /// <summary>
+ /// Setup menu
+ /// </summary>
+ SetupMenu = 0x0A,
+ /// <summary>
+ /// Contents menu
+ /// </summary>
+ ContentsMenu = 0x0B,
+ /// <summary>
+ /// Favourite menu
+ /// </summary>
+ FavoriteMenu = 0x0C,
+ /// <summary>
+ /// Exit / back
+ /// </summary>
+ Exit = 0x0D,
+ /// <summary>
+ /// Number 0
+ /// </summary>
+ Number0 = 0x20,
+ /// <summary>
+ /// Number 1
+ /// </summary>
+ Number1 = 0x21,
+ /// <summary>
+ /// Number 2
+ /// </summary>
+ Number2 = 0x22,
+ /// <summary>
+ /// Number 3
+ /// </summary>
+ Number3 = 0x23,
+ /// <summary>
+ /// Number 4
+ /// </summary>
+ Number4 = 0x24,
+ /// <summary>
+ /// Number 5
+ /// </summary>
+ Number5 = 0x25,
+ /// <summary>
+ /// Number 6
+ /// </summary>
+ Number6 = 0x26,
+ /// <summary>
+ /// Number 7
+ /// </summary>
+ Number7 = 0x27,
+ /// <summary>
+ /// Number 8
+ /// </summary>
+ Number8 = 0x28,
+ /// <summary>
+ /// Number 9
+ /// </summary>
+ Number9 = 0x29,
+ /// <summary>
+ /// .
+ /// </summary>
+ Dot = 0x2A,
+ /// <summary>
+ /// Enter input
+ /// </summary>
+ Enter = 0x2B,
+ /// <summary>
+ /// Clear input
+ /// </summary>
+ Clear = 0x2C,
+ /// <summary>
+ /// Next favourite
+ /// </summary>
+ NextFavorite = 0x2F,
+ /// <summary>
+ /// Channel up
+ /// </summary>
+ ChannelUp = 0x30,
+ /// <summary>
+ /// Channel down
+ /// </summary>
+ ChannelDown = 0x31,
+ /// <summary>
+ /// Previous channel
+ /// </summary>
+ PreviousChannel = 0x32,
+ /// <summary>
+ /// Select sound track
+ /// </summary>
+ SoundSelect = 0x33,
+ /// <summary>
+ /// Select input
+ /// </summary>
+ InputSelect = 0x34,
+ /// <summary>
+ /// Display information
+ /// </summary>
+ DisplayInformation = 0x35,
+ /// <summary>
+ /// Show help
+ /// </summary>
+ Help = 0x36,
+ /// <summary>
+ /// Page up
+ /// </summary>
+ PageUp = 0x37,
+ /// <summary>
+ /// Page down
+ /// </summary>
+ PageDown = 0x38,
+ /// <summary>
+ /// Toggle powered on / standby
+ /// </summary>
+ Power = 0x40,
+ /// <summary>
+ /// Volume up
+ /// </summary>
+ VolumeUp = 0x41,
+ /// <summary>
+ /// Volume down
+ /// </summary>
+ VolumeDown = 0x42,
+ /// <summary>
+ /// Mute audio
+ /// </summary>
+ Mute = 0x43,
+ /// <summary>
+ /// Start playback
+ /// </summary>
+ Play = 0x44,
+ /// <summary>
+ /// Stop playback
+ /// </summary>
+ Stop = 0x45,
+ /// <summary>
+ /// Pause playback
+ /// </summary>
+ Pause = 0x46,
+ /// <summary>
+ /// Toggle recording
+ /// </summary>
+ Record = 0x47,
+ /// <summary>
+ /// Rewind
+ /// </summary>
+ Rewind = 0x48,
+ /// <summary>
+ /// Fast forward
+ /// </summary>
+ FastForward = 0x49,
+ /// <summary>
+ /// Eject media
+ /// </summary>
+ Eject = 0x4A,
+ /// <summary>
+ /// Forward
+ /// </summary>
+ Forward = 0x4B,
+ /// <summary>
+ /// Backward
+ /// </summary>
+ Backward = 0x4C,
+ /// <summary>
+ /// Stop recording
+ /// </summary>
+ StopRecord = 0x4D,
+ /// <summary>
+ /// Pause recording
+ /// </summary>
+ PauseRecord = 0x4E,
+ /// <summary>
+ /// Change angle
+ /// </summary>
+ Angle = 0x50,
+ /// <summary>
+ /// Toggle sub picture
+ /// </summary>
+ SubPicture = 0x51,
+ /// <summary>
+ /// Toggle video on demand
+ /// </summary>
+ VideoOnDemand = 0x52,
+ /// <summary>
+ /// Toggle electronic program guide (EPG)
+ /// </summary>
+ ElectronicProgramGuide = 0x53,
+ /// <summary>
+ /// Toggle timer programming
+ /// </summary>
+ TimerProgramming = 0x54,
+ /// <summary>
+ /// Set initial configuration
+ /// </summary>
+ InitialConfiguration = 0x55,
+ /// <summary>
+ /// Start playback function
+ /// </summary>
+ PlayFunction = 0x60,
+ /// <summary>
+ /// Pause playback function
+ /// </summary>
+ PausePlayFunction = 0x61,
+ /// <summary>
+ /// Toggle recording function
+ /// </summary>
+ RecordFunction = 0x62,
+ /// <summary>
+ /// Pause recording function
+ /// </summary>
+ PauseRecordFunction = 0x63,
+ /// <summary>
+ /// Stop playback function
+ /// </summary>
+ StopFunction = 0x64,
+ /// <summary>
+ /// Mute audio function
+ /// </summary>
+ MuteFunction = 0x65,
+ /// <summary>
+ /// Restore volume function
+ /// </summary>
+ RestoreVolumeFunction = 0x66,
+ /// <summary>
+ /// Tune function
+ /// </summary>
+ TuneFunction = 0x67,
+ /// <summary>
+ /// Select media function
+ /// </summary>
+ SelectMediaFunction = 0x68,
+ /// <summary>
+ /// Select AV input function
+ /// </summary>
+ SelectAVInputFunction = 0x69,
+ /// <summary>
+ /// Select audio input function
+ /// </summary>
+ SelectAudioInputFunction = 0x6A,
+ /// <summary>
+ /// Toggle powered on / standby function
+ /// </summary>
+ PowerToggleFunction = 0x6B,
+ /// <summary>
+ /// Power off function
+ /// </summary>
+ PowerOffFunction = 0x6C,
+ /// <summary>
+ /// Power on function
+ /// </summary>
+ PowerOnFunction = 0x6D,
+ /// <summary>
+ /// F1 / blue button
+ /// </summary>
+ F1Blue = 0x71,
+ /// <summary>
+ /// F2 / red button
+ /// </summary>
+ F2Red = 0X72,
+ /// <summary>
+ /// F3 / green button
+ /// </summary>
+ F3Green = 0x73,
+ /// <summary>
+ /// F4 / yellow button
+ /// </summary>
+ F4Yellow = 0x74,
+ /// <summary>
+ /// F5
+ /// </summary>
+ F5 = 0x75,
+ /// <summary>
+ /// Data / teletext
+ /// </summary>
+ Data = 0x76,
+ /// <summary>
+ /// Max. valid key code for standard buttons
+ /// </summary>
+ Max = 0x76,
+ /// <summary>
+ /// Extra return button on Samsung remotes
+ /// </summary>
+ SamsungReturn = 0x91,
+ /// <summary>
+ /// Unknown / invalid key code
+ /// </summary>
+ Unknown
+ };
+
+ /// <summary>
+ /// Vendor IDs for CEC devices
+ /// </summary>
+ public enum class CecVendorId
+ {
+ Toshiba = 0x000039,
+ Samsung = 0x0000F0,
+ Denon = 0x0005CD,
+ Marantz = 0x000678,
+ Loewe = 0x000982,
+ Onkyo = 0x0009B0,
+ Medion = 0x000CB8,
+ Toshiba2 = 0x000CE7,
+ PulseEight = 0x001582,
+ Akai = 0x0020C7,
+ AOC = 0x002467,
+ Panasonic = 0x008045,
+ Philips = 0x00903E,
+ Daewoo = 0x009053,
+ Yamaha = 0x00A0DE,
+ Grundig = 0x00D0D5,
+ Pioneer = 0x00E036,
+ LG = 0x00E091,
+ Sharp = 0x08001F,
+ Sony = 0x080046,
+ Broadcom = 0x18C086,
+ Vizio = 0x6B746D,
+ Benq = 0x8065E9,
+ HarmanKardon = 0x9C645E,
+ Unknown = 0
+ };
+
+ /// <summary>
+ /// Audio status of audio system / AVR devices
+ /// </summary>
+ public enum class CecAudioStatus
+ {
+ /// <summary>
+ /// Muted
+ /// </summary>
+ MuteStatusMask = 0x80,
+ /// <summary>
+ /// Not muted, volume status mask
+ /// </summary>
+ VolumeStatusMask = 0x7F,
+ /// <summary>
+ /// Minumum volume
+ /// </summary>
+ VolumeMin = 0x00,
+ /// <summary>
+ /// Maximum volume
+ /// </summary>
+ VolumeMax = 0x64,
+ /// <summary>
+ /// Unknown status
+ /// </summary>
+ VolumeStatusUnknown = 0x7F
+ };
+
+ /// <summary>
+ /// CEC opcodes, as described in the HDMI CEC specification
+ /// </summary>
+ public enum class CecOpcode
+ {
+ /// <summary>
+ /// Active source
+ /// </summary>
+ ActiveSource = 0x82,
+ /// <summary>
+ /// Image view on: power on display for image display
+ /// </summary>
+ ImageViewOn = 0x04,
+ /// <summary>
+ /// Text view on: power on display for text display
+ /// </summary>
+ TextViewOn = 0x0D,
+ /// <summary>
+ /// Device no longer is the active source
+ /// </summary>
+ InactiveSource = 0x9D,
+ /// <summary>
+ /// Request which device has the active source status
+ /// </summary>
+ RequestActiveSource = 0x85,
+ /// <summary>
+ /// Routing change for HDMI switches
+ /// </summary>
+ RoutingChange = 0x80,
+ /// <summary>
+ /// Routing information for HDMI switches
+ /// </summary>
+ RoutingInformation = 0x81,
+ /// <summary>
+ /// Change the stream path to the given physical address
+ /// </summary>
+ SetStreamPath = 0x86,
+ /// <summary>
+ /// Inform that a device went into standby mode
+ /// </summary>
+ Standby = 0x36,
+ /// <summary>
+ /// Stop recording
+ /// </summary>
+ RecordOff = 0x0B,
+ /// <summary>
+ /// Start recording
+ /// </summary>
+ RecordOn = 0x09,
+ /// <summary>
+ /// Recording status information
+ /// </summary>
+ RecordStatus = 0x0A,
+ /// <summary>
+ /// Record current display
+ /// </summary>
+ RecordTvScreen = 0x0F,
+ /// <summary>
+ /// Clear analogue timer
+ /// </summary>
+ ClearAnalogueTimer = 0x33,
+ /// <summary>
+ /// Clear digital timer
+ /// </summary>
+ ClearDigitalTimer = 0x99,
+ /// <summary>
+ /// Clear external timer
+ /// </summary>
+ ClearExternalTimer = 0xA1,
+ /// <summary>
+ /// Set analogue timer
+ /// </summary>
+ SetAnalogueTimer = 0x34,
+ /// <summary>
+ /// Set digital timer
+ /// </summary>
+ SetDigitalTimer = 0x97,
+ /// <summary>
+ /// Set external timer
+ /// </summary>
+ SetExternalTimer = 0xA2,
+ /// <summary>
+ /// Set program title of a timer
+ /// </summary>
+ SetTimerProgramTitle = 0x67,
+ /// <summary>
+ /// Timer status cleared
+ /// </summary>
+ TimerClearedStatus = 0x43,
+ /// <summary>
+ /// Timer status information
+ /// </summary>
+ TimerStatus = 0x35,
+ /// <summary>
+ /// CEC version used by a device
+ /// </summary>
+ CecVersion = 0x9E,
+ /// <summary>
+ /// Request CEC version of a device
+ /// </summary>
+ GetCecVersion = 0x9F,
+ /// <summary>
+ /// Request physical address of a device
+ /// </summary>
+ GivePhysicalAddress = 0x83,
+ /// <summary>
+ /// Request language code of the menu language of a device
+ /// 3 character ISO 639-2 country code. see http://http://www.loc.gov/standards/iso639-2/
+ /// </summary>
+ GetMenuLanguage = 0x91,
+ /// <summary>
+ /// Report the physical address
+ /// </summary>
+ ReportPhysicalAddress = 0x84,
+ /// <summary>
+ /// Report the language code of the menu language
+ /// 3 character ISO 639-2 country code. see http://http://www.loc.gov/standards/iso639-2/
+ /// </summary>
+ SetMenuLanguage = 0x32,
+ /// <summary>
+ /// Deck control for playback and recording devices
+ /// </summary>
+ DeckControl = 0x42,
+ /// <summary>
+ /// Deck status for playback and recording devices
+ /// </summary>
+ DeckStatus = 0x1B,
+ /// <summary>
+ /// Request deck status from playback and recording devices
+ /// </summary>
+ GiveDeckStatus = 0x1A,
+ /// <summary>
+ /// Start playback on playback and recording devices
+ /// </summary>
+ Play = 0x41,
+ /// <summary>
+ /// Request tuner status
+ /// </summary>
+ GiveTunerDeviceStatus = 0x08,
+ /// <summary>
+ /// Select analogue service on a tuner
+ /// </summary>
+ SelectAnalogueService = 0x92,
+ /// <summary>
+ /// Select digital service on a tuner
+ /// </summary>
+ SelectDigtalService = 0x93,
+ /// <summary>
+ /// Report tuner device status
+ /// </summary>
+ TunerDeviceStatus = 0x07,
+ /// <summary>
+ /// Tuner step decrement
+ /// </summary>
+ TunerStepDecrement = 0x06,
+ /// <summary>
+ /// Tuner step increment
+ /// </summary>
+ TunerStepIncrement = 0x05,
+ /// <summary>
+ /// Report device vendor ID
+ /// </summary>
+ DeviceVendorId = 0x87,
+ /// <summary>
+ /// Request device vendor ID
+ /// </summary>
+ GiveDeviceVendorId = 0x8C,
+ /// <summary>
+ /// Vendor specific command
+ /// </summary>
+ VendorCommand = 0x89,
+ /// <summary>
+ /// Vendor specific command with vendor ID
+ /// </summary>
+ VendorCommandWithId = 0xA0,
+ /// <summary>
+ /// Vendor specific remote button pressed
+ /// </summary>
+ VendorRemoteButtonDown = 0x8A,
+ /// <summary>
+ /// Vendor specific remote button released
+ /// </summary>
+ VendorRemoteButtonUp = 0x8B,
+ /// <summary>
+ /// Display / clear OSD string
+ /// </summary>
+ SetOsdString = 0x64,
+ /// <summary>
+ /// Request device OSD name
+ /// </summary>
+ GiveOsdName = 0x46,
+ /// <summary>
+ /// Report device OSD name
+ /// </summary>
+ SetOsdName = 0x47,
+ /// <summary>
+ /// Request device menu status
+ /// </summary>
+ MenuRequest = 0x8D,
+ /// <summary>
+ /// Report device menu status
+ /// </summary>
+ MenuStatus = 0x8E,
+ /// <summary>
+ /// Remote button pressed
+ /// </summary>
+ UserControlPressed = 0x44,
+ /// <summary>
+ /// Remote button released
+ /// </summary>
+ UserControlRelease = 0x45,
+ /// <summary>
+ /// Request device power status
+ /// </summary>
+ GiveDevicePowerStatus = 0x8F,
+ /// <summary>
+ /// Report device power status
+ /// </summary>
+ ReportPowerStatus = 0x90,
+ /// <summary>
+ /// Feature abort / unsupported command
+ /// </summary>
+ FeatureAbort = 0x00,
+ /// <summary>
+ /// Abort command
+ /// </summary>
+ Abort = 0xFF,
+ /// <summary>
+ /// Give audio status
+ /// </summary>
+ GiveAudioStatus = 0x71,
+ /// <summary>
+ /// Give audiosystem mode
+ /// </summary>
+ GiveSystemAudioMode = 0x7D,
+ /// <summary>
+ /// Report device audio status
+ /// </summary>
+ ReportAudioStatus = 0x7A,
+ /// <summary>
+ /// Set audiosystem mode
+ /// </summary>
+ SetSystemAudioMode = 0x72,
+ /// <summary>
+ /// Request audiosystem mode
+ /// </summary>
+ SystemAudioModeRequest = 0x70,
+ /// <summary>
+ /// Report audiosystem mode
+ /// </summary>
+ SystemAudioModeStatus = 0x7E,
+ /// <summary>
+ /// Set audio bitrate
+ /// </summary>
+ SetAudioRate = 0x9A,
+ /// <summary>
+ /// When this opcode is set, no opcode will be sent to the device / poll message
+ /// This is one of the reserved numbers
+ /// </summary>
+ None = 0xFD
+ };
+
+ /// <summary>
+ /// Audiosystem status
+ /// </summary>
+ public enum class CecSystemAudioStatus
+ {
+ /// <summary>
+ /// Turned off
+ /// </summary>
+ Off = 0,
+ /// <summary>
+ /// Turned on
+ /// </summary>
+ On = 1
+ };
+
+ /// <summary>
+ /// libCEC client application version
+ /// </summary>
+ public enum class CecClientVersion
+ {
+ /// <summary>
+ /// before v1.5.0
+ /// </summary>
+ VersionPre1_5 = 0,
+ /// <summary>
+ /// v1.5.0
+ /// </summary>
+ Version1_5_0 = 0x1500,
+ /// <summary>
+ /// v1.5.1
+ /// </summary>