Skip to content

virtual hdmi analyzer changes#215

Open
thanushreevani wants to merge 7 commits into
feature/gh177-hdmianalyzerfrom
feature/issue214_virtual_hdmianalyser
Open

virtual hdmi analyzer changes#215
thanushreevani wants to merge 7 commits into
feature/gh177-hdmianalyzerfrom
feature/issue214_virtual_hdmianalyser

Conversation

@thanushreevani

Copy link
Copy Markdown

Updated the hdmi controller related changes for hdmi output

Copilot AI review requested due to automatic review settings June 18, 2026 12:17
@thanushreevani thanushreevani added the enhancement New feature or request label Jun 18, 2026
@thanushreevani thanushreevani linked an issue Jun 18, 2026 that may be closed by this pull request

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the framework’s HDMI analyser support to enable HDMI output–related event injection by adding new analyser backends (virtual + manual) and wiring them into the existing HDMIAnalyserController facade and testController.

Changes:

  • Expose hdmiAnalyserController on testController for easier access in tests.
  • Add virtualHdmiController and manualHdmiController backends and register them in HDMIAnalyserController.
  • Add YAML command templates for HDMI output events (EDID read, frame-rate change, HDCP status, hotplug state).

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
framework/core/testControl.py Exposes self.hdmiAnalyserController from the DUT.
framework/core/hdmiAnalyserModules/virtualHdmiController.py New virtual controller that sends HDMI output events to utPlaneController.
framework/core/hdmiAnalyserModules/manualHdmiController.py New manual controller intended for interactive hotplug handling.
framework/core/hdmiAnalyserModules/commands/hdmioutput_hotplug_state.yaml Adds YAML template for hotplug state event.
framework/core/hdmiAnalyserModules/commands/hdmioutput_hdcp_status.yaml Adds YAML template for HDCP status event.
framework/core/hdmiAnalyserModules/commands/hdmioutput_frame_rate_changed.yaml Adds YAML template for frame-rate changed event.
framework/core/hdmiAnalyserModules/commands/hdmioutput_edid_read.yaml Adds YAML template for EDID read event.
framework/core/hdmiAnalyserController.py Registers new backend types and adds HDMI-output event facade methods.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread framework/core/hdmiAnalyserModules/manualHdmiController.py
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserController.py
Comment thread framework/core/hdmiAnalyserController.py Outdated
Comment thread framework/core/hdmiAnalyserController.py
Comment thread framework/core/hdmiAnalyserController.py
Comment thread framework/core/hdmiAnalyserController.py
Comment thread framework/core/hdmiAnalyserController.py Outdated
Comment thread framework/core/hdmiAnalyserController.py
Copilot AI review requested due to automatic review settings June 25, 2026 09:31
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 9 comments.

Comment thread framework/core/hdmiAnalyserModules/manualHdmiController.py
Comment thread framework/core/hdmiAnalyserModules/manualHdmiController.py Outdated
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserController.py
Comment thread examples/configs/example_rack_config.yml
Copilot AI review requested due to automatic review settings June 25, 2026 11:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 7 comments.

Comment thread framework/core/hdmiAnalyserModules/manualHdmiController.py Outdated
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserModules/virtualHdmiController.py
Comment thread framework/core/hdmiAnalyserController.py
Comment thread framework/core/hdmiAnalyserModules/manualHdmiController.py Outdated
Comment thread framework/core/hdmiAnalyserModules/manualHdmiController.py Outdated
Comment thread framework/core/hdmiAnalyserController.py
@kanjoe24 kanjoe24 requested review from TB-1993 and bhanucbp June 29, 2026 08:29
Copilot AI review requested due to automatic review settings June 30, 2026 09:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 19 out of 19 changed files in this pull request and generated 8 comments.

Comment on lines +84 to +98
def setHDCPStatus(self, port: int, status: str, version: str):
if self.analyserdevice == "sink":
with open(HDMIOUT_HDCP_STATUS_CMD_TEMPLATE, 'r') as f:
msg = yaml.safe_load(f)
msg['hdmioutput']['params']['port'] = port
msg['hdmioutput']['params']['status'] = status
msg['hdmioutput']['params']['version'] = version
elif self.analyserdevice == "source":
with open(HDCP_STATUS_CMD_TEMPLATE, 'r') as f:
msg = yaml.safe_load(f)
msg['hdmiinput']['params']['port'] = port
msg['hdmiinput']['params']['state'] = status
msg['hdmiinput']['params']['version'] = version
yaml_str = yaml.dump(msg)
return self.utPlaneController.sendMessage(yaml_str)
Comment on lines +100 to +112
def setHotplugState(self, port: int, connected: bool, version: str):
if self.analyserdevice == "sink":
with open(HPD_STATUS_CMD_TEMPLATE, 'r') as f:
msg = yaml.safe_load(f)
msg['hdmioutput']['params']['port'] = port
msg['hdmioutput']['params']['connected'] = connected
elif self.analyserdevice == "source":
with open(CONNECTION_STATUS_CMD_TEMPLATE, 'r') as f:
msg = yaml.safe_load(f)
msg['hdmiinput']['params']['port'] = port
msg['hdmiinput']['params']['connected'] = connected
yaml_str = yaml.dump(msg)
return self.utPlaneController.sendMessage(yaml_str)
Comment on lines +252 to +256
def connect(self):
return True

def disconnect(self):
return True
Comment on lines +158 to +159
print(f"Validate EDID for HDMI input port {port} with expected data {expected_edid} Done")
return True
Comment on lines +229 to +230
print(f"SetHDCP version '{hdcp_version}' for HDMI input port {port} Done")
return True
Comment on lines +70 to +74
password: "secret"
prompt: "~#"
device: "hdmi" # used to resolve <device>_control_port
source_control_port: 8080 # optional, defaults to 8080
sink_control_port: 8081
Comment on lines +91 to +93
elif self.controllerType == "manual-hdmi-controller":
#if self.controllerType == "manual-hdmi-controller":
self.hdmiAnalyser = manualHdmiController(self._log,
Comment on lines +238 to +249
def sendEDIDRead(self, port: int, data: list):
"""
Send an EDID read event for the HDMI output port.

Args:
port (int): HDMI output port number.
data (list): EDID data bytes.

Returns:
bool: True if message/event handled successfully.
"""
return self.hdmiAnalyser.sendEDIDRead(port, data)
@TB-1993

TB-1993 commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

This isn't correct, you can't merge feature branches into feature branches. This needs to wait until #212 is merged. Then this will need to be rebased on develop. Before it can be reviewed and merged.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we can name this just virtualHDMIController. Since it is specific to the RDK Vdevice.

Comment on lines +422 to +438
def start(self):
"""
Start the HDMI controller.

Returns:
None
"""
return self.hdmiAnalyser.start()

def stop(self):
"""
Stop the HDMI controller.

Returns:
None
"""
return self.hdmiAnalyser.stop() No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is unnecessary. Neither of the new controllers do anything when you run the start and stop and the m42h doesn't have start and stop. The controllers can't have more methods than the interface, that just means it'll break when we swap to different equipment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Task:Implement Virtual HDMI Analyser changes

5 participants