Broadcast Radio default implementation: analog forced switch.

Bug: b/36864090
Test: VTS
Change-Id: I2b7bcf2bb3ad7075f39280ab72b32bff5bf166a3
diff --git a/broadcastradio/1.1/default/Tuner.cpp b/broadcastradio/1.1/default/Tuner.cpp
index 133593e..2985d42 100644
--- a/broadcastradio/1.1/default/Tuner.cpp
+++ b/broadcastradio/1.1/default/Tuner.cpp
@@ -52,7 +52,8 @@
 Tuner::Tuner(const sp<V1_0::ITunerCallback>& callback)
     : mCallback(callback),
       mCallback1_1(ITunerCallback::castFrom(callback).withDefault(nullptr)),
-      mVirtualFm(make_fm_radio()) {
+      mVirtualFm(make_fm_radio()),
+      mIsAnalogForced(false) {
     // TODO (b/36864090): inject this data in a more elegant way
     setCompatibilityLevel(mCallback1_1 == nullptr ? 1 : 2);
 }
@@ -320,15 +321,14 @@
 
 Return<void> Tuner::isAnalogForced(isAnalogForced_cb _hidl_cb) {
     ALOGV("%s", __func__);
-    // TODO(b/36864090): implement
-    _hidl_cb(Result::INVALID_STATE, false);
+    _hidl_cb(Result::OK, mIsAnalogForced);
     return Void();
 }
 
-Return<Result> Tuner::setAnalogForced(bool isForced __unused) {
+Return<Result> Tuner::setAnalogForced(bool isForced) {
     ALOGV("%s", __func__);
-    // TODO(b/36864090): implement
-    return Result::INVALID_STATE;
+    mIsAnalogForced = isForced;
+    return Result::OK;
 }
 
 }  // namespace implementation
diff --git a/broadcastradio/1.1/default/Tuner.h b/broadcastradio/1.1/default/Tuner.h
index 2222e5a..3efbd09 100644
--- a/broadcastradio/1.1/default/Tuner.h
+++ b/broadcastradio/1.1/default/Tuner.h
@@ -65,6 +65,7 @@
     bool mIsTuneCompleted = false;
     ProgramSelector mCurrentProgram = {};
     ProgramInfo mCurrentProgramInfo = {};
+    std::atomic<bool> mIsAnalogForced;
 
     void tuneInternalLocked(const ProgramSelector& sel);
     bool isFmLocked();  // TODO(b/36864090): make it generic, not FM only