Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
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
7550429
RDKEMW-17935 : remove ctrlm build flags - USE_DEPRECATED_HDMI_INPUT_P…
dwolaver Jul 8, 2026
8c81187
RDKEMW-18082: ctrlm coverity cleanup (#225)
msmith113 Jul 8, 2026
87b09d9
RDKEMW-7310 : remove ctrlm build flags - USE_DEPRECATED_IRMGR (#254)
dwolaver Jul 9, 2026
c2483a9
RDKEMW-20543: Send IR Prog State RF4CE Network (#252)
klu339 Jul 13, 2026
51f7a1e
RDKEMW-17936 : remove ctrlm build flags - USE_IARM_POWER_MANAGER (#251)
dwolaver Jul 13, 2026
c650ac2
RDKEMW-20544: Add timestamp to T2 accum markers (#261)
klu339 Jul 13, 2026
4fa7429
RDKEMW-19785 : control manager - remove deprecated RFCs (#243)
dwolaver Jul 15, 2026
1fdb0b1
RDKEMW-4056 : RFC overrides for BLE network config (#52)
dwolaver Jul 16, 2026
8e1c5e7
RDKEMW-21599 : Control manager crashed on executing tr181 command (#262)
dwolaver Jul 20, 2026
e0a75fd
RDKEMW-20831 : remove ctrlm unused IARM calls/events (#258)
dwolaver Jul 22, 2026
5906429
RDKEMW-21962 : ctrlm-main - Use of potentially dangerous function (#263)
dwolaver Jul 23, 2026
c9bc6c0
RDKEMW-17937 : remove ctrlm build flags - IP_ENABLED (#253)
dwolaver Jul 23, 2026
55b63c7
RDKEMW-20482: enable audio charac notifications at remote connection…
egalla204 Jul 27, 2026
c00fca8
RDKEMW-22339: BLE key thread spins due to fds not cleaned up properly…
egalla204 Aug 3, 2026
6d63adf
1.1.19 release changelog updates
egalla204 Aug 4, 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
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,27 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).

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

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

> 4 August 2026
- RDKEMW-22339: BLE key thread spins due to fds not cleaned up properly [`#264`](https://github.com/rdkcentral/control/pull/264)
- RDKEMW-20482: enable audio charac notifications at remote connection [`#256`](https://github.com/rdkcentral/control/pull/256)
- RDKEMW-17937 : remove ctrlm build flags - IP_ENABLED [`#253`](https://github.com/rdkcentral/control/pull/253)
- RDKEMW-21962 : ctrlm-main - Use of potentially dangerous function [`#263`](https://github.com/rdkcentral/control/pull/263)
- RDKEMW-20831 : remove ctrlm unused IARM calls/events [`#258`](https://github.com/rdkcentral/control/pull/258)
- RDKEMW-21599 : Control manager crashed on executing tr181 command [`#262`](https://github.com/rdkcentral/control/pull/262)
- RDKEMW-4056 : RFC overrides for BLE network config [`#52`](https://github.com/rdkcentral/control/pull/52)
- RDKEMW-19785 : control manager - remove deprecated RFCs [`#243`](https://github.com/rdkcentral/control/pull/243)
- RDKEMW-20544: Add timestamp to T2 accum markers [`#261`](https://github.com/rdkcentral/control/pull/261)
- RDKEMW-17936 : remove ctrlm build flags - USE_IARM_POWER_MANAGER [`#251`](https://github.com/rdkcentral/control/pull/251)
- RDKEMW-20543: Send IR Prog State RF4CE Network [`#252`](https://github.com/rdkcentral/control/pull/252)
- RDKEMW-7310 : remove ctrlm build flags - USE_DEPRECATED_IRMGR [`#254`](https://github.com/rdkcentral/control/pull/254)
- RDKEMW-18082: ctrlm coverity cleanup [`#225`](https://github.com/rdkcentral/control/pull/225)
- RDKEMW-17935 : remove ctrlm build flags - USE_DEPRECATED_HDMI_INPUT_PLUGIN [`#250`](https://github.com/rdkcentral/control/pull/250)
- RDKEMW-20361 : ctrlm branch name print in logs not correct [`#248`](https://github.com/rdkcentral/control/pull/248)


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

> 17 June 2026
Expand Down
17 changes: 1 addition & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,15 @@ 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)
option(TELEMETRY_SUPPORT "Enable TELEMETRY_SUPPORT" OFF)
option(THUNDER "Enable THUNDER" ON)
option(THUNDER_SECURITY "Enable THUNDER_SECURITY" OFF)
option(USE_SAFEC "Use safec" OFF)
option(USE_IARM_POWER_MANAGER "Use IARM Power Manager" OFF)
option(XRSR_HTTP "Enable XRSR_HTTP" OFF)
option(XRSR_SDT "Enable XRSR_SDT" OFF)
option(ENABLE_ASYNC_SRVR_MSG "Enable Asynchronous Server Messaging Feature" OFF)
option(ENABLE_AVS_WITH_SDT "Enable SDT Based AVS Support" OFF)
option(USE_DEPRECATED_HDMI_INPUT_PLUGIN "Use deprecated HDMI Input plugin instead of AV Input plugin" OFF)

# BUILD SYSTEM
set(STAGING_BINDIR_NATIVE, "invalid" CACHE PATH "staging bin dir native")
Expand Down Expand Up @@ -198,10 +195,6 @@ if(FDC_ENABLED)
add_compile_definitions(FDC_ENABLED)
endif()

if(IP_ENABLED)
add_compile_definitions(CTRLM_NETWORK_IP CTRLM_IP_HAL_LOG_ENABLED)
endif()

# RF4CE options
if(RF4CE_ENABLED)
# All RF4CE platforms have HAL NVM
Expand Down Expand Up @@ -239,10 +232,6 @@ if(THUNDER)
endif()
endif()

if(USE_IARM_POWER_MANAGER)
add_compile_definitions(USE_IARM_POWER_MANAGER)
endif()

if(USE_SAFEC)
find_package(PkgConfig)
pkg_check_modules(SAFEC REQUIRED libsafec)
Expand All @@ -253,18 +242,14 @@ else()
add_compile_definitions(SAFEC_DUMMY_API)
endif()

if(USE_DEPRECATED_HDMI_INPUT_PLUGIN)
add_compile_definitions(USE_DEPRECATED_HDMI_INPUT_PLUGIN)
endif()

install(TARGETS controlMgr RUNTIME DESTINATION bin)

install(FILES ${CMAKE_BINARY_DIR}/ctrlm_config.json DESTINATION ${CMAKE_INSTALL_SYSCONFDIR} COMPONENT config )

# 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
103 changes: 65 additions & 38 deletions ci/build_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,22 +43,21 @@ apt install -y \
uuid-dev \
libevdev-dev \
libdrm-dev \
libsafec-dev \
libbsd-dev \
autoconf \
automake \
libtool \
make \
gperf \
python3-pip
python3 -m pip install jsonref

###########################################
# 2. Clone the required repositories

XRSDK_REF="1.0.13"
git clone --depth 1 --filter=blob:none --branch "${XRSDK_REF}" https://github.com/rdkcentral/xr-voice-sdk.git
git clone --depth 1 --filter=blob:none --branch develop https://github.com/rdkcentral/xr-voice-sdk.git

git clone --depth 1 --filter=blob:none --branch develop https://github.com/rdkcentral/entservices-testframework.git

# Patch the upstream testframework devicesettings.h with ctrlm-specific
# additions (ducking types, setAudioDucking, Manager::IsInitialized).
# We can remove this if added to upstream testframework
git -C entservices-testframework apply "$GITHUB_WORKSPACE/ci/mocks/devicesettings_ctrlm.patch"
git clone --depth 1 --filter=blob:none https://github.com/rdkcentral/entservices-testframework.git

git clone --depth 1 --filter=blob:none --sparse --branch develop https://github.com/rdkcentral/iarmmgrs.git
git -C iarmmgrs sparse-checkout set hal
Expand All @@ -72,41 +71,72 @@ git -C rdk-halif-power_manager sparse-checkout set include
git clone --depth 1 --filter=blob:none --sparse --branch develop https://github.com/rdkcentral/rdkversion.git
git -C rdkversion sparse-checkout set src

git clone --depth 1 --filter=blob:none --sparse https://github.com/rdkcentral/meta-rdk-oss-reference.git
git -C meta-rdk-oss-reference sparse-checkout set recipes-common/safec-common-wrapper/files

# Build and install nopoll for xr-voice-sdk WS-enabled native CI build.
git clone --depth 1 https://github.com/ASPLes/nopoll.git
cd nopoll
./autogen.sh --prefix=/usr
make -j$(nproc)
make install
cd "${GITHUB_WORKSPACE}"

IARMMGRS_DIR="$GITHUB_WORKSPACE/iarmmgrs"
DEEPSLEEP_HAL_DIR="$GITHUB_WORKSPACE/rdk-halif-deepsleep_manager"
POWER_HAL_DIR="$GITHUB_WORKSPACE/rdk-halif-power_manager"
RDKVERSION_DIR="$GITHUB_WORKSPACE/rdkversion"
SAFEC_WRAPPER_DIR="$GITHUB_WORKSPACE/meta-rdk-oss-reference/recipes-common/safec-common-wrapper/files"

############################
# 3. Create stub/empty headers for external dependencies
echo "======================================================================================"
echo "Creating stub headers"

HEADERS_DIR="$GITHUB_WORKSPACE/ci/headers"
XRSDK_HEADERS_DIR="$HEADERS_DIR/xr-voice-sdk"
mkdir -p "${HEADERS_DIR}"
mkdir -p "${HEADERS_DIR}/rdk/iarmbus"
mkdir -p "${HEADERS_DIR}/rdk/ds"
mkdir -p "${HEADERS_DIR}/rdk/iarmmgrs-hal"
mkdir -p "${XRSDK_HEADERS_DIR}"

# Copy real xr-voice-sdk headers.
# xr_fdc.h is NOT copied: only needed when FDC_ENABLED=ON
cp "$GITHUB_WORKSPACE/xr-voice-sdk/src/xr-speech-vrex/xrsv.h" "${XRSDK_HEADERS_DIR}/"
cp "$GITHUB_WORKSPACE/xr-voice-sdk/src/xr-speech-router/xrsr.h" "${XRSDK_HEADERS_DIR}/"
cp "$GITHUB_WORKSPACE/xr-voice-sdk/src/xr-mq/xr_mq.h" "${XRSDK_HEADERS_DIR}/"
cp "$GITHUB_WORKSPACE/xr-voice-sdk/src/xr-speech-vrex/xrsv_http/xrsv_http.h" "${XRSDK_HEADERS_DIR}/"
cp "$GITHUB_WORKSPACE/xr-voice-sdk/src/xr-speech-vrex/xrsv_ws_nextgen/xrsv_ws_nextgen.h" "${XRSDK_HEADERS_DIR}/"
cp "$GITHUB_WORKSPACE/xr-voice-sdk/src/xr-timestamp/xr_timestamp.h" "${XRSDK_HEADERS_DIR}/"

# Generate rdkx_logger_modules.h from xr-voice-sdk's module configuration,
# then copy the real rdkx_logger and xr_voice_sdk headers.
# This replaces the hand-written ci/mocks/control/ stubs.
python3 "$GITHUB_WORKSPACE/xr-voice-sdk/scripts/rdkx_logger_modules_to_c.py" \
"$GITHUB_WORKSPACE/xr-voice-sdk/src/xr-logger/rdkv/rdkx_logger_modules.json" \
"${XRSDK_HEADERS_DIR}/rdkx_logger_modules" "mw"
cp "$GITHUB_WORKSPACE/xr-voice-sdk/src/xr-logger/rdkx_logger_mw.h" "${XRSDK_HEADERS_DIR}/rdkx_logger.h"
cp "$GITHUB_WORKSPACE/xr-voice-sdk/src/xr_voice_sdk.h" "${XRSDK_HEADERS_DIR}/xr_voice_sdk.h"

# Use the Yocto safec_lib.h sysroot header for CI builds without libsafec.
# Add include guards because the upstream header does not provide them.
cp "$SAFEC_WRAPPER_DIR/safec_lib.h" "$HEADERS_DIR/safec_lib.h"
sed -i '1s/^/#ifndef CTRLM_CI_SAFEC_LIB_H\n#define CTRLM_CI_SAFEC_LIB_H\n/' "$HEADERS_DIR/safec_lib.h"
printf '\n#endif /* CTRLM_CI_SAFEC_LIB_H */\n' >> "$HEADERS_DIR/safec_lib.h"
# patching parseFormat to avoid -Wmaybe-uninitialized warnings in ctrlm_database.cpp from the safec wrapper's dummy implementation
sed -i 's/static inline int parseFormat(const char \*dst,/static inline int parseFormat(char *dst,/' "$HEADERS_DIR/safec_lib.h"
# patching strcpy_s to avoid Coverity's array-vs-NULL warning on string literals while
# preserving the dummy wrapper's null and bounds checks in CI builds.
perl -0pi -e 's{#define strcpy_s\(dst,max,src\) \(src != NULL\)\?\(\(max > strlen\(src\)\)\?EOK:ESLEMAX\):ESNULLP; \\\n if\(\(src != NULL\) && \(max > strlen\(src\)\)\) strcpy\(dst,src\);}{#define strcpy_s(dst,max,src) ({ const char *ctrlm_ci_src__ = (src); ctrlm_ci_src__ != NULL ? (((max) > strlen(ctrlm_ci_src__)) ? (strcpy((dst), ctrlm_ci_src__), EOK) : ESLEMAX) : ESNULLP; })}s or die "failed to patch strcpy_s in safec_lib.h\n"' "$HEADERS_DIR/safec_lib.h"
# patching strncpy_s to avoid the wrapper's raw strncpy expansion, which triggers
# -Wstringop-truncation in CI even though ctrlm manually terminates the destination buffer.
perl -0pi -e 's{#define strncpy_s\(dst,max,src,len\) \(src != NULL\)\?\(\(len <= max\)\?EOK:ESLEMAX\):ESNULLP; \\\n if\(\(src != NULL\) && \(len <= max\)\) strncpy\(dst,src,len\);}{#define strncpy_s(dst,max,src,len) (src != NULL)?((len <= max)?EOK:ESLEMAX):ESNULLP; \\\n if((src != NULL) && (len <= max)) { size_t copy_len = strnlen(src, len); memcpy(dst, src, copy_len); if(copy_len < (size_t)(max)) memset((char *)(dst) + copy_len, 0, (size_t)(max) - copy_len); }}s or die "failed to patch strncpy_s in safec_lib.h\n"' "$HEADERS_DIR/safec_lib.h"

# Stage rdkversion.h before building xr-voice-sdk.
cp "$RDKVERSION_DIR/src/rdkversion.h" "$HEADERS_DIR/rdkversion.h"

# Build xr-voice-sdk and install its headers under ${HEADERS_DIR}/xr-voice-sdk/.
# Version doesn't matter here, but we try to get the latest tag for good measure since it's included in the generated headers and may be used by downstream code.
XRSDK_REF=$(git ls-remote --tags https://github.com/rdkcentral/xr-voice-sdk.git \
| grep -oP '\d+\.\d+\.\d+$' | sort -V | tail -1)
echo "Building xr-voice-sdk at ref ${XRSDK_REF}"
cmake -G Ninja \
-S "$GITHUB_WORKSPACE/xr-voice-sdk" \
-B "$GITHUB_WORKSPACE/build/xr-voice-sdk" \
-DCMAKE_INSTALL_PREFIX="${HEADERS_DIR}" \
-DCMAKE_INSTALL_INCLUDEDIR="xr-voice-sdk" \
-DCMAKE_INSTALL_SYSCONFDIR="${HEADERS_DIR}/etc" \
-DCMAKE_C_FLAGS="-I${HEADERS_DIR} -DSAFEC_DUMMY_API" \
-DSTAGING_BINDIR_NATIVE="/usr/bin" \
-DCMAKE_PROJECT_VERSION="${XRSDK_REF}" \
-DWS_ENABLED=ON \
-DWS_NOPOLL_PATCHES=OFF \
-DINSTALL_INTERNAL_HEADERS=ON

cmake --build "$GITHUB_WORKSPACE/build/xr-voice-sdk"
cmake --install "$GITHUB_WORKSPACE/build/xr-voice-sdk" --component headers
cmake --install "$GITHUB_WORKSPACE/build/xr-voice-sdk" --component internal-headers

cd "${HEADERS_DIR}"

Expand Down Expand Up @@ -160,16 +190,11 @@ find "$IARMMGRS_DIR" -name comcastIrKeyCodes.h -print -quit | xargs -r -I{} cp "
[ -f comcastIrKeyCodes.h ]

# rdkversion.h (used by ctrlm_main.cpp)
cp "$RDKVERSION_DIR/src/rdkversion.h" rdkversion.h
[ -f rdkversion.h ]

# secure_wrapper (types provided via empty stub — no v_secure_* calls in core)
touch secure_wrapper.h

# safec compatibility header - committed in ci/mocks, copied here so it is
# resolved on the generated-headers include path.
cp "$GITHUB_WORKSPACE/ci/mocks/safec_lib.h" safec_lib.h

echo "Stub headers created successfully"

cd "${GITHUB_WORKSPACE}"
Expand All @@ -190,13 +215,15 @@ cat > /tmp/stub.c << 'STUB_EOF'
void __stub_placeholder(void) {}
STUB_EOF

# Build stub .so for each missing library
# nopoll and dshalcli are unused (factory-only) but unconditionally linked by CMakeLists.txt
# We can remove them from the link list in the future if desired, but for now just provide stubs to satisfy the linker.
for lib in xr-voice-sdk rdkversion IARMBus ds nopoll dshalcli rfcapi secure_wrapper evdev; do
# Build stub .so files for libraries still linked in CI.
# nopoll and dshalcli are factory-only but still linked unconditionally.
for lib in rdkversion IARMBus ds nopoll dshalcli rfcapi secure_wrapper evdev; do
gcc -shared -fPIC -o "${STUB_LIB_DIR}/lib${lib}.so" /tmp/stub.c
done

# Copy the real xr-voice-sdk .so alongside the stubs.
cp "$GITHUB_WORKSPACE/build/xr-voice-sdk/src/libxr-voice-sdk.so" "${STUB_LIB_DIR}/libxr-voice-sdk.so"

rm /tmp/stub.c

echo "Stub libraries created in ${STUB_LIB_DIR}"
Expand Down
8 changes: 0 additions & 8 deletions ci/cov_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ ls -la "${GITHUB_WORKSPACE}"
echo "building control (ctrlm-main)"

XRSDK_REAL_HEADERS="$GITHUB_WORKSPACE/ci/headers/xr-voice-sdk"
XLOG_COMPAT="$GITHUB_WORKSPACE/ci/mocks/xlog_ci_compat.h"
MOCK_DIR="$GITHUB_WORKSPACE/entservices-testframework/Tests/mocks"
MOCK_OVERRIDES="$GITHUB_WORKSPACE/ci/mocks/testframework_overrides.h"
HEADERS_DIR="$GITHUB_WORKSPACE/ci/headers"
EMPTY_JSON="$GITHUB_WORKSPACE/install/usr/include/ctrlm_config_empty.json"
GLIB_CFLAGS="$(pkg-config --cflags glib-2.0)"
Expand All @@ -45,15 +43,13 @@ cmake -G Ninja -S "$GITHUB_WORKSPACE" -B build/control \
-DTHUNDER_SECURITY=OFF \
-DBLE_ENABLED=OFF \
-DRF4CE_ENABLED=OFF \
-DIP_ENABLED=OFF \
-DTELEMETRY_SUPPORT=OFF \
-DAUTH_ENABLED=OFF \
-DXRSR_HTTP=OFF \
-DXRSR_SDT=OFF \
-DBUILD_CTRLM_FACTORY=OFF \
-DBUILD_FACTORY_TEST=OFF \
-DUSE_SAFEC=OFF \
-DUSE_IARM_POWER_MANAGER=ON \
-DBREAKPAD=OFF \
-DFDC_ENABLED=OFF \
-DENABLE_ASYNC_SRVR_MSG=OFF \
Expand All @@ -77,13 +73,10 @@ cmake -G Ninja -S "$GITHUB_WORKSPACE" -B build/control \
-I ${GITHUB_WORKSPACE}/install/usr/include \
-I /usr/include/libdrm \
${GLIB_CFLAGS} \
-include ${XLOG_COMPAT} \
-include ${MOCK_DIR}/Iarm.h \
-include ${MOCK_OVERRIDES} \
-include ${MOCK_DIR}/devicesettings.h \
-include ${MOCK_DIR}/Rfc.h \
-Wall -Wno-error \
-DSAFEC_DUMMY_API \
-DDISABLE_SECURITY_TOKEN" \
-DCMAKE_C_FLAGS=" \
-I ${XRSDK_REAL_HEADERS} \
Expand All @@ -96,7 +89,6 @@ ${GLIB_CFLAGS} \
-I /usr/include/libdrm \
${GLIB_CFLAGS} \
-Wall -Wno-error \
-DSAFEC_DUMMY_API \
-DDISABLE_SECURITY_TOKEN" \
-DCMAKE_EXE_LINKER_FLAGS="-L${GITHUB_WORKSPACE}/install/usr/lib -Wl,--unresolved-symbols=ignore-all"

Expand Down
40 changes: 0 additions & 40 deletions ci/mocks/devicesettings_ctrlm.patch

This file was deleted.

44 changes: 0 additions & 44 deletions ci/mocks/safec_lib.h

This file was deleted.

Loading
Loading