Add default implementation for setTvMessageEnabled

Bug: 283016116
Test: mmm
Change-Id: I1872cf28ad658c177a892f7c7587a91a34f445ff
diff --git a/tv/input/aidl/default/TvInput.cpp b/tv/input/aidl/default/TvInput.cpp
index c986ef1..5f1f7a2 100644
--- a/tv/input/aidl/default/TvInput.cpp
+++ b/tv/input/aidl/default/TvInput.cpp
@@ -68,7 +68,13 @@
 ::ndk::ScopedAStatus TvInput::setTvMessageEnabled(int32_t deviceId, int32_t streamId,
                                                   TvMessageEventType in_type, bool enabled) {
     ALOGV("%s", __FUNCTION__);
-    // TODO: Implement this
+
+    if (mStreamConfigs.count(deviceId) == 0) {
+        ALOGW("Device with id %d isn't available", deviceId);
+        return ::ndk::ScopedAStatus::fromServiceSpecificError(STATUS_INVALID_ARGUMENTS);
+    }
+
+    mTvMessageEventEnabled[deviceId][streamId][in_type] = enabled;
     return ::ndk::ScopedAStatus::ok();
 }
 
diff --git a/tv/input/aidl/default/TvInput.h b/tv/input/aidl/default/TvInput.h
index 92e7d4c..23118c8 100644
--- a/tv/input/aidl/default/TvInput.h
+++ b/tv/input/aidl/default/TvInput.h
@@ -22,6 +22,7 @@
 #include <aidl/android/hardware/tv/input/TvMessageEventType.h>
 #include <fmq/AidlMessageQueue.h>
 #include <map>
+#include <unordered_map>
 #include "TvInputDeviceInfoWrapper.h"
 #include "TvStreamConfigWrapper.h"
 
@@ -38,6 +39,9 @@
 namespace tv {
 namespace input {
 
+using TvMessageEnabledMap = std::unordered_map<
+        int32_t, std::unordered_map<int32_t, std::unordered_map<TvMessageEventType, bool>>>;
+
 class TvInput : public BnTvInput {
   public:
     TvInput();
@@ -62,6 +66,7 @@
     shared_ptr<ITvInputCallback> mCallback;
     map<int32_t, shared_ptr<TvInputDeviceInfoWrapper>> mDeviceInfos;
     map<int32_t, map<int32_t, shared_ptr<TvStreamConfigWrapper>>> mStreamConfigs;
+    TvMessageEnabledMap mTvMessageEventEnabled;
 };
 
 }  // namespace input