Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
d33a7da
Merge branch 'release/1.1.16' into develop
egalla204 May 8, 2026
76e6e78
RDKEMW-18299 : only register SIGQUIT when process is interactive (#229)
dwolaver May 15, 2026
76fe357
RDKEMW-17620 : ctrlm rfc value groups not updating (#219)
dwolaver May 15, 2026
5a6dbfb
RDKEMW-14906 : VAD detector in Control Manager/Voice SDK (#186)
dwolaver May 18, 2026
5f85fd3
RDKEMW-12856: throw early error when IRDB provides empty waveforms (#…
egalla204 May 27, 2026
a67f6d9
RDKEMW-16814: reduce ble status prints and events (#235)
egalla204 May 30, 2026
6e4a8b5
RDKEMW-15135: T2 RCU pairing (#189)
klu339 Jun 1, 2026
42431e1
RDKEMW-4433: local server build option (#57)
dwolaver Jun 5, 2026
3fa9bf7
RDKEMW-13988: add new buttons for interim remote 2.0 support (#234)
egalla204 Jun 8, 2026
e8a2e89
RDKEMW-18979: onStatus event to contain RCU data from all networks (#…
egalla204 Jun 8, 2026
f0af080
RDKEMW-16966: T2 Events for IRDB Programming (#239)
klu339 Jun 8, 2026
a449407
RDKEMW-13898: prevent simultaneous irdb codes from different vendors…
egalla204 Jun 8, 2026
9667bf7
1.1.17 release changelog updates
egalla204 Jun 9, 2026
4d5ae23
Merge branch 'release/1.1.17' into develop
egalla204 Jun 9, 2026
5770913
Revert "RDKEMW-14906 : VAD detector in Control Manager/Voice SDK (#18…
egalla204 Jun 16, 2026
9151344
1.1.18 release changelog updates
egalla204 Jun 17, 2026
a6de400
Merge branch 'release/1.1.18' into develop
egalla204 Jun 17, 2026
61a6d57
RDKEMW-20361 : ctrlm branch name print in logs not correct (#248)
dwolaver Jun 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,30 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).

<!-- auto-changelog-above -->

#### [1.1.18](https://github.com/rdkcentral/control/compare/1.1.17...1.1.18)

> 17 June 2026

- Revert "RDKEMW-14906 : VAD detector in Control Manager/Voice SDK (#186)" [`#245`](https://github.com/rdkcentral/control/pull/245)


#### [1.1.17](https://github.com/rdkcentral/control/compare/1.1.16...1.1.17)

> 8 June 2026

- RDKEMW-13898: prevent simultaneous irdb codes from different vendors [`#220`](https://github.com/rdkcentral/control/pull/220)
- RDKEMW-16966: T2 Events for IRDB Programming [`#239`](https://github.com/rdkcentral/control/pull/239)
- RDKEMW-18979: onStatus event to contain RCU data from all networks [`#238`](https://github.com/rdkcentral/control/pull/238)
- RDKEMW-13988: add new buttons for interim remote 2.0 support [`#234`](https://github.com/rdkcentral/control/pull/234)
- RDKEMW-4433: local server build option [`#57`](https://github.com/rdkcentral/control/pull/57)
- RDKEMW-15135: T2 RCU pairing [`#189`](https://github.com/rdkcentral/control/pull/189)
- RDKEMW-16814: reduce ble status prints and events [`#235`](https://github.com/rdkcentral/control/pull/235)
- RDKEMW-12856: throw early error when IRDB provides empty waveforms [`#236`](https://github.com/rdkcentral/control/pull/236)
- RDKEMW-14906 : VAD detector in Control Manager/Voice SDK [`#186`](https://github.com/rdkcentral/control/pull/186)
- RDKEMW-17620 : ctrlm rfc value groups not updating [`#219`](https://github.com/rdkcentral/control/pull/219)
- RDKEMW-18299 : only register SIGQUIT when process is interactive [`#229`](https://github.com/rdkcentral/control/pull/229)


#### [1.1.16](https://github.com/rdkcentral/control/compare/1.1.15...1.1.16)

> 8 May 2026
Expand Down
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ option(BLE_ENABLED "Enable BLE" ON)
option(BLE_SERVICES "Enable BLE Services" OFF)
option(BREAKPAD "Enable BREAKPAD" OFF)
option(BUILD_CTRLM_FACTORY "Build Control Factory Test" OFF)
option(BUILD_CTRLM_SERVER "Build Control Server Daemon" OFF)
option(FDC_ENABLED "Enable FDC" OFF)
option(IP_ENABLED "Enable IP" OFF)
option(RF4CE_ENABLED "Enable RF4CE" ON)
Expand Down Expand Up @@ -263,7 +264,7 @@ install(FILES ${CMAKE_BINARY_DIR}/ctrlm_config.json DESTINATION ${CMAKE_INSTALL_
# GENERATED FILES
add_custom_command( OUTPUT ctrlm_version_build.h
COMMAND echo -n "#define CTRLM_MAIN_BRANCH \"" >> ctrlm_version_build.h
COMMAND git -C ${CMAKE_CURRENT_SOURCE_DIR} branch --all --contains | sed -n -e "s/^\\s*remotes\\/origin\\///" -e "2p" | tr -d "\\n" >> ctrlm_version_build.h
COMMAND sh -c "src=\"${CMAKE_CURRENT_SOURCE_DIR}\"; ref=$(git -C \"$src\" describe --tags --exact-match 2>/dev/null || git -C \"$src\" branch -a --format='%(refname:short)' --contains HEAD 2>/dev/null | sed -n '2{p;q}'); echo -n \"$ref\" >> ctrlm_version_build.h"
COMMAND echo "\"" >> ctrlm_version_build.h
COMMAND echo -n "#define CTRLM_MAIN_COMMIT_ID " >> ctrlm_version_build.h
COMMAND git -C ${CMAKE_CURRENT_SOURCE_DIR} log --format=\"%H\" -n 1 >> ctrlm_version_build.h
Expand Down
1 change: 1 addition & 0 deletions include/ctrlm_hal_ble.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ typedef struct {
int pairing_code;
ctrlm_hal_ble_RcuProperty_t property_updated;
ctrlm_hal_ble_rcu_data_t rcu_data;
char ir_fail_reason[CTRLM_MAX_PARAM_STR_LEN];
} ctrlm_hal_ble_RcuStatusData_t;

typedef struct {
Expand Down
4 changes: 4 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,10 @@ if(BUILD_FACTORY_TEST)
add_subdirectory(factory)
endif()

if(BUILD_CTRLM_SERVER)
add_subdirectory(server)
endif()

if(USE_IARM_POWER_MANAGER)
target_sources(controlMgr PRIVATE
ipc/ctrlm_ipc_iarm_powermanager.cpp
Expand Down
12 changes: 6 additions & 6 deletions src/attributes/ctrlm_attr_general.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ bool ctrlm_string_db_attr_t::read_db(ctrlm_db_ctx_t ctx) {
if(blob.read_db(ctx)) {
this->value = blob.to_string();
ret = true;
XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to read from db <%s>", this->get_name().c_str());
}
Expand All @@ -90,7 +90,7 @@ bool ctrlm_string_db_attr_t::write_db(ctrlm_db_ctx_t ctx) {
if(blob.from_string(this->value)) {
if(blob.write_db(ctx)) {
ret = true;
XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str());
}
Expand Down Expand Up @@ -157,7 +157,7 @@ bool ctrlm_uint64_db_attr_t::read_db(ctrlm_db_ctx_t ctx) {
if(data.read_db(ctx)) {
this->set_value(data.get_uint64());
ret = true;
XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to read from db <%s>", this->get_name().c_str());
}
Expand All @@ -169,7 +169,7 @@ bool ctrlm_uint64_db_attr_t::write_db(ctrlm_db_ctx_t ctx) {
ctrlm_db_uint64_t data(this->get_key(), this->get_table(), this->get_value());
if(data.write_db(ctx)) {
ret = true;
XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str());
}
Expand Down Expand Up @@ -237,7 +237,7 @@ bool ctrlm_ieee_db_addr_t::read_db(ctrlm_db_ctx_t ctx) {
if(data.read_db(ctx)) {
this->set_value(data.get_uint64());
ret = true;
XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to read from db <%s>", this->get_name().c_str());
}
Expand All @@ -249,7 +249,7 @@ bool ctrlm_ieee_db_addr_t::write_db(ctrlm_db_ctx_t ctx) {
ctrlm_db_uint64_t data(this->get_key(), this->get_table(), this->get_value());
if(data.write_db(ctx)) {
ret = true;
XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str());
}
Expand Down
4 changes: 2 additions & 2 deletions src/attributes/ctrlm_attr_voice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ bool ctrlm_voice_metrics_t::read_db(ctrlm_db_ctx_t ctx) {
this->utterances_exceeding_packet_loss_threshold_today = ((buf[39] << 24) | (buf[38] << 16) | (buf[37] << 8) | buf[36]);
this->utterances_exceeding_packet_loss_threshold_yesterday = ((buf[43] << 24) | (buf[42] << 16) | (buf[41] << 8) | buf[40]);
ret = true;
XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("data from db is too small <%s>", this->get_name().c_str());
}
Expand Down Expand Up @@ -322,7 +322,7 @@ bool ctrlm_voice_metrics_t::write_db(ctrlm_db_ctx_t ctx) {
if(blob.from_buffer(buf, sizeof(buf))) {
if(blob.write_db(ctx)) {
ret = true;
XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str());
}
Expand Down
29 changes: 25 additions & 4 deletions src/ble/ctrlm_ble_controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#include "ctrlm_controller.h"
#include "ctrlm_hal_ip.h"
#include "blercu/bleservices/blercuupgradeservice.h"
#include "ctrlm_telemetry_event.h"

#include <sstream>
#include <iterator>
Expand Down Expand Up @@ -58,15 +59,15 @@ ctrlm_obj_controller_ble_t::ctrlm_obj_controller_ble_t(ctrlm_controller_id_t con
wakeup_custom_list_(),
irdbs_supported_(0)
{
XLOGD_INFO("constructor - controller id <%u>", controller_id);
XLOGD_DEBUG("constructor - controller id <%u>", controller_id);

voice_metrics_->read_config();
ieee_address_->set_num_bytes(6);
last_key_time_->set_key("last_key_time"); //DB key needs to be updated for backwards compatibility
}

ctrlm_obj_controller_ble_t::ctrlm_obj_controller_ble_t() {
XLOGD_INFO("default constructor");
XLOGD_DEBUG("default constructor");
}

void ctrlm_obj_controller_ble_t::db_create() {
Expand Down Expand Up @@ -534,19 +535,30 @@ void ctrlm_obj_controller_ble_t::setSupportedIrdbs(uint8_t vendor_support_bitmas

if (irdb == NULL) {
XLOGD_ERROR("IRDB interface is NULL!!!");
#ifdef TELEMETRY_SUPPORT
char t2_buf[256];
snprintf(t2_buf, sizeof(t2_buf), "[0,0x%02X,\"unknown\",0x00,0]", vendor_support_bitmask);
ctrlm_telemetry_event_t<std::string> ev(MARKER_IRDB_VENDOR_SET, t2_buf);
ev.event();
#endif
return;
}

ctrlm_irdb_vendor_info_t rcu_vendor_info{};
rcu_vendor_info.rcu_support_bitmask = vendor_support_bitmask;
if (!irdb->set_vendor(rcu_vendor_info)) {
bool set_result = irdb->set_vendor(rcu_vendor_info);
if (!set_result) {
XLOGD_ERROR("Failed to set IRDB vendor info for controller <%s> with bitmask <0x%X>.",
ieee_address_get().to_string().c_str(), vendor_support_bitmask);
}

ctrlm_irdb_vendor_info_t vendor_info{};
vendor_info.name = "unknown";
vendor_info.rcu_support_bitmask = 0xFF;
bool supported = false;
if (irdb->get_vendor_info(vendor_info)) {
if (isSupportedIrdb(vendor_info)) {
supported = isSupportedIrdb(vendor_info);
if (supported) {
XLOGD_INFO("Controller <%s> IRDBs supported bitmask = <0x%X>, which DOES support the loaded IRDB plugin vendor <%s>",
ieee_address_get().to_string().c_str(), vendor_support_bitmask, vendor_info.name.c_str());
} else {
Expand All @@ -557,6 +569,15 @@ void ctrlm_obj_controller_ble_t::setSupportedIrdbs(uint8_t vendor_support_bitmas
XLOGD_WARN("Controller <%s> IRDBs supported bitmask = <0x%X>, couldn't retrieve IRDB plugin vendor info.",
ieee_address_get().to_string().c_str(), vendor_support_bitmask);
}
#ifdef TELEMETRY_SUPPORT
char t2_buf[256];
snprintf(t2_buf, sizeof(t2_buf), "[%d,0x%02X,\"%s\",0x%02X,%d]",
(int)set_result,vendor_support_bitmask,
vendor_info.name.c_str(), vendor_info.rcu_support_bitmask,
(int)supported);
ctrlm_telemetry_event_t<std::string> ev(MARKER_IRDB_VENDOR_SET, t2_buf);
ev.event();
#endif
}

uint8_t ctrlm_obj_controller_ble_t::getSupportedIrdbs() const {
Expand Down
8 changes: 4 additions & 4 deletions src/ble/ctrlm_ble_controller_attr_version.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ bool ctrlm_ble_sw_version_t::read_db(ctrlm_db_ctx_t ctx) {
if(blob.read_db(ctx)) {
if (this->from_string(blob.to_string())) {
ret = true;
XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("%s read from database failed to parse <%s> ", this->get_name().c_str(), blob.to_string().c_str());
}
Expand All @@ -58,7 +58,7 @@ bool ctrlm_ble_sw_version_t::write_db(ctrlm_db_ctx_t ctx) {
if(blob.from_string(ver_str)) {
if(blob.write_db(ctx)) {
ret = true;
XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str());
}
Expand Down Expand Up @@ -90,7 +90,7 @@ bool ctrlm_ble_hw_version_t::read_db(ctrlm_db_ctx_t ctx) {
if(blob.read_db(ctx)) {
if (this->from_string(blob.to_string())) {
ret = true;
XLOGD_INFO("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s read from database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("%s read from database failed to parse <%s> ", this->get_name().c_str(), blob.to_string().c_str());
}
Expand All @@ -108,7 +108,7 @@ bool ctrlm_ble_hw_version_t::write_db(ctrlm_db_ctx_t ctx) {
if(blob.from_string(ver_str)) {
if(blob.write_db(ctx)) {
ret = true;
XLOGD_INFO("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
XLOGD_DEBUG("%s written to database: %s", this->get_name().c_str(), this->to_string().c_str());
} else {
XLOGD_ERROR("failed to write to db <%s>", this->get_name().c_str());
}
Expand Down
Loading
Loading