CEC: Add implementation of setCallback method to default HdmiCec

Bug: 185434120
Test: manual
Change-Id: I280d142427ae49eca5abce01eded569efdaf8221
diff --git a/tv/cec/1.0/default/HdmiCecDefault.cpp b/tv/cec/1.0/default/HdmiCecDefault.cpp
index 2ec2d09..7dc0d24 100644
--- a/tv/cec/1.0/default/HdmiCecDefault.cpp
+++ b/tv/cec/1.0/default/HdmiCecDefault.cpp
@@ -35,10 +35,12 @@
 
 int mCecFd;
 int mExitFd;
+sp<IHdmiCecCallback> mCallback;
 
 HdmiCecDefault::HdmiCecDefault() {
     mCecFd = -1;
     mExitFd = -1;
+    mCallback = nullptr;
 }
 
 HdmiCecDefault::~HdmiCecDefault() {
@@ -185,7 +187,16 @@
     }
 }
 
-Return<void> HdmiCecDefault::setCallback(const sp<IHdmiCecCallback>& /*callback*/) {
+Return<void> HdmiCecDefault::setCallback(const sp<IHdmiCecCallback>& callback) {
+    if (mCallback != nullptr) {
+        mCallback->unlinkToDeath(this);
+        mCallback = nullptr;
+    }
+
+    if (callback != nullptr) {
+        mCallback = callback;
+        mCallback->linkToDeath(this, 0 /*cookie*/);
+    }
     return Void();
 }