diff --git a/tv/tuner/1.1/IFrontend.hal b/tv/tuner/1.1/IFrontend.hal index b570549d86..0b0ce39525 100644 --- a/tv/tuner/1.1/IFrontend.hal +++ b/tv/tuner/1.1/IFrontend.hal @@ -67,4 +67,18 @@ interface IFrontend extends @1.0::IFrontend { */ scan_1_1(FrontendSettings settings, FrontendScanType type, FrontendSettingsExt settingsExt) generates (Result result); + + /** + * Link Conditional Access Modules (CAM) to Frontend support Common Interface (CI) bypass mode. + * + * The client may use this to link CI-CAM to a frontend. CI bypass mode requires that the + * CICAM also receives the TS concurrently from the frontend when the Demux is receiving the TS + * directly from the frontend. + * + * @param ciCamId specify CI-CAM Id to link. + * @return result Result status of the operation. + * SUCCESS if successful, + * UNKNOWN_ERROR if failed for other reasons. + */ + linkCiCam(uint32_t ciCamId) generates (Result result); }; diff --git a/tv/tuner/1.1/default/Frontend.cpp b/tv/tuner/1.1/default/Frontend.cpp index 1e9435ba7e..467d54776b 100644 --- a/tv/tuner/1.1/default/Frontend.cpp +++ b/tv/tuner/1.1/default/Frontend.cpp @@ -273,6 +273,14 @@ Return Frontend::setLnb(uint32_t /* lnb */) { return Result::SUCCESS; } +Return Frontend::linkCiCam(uint32_t ciCamId) { + ALOGV("%s", __FUNCTION__); + + mCiCamId = ciCamId; + + return Result::SUCCESS; +} + FrontendType Frontend::getFrontendType() { return mType; } diff --git a/tv/tuner/1.1/default/Frontend.h b/tv/tuner/1.1/default/Frontend.h index d44f4aea7d..6a80232b21 100644 --- a/tv/tuner/1.1/default/Frontend.h +++ b/tv/tuner/1.1/default/Frontend.h @@ -62,6 +62,8 @@ class Frontend : public V1_1::IFrontend { virtual Return setLnb(uint32_t lnb) override; + virtual Return linkCiCam(uint32_t ciCamId) override; + FrontendType getFrontendType(); FrontendId getFrontendId(); @@ -78,6 +80,7 @@ class Frontend : public V1_1::IFrontend { FrontendType mType = FrontendType::UNDEFINED; FrontendId mId = 0; bool mIsLocked = false; + uint32_t mCiCamId; std::ifstream mFrontendData; };