-
Notifications
You must be signed in to change notification settings - Fork 3
RDKEMW-9474: ctrlm multiple IRDB support #161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
* Deploy cla action * RDKEMW-7174 : update AMC APP key mapping (#98) * RDKEMW-3409 : move certselector logic into ctrlm-main repo (#102) * RDKEMW-6767: getNetStatus call time out due to SAT download retries (#97) Reason for change: During initial setup, the device is attempting to download the SAT token and timing out, which is holding up the ctrlm message queue processing, which allows BLE pairing to fail Test Procedure: boot and attempt to pair BLE remote, keeping an eye on ctrlm loggging. Look for "CTRLM : ERROR: call_plugin: Thunder call failed <getServiceAccessToken> <11>, attempt 1 of 1" We expect BLE pairing to succeed rather than timeout. If the call_plugin log error occurs and BLE pairing succeed then the code change has been exercised and the issue is resolved. Risks: Low Priority: P1 Signed-off-by: Jason Thomson <[email protected]> * RDKEMW-7333: remove device from bluez during factory reset (#100) When an RDK device is factory reset, controlMgr will send a message to the remote to also factory reset itself. Once controlMgr gets notified from the remote of a successful RCU factory reset, it needs to be requested to bluez to remove the device. This prevents a connection attempt from happening to the just factory-reset RCU before the RDK device reboots. This connection attempt will prevent the RCU from autopairing during the activation flow after the RDK factory reset. * RDKEMW-7573 : remove ctrlm compile flags (#104) * RDKEMW-7694 : remove ctrlm build flags - CPC, DUNFELL (#105) * RDKEMW-7834 : remove ctrlm build flags - RF4CE_PACKET_ANALYSIS (#107) * RDKEMW-7772 : remove ctrlm build flags - DISABLE_BLE_VOICE (#106) * RDKEMW-7122 : Missing Thunder cflags in ctrlm implemenation (#103) * RDKEMW-7979 : use version/branch from recipe (#109) * RDKEMW-8349 : ctrlm release v1.1.4 (#113) * RDKEMW-8133: Optional param name for voiceSessionRequest (#108) * RDKEMW-8133: Optional param name for voiceSessionRequest Reason for change: Adding optional name param for voiceSessionRequest which is needed to track metadata about voice sessions from various ipcontrol clients Test Procedure: Use VoiceControl voiceSessionRequest method with name param Risks: Low Signed-off-by: Kelvin Lu <[email protected]> * RDKEMW-8133: Optional param name for voiceSessionRequest Reason for change: remove the required conditional of name Test Procedure: Risks: Signed-off-by: Kelvin Lu <[email protected]> * RDKEMW-8133: Optional param name for voiceSessionRequest Reason for change: Clean up log messaging Test Procedure: Risks: Signed-off-by: Kelvin Lu <[email protected]> * RDKEMW-8133: Optional param name for voiceSessionRequest Reason for change: Move obj != NULL block to prevent null dereference Test Procedure: Risks: Signed-off-by: Kelvin Lu <[email protected]> --------- Signed-off-by: Kelvin Lu <[email protected]> * RDKEMW-8354: ctrlm-main crash while holding standby during OTA (#115) * RDKEMW-8354: ctrlm-main crash while holding standby during OTA Reason for change: crash due to null reference on repeating timer event Test Procedure: see ticket Risks: low Signed-off-by: Kelvin Lu <[email protected]> * RDKEMW-8354: ctrlm-main crash on timer Reason for change: add comment for clarity Test Procedure: Risks: Signed-off-by: Kelvin Lu <[email protected]> --------- Signed-off-by: Kelvin Lu <[email protected]> * Deploy cla action * Deploy fossid_integration_stateless_diffscan_target_repo action * RDKEMW-8815: only return SUCCESS for autolookup if it found at least 1 code. * Revert "RDKEMW-8815: only return SUCCESS for autolookup if it found at least 1 code." (#124) * RDKEMW-8815: only return SUCCESS for autolookup if it found at least 1 code. (#125) It can often happen that the IRDB returns success but no codes are returned, this leads to confusing UI screens. So even if the IR database returned successfully, only return success to the plugin API if there is at least 1 code is present * Update CODEOWNERS (#130) * RDKEMW-8929 (#129) * RDKEMW-8929: Refactor ctrlm_voice_ipc_t to inherit ctrlm_ipc_iarm_t Reason for change: Inherit ctrlm_ipc_iarm_t Test Procedure: Verify behavior of events before & after no diff Risks: Low Signed-off-by: Kelvin Lu <[email protected]> * RDKEMW-7225: BLE pairing retries (#126) if BLE pairing fails, retry 3 times or up to the pairing timeout (currently configured at 20 seconds), whichever comes first. --------- Signed-off-by: Jason Thomson <[email protected]> Signed-off-by: Kelvin Lu <[email protected]> Co-authored-by: rdkcmf <[email protected]> Co-authored-by: dwolaver <[email protected]> Co-authored-by: jthomp007c <[email protected]> Co-authored-by: Kelvin Lu <[email protected]> Co-authored-by: Alan Ryan <[email protected]> Co-authored-by: Stephen Barrett <[email protected]>
…om/rdkcentral/control into feature/RDKEMW-9474_multiple_IRDBs
There was a problem hiding this comment.
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 adds support for multiple IRDB (Infrared Database) vendors by introducing new APIs to query supported vendors and set the preferred vendor based on the RCU's (Remote Control Unit) bitmask preference.
Key Changes:
- Added
ctrlm_irdb_get_supported_vendor_info()to retrieve all installed IRDB vendors - Added
ctrlm_irdb_set_preferred_vendor()to configure the preferred vendor based on RCU bitmask - Updated BLE controller to set vendor preferences when RCU reports supported IRDBs
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/irdb/ctrlm_irdb_stub.h | Added stub function declarations for the two new vendor-related APIs |
| src/irdb/ctrlm_irdb_stub.cpp | Implemented stub functions that return false with "not implemented" error logging |
| src/irdb/ctrlm_irdb_plugin.h | Added public API declarations with documentation comments for the new vendor functions |
| src/irdb/ctrlm_irdb_interface.h | Added set_vendor() method to the interface class for setting preferred vendor |
| src/irdb/ctrlm_irdb_interface.cpp | Implemented plugin loading, symbol resolution, and supported vendors query on plugin open |
| src/ble/ctrlm_ble_controller.cpp | Modified setSupportedIrdbs() to call the new set_vendor() API with RCU bitmask and improved error handling |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/irdb/ctrlm_irdb_plugin.h
Outdated
| // Will return info on all the IRDB vendors currently installed, could be multiple vendors returned | ||
| bool ctrlm_irdb_get_supported_vendor_info(std::vector<ctrlm_irdb_vendor_info_t> &info); | ||
|
|
||
| // This will basically pass through the bitmask coming from the RCU, so it will be Ruwido ONLY, Quickset ONLY, or BOTH |
Copilot
AI
Dec 5, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] The comment mentions "Ruwido ONLY, Quickset ONLY, or BOTH" which appears to reference specific vendor names. Consider making this comment more generic or clarifying that these are example vendors, as the implementation should work with any IRDB vendors that follow the bitmask pattern.
| // This will basically pass through the bitmask coming from the RCU, so it will be Ruwido ONLY, Quickset ONLY, or BOTH | |
| // This will pass through the bitmask coming from the RCU, representing any combination of supported IRDB vendors (e.g., "Ruwido", "Quickset", or others) that follow the bitmask pattern. |
RDKEMW-10480 : ctrlm release v1.1.6, xr-voice-sdk v1.0.7
Co-authored-by: Copilot <[email protected]>
There was a problem hiding this comment.
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 6 out of 6 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…_multiple_IRDBs-FIXED' into feature/RDKEMW-9474_multiple_IRDBs-FIXED
see RDKEMW-11249 or CHANGELOG for release notes
RDKEMW-12151 : ctrlm release v1.1.8, xr-voice-sdk v1.0.9
There was a problem hiding this comment.
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 6 out of 6 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
src/irdb/ctrlm_irdb_interface.cpp:1
- The
rcu_vendor_infostruct is only partially initialized withrcu_support_bitmask, leaving thenamefield empty. Theset_vendor()function receives this incomplete vendor info. Consider whether the plugin needs both fields, or if the API design should be clarified to indicate thatnameis optional when setting preferred vendor from RCU.
/*
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| isSupportedIrdb(vendor_info) ? "DOES" : "does NOT", vendor_info.name.c_str()); | ||
| } else { | ||
| XLOGD_INFO("Controller <%s> IRDBs supported bitmask = <0x%X>, couldn't retrieve IRDB plugin vendor info.", | ||
| XLOGD_WARN("Controller <%s> IRDBs supported bitmask = <0x%X>, couldn't retrieve IRDB plugin vendor info.", |
Copilot
AI
Jan 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The log level change from XLOGD_INFO to XLOGD_WARN is appropriate for this error condition, but consider whether the earlier successful case at line 549 should remain at INFO level or be changed to DEBUG, since it's called every time setSupportedIrdbs() is invoked and may generate excessive logs during normal operation.
| if (g_irdb.pluginGetSupportedVendors) { | ||
| std::vector<ctrlm_irdb_vendor_info_t> supported_vendors; | ||
| if ((*g_irdb.pluginGetSupportedVendors)(supported_vendors) == true) { | ||
| for (const auto &it : supported_vendors) { | ||
| XLOGD_INFO("Found supported IRDB Vendor <%s, 0x%X>", it.name.c_str(), it.rcu_support_bitmask); | ||
| } | ||
| } else { | ||
| XLOGD_WARN("Unable to query IRDB plugin for list of supported vendors, check version of the plugin..."); | ||
| } | ||
| } |
Copilot
AI
Jan 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This informational logging is placed in the critical path of open_plugin() which is called during initialization. If a plugin supports many vendors, this could generate numerous log entries. Consider whether this should be at DEBUG level or only log a summary (e.g., 'Found N supported IRDB vendors').
No description provided.