1 /* 2 * Copyright 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #define LOG_TAG "TimeFilterClient" 18 19 #include <android-base/logging.h> 20 #include <utils/Log.h> 21 22 #include "ClientHelper.h" 23 #include "TimeFilterClient.h" 24 25 using ::android::hardware::tv::tuner::V1_0::Result; 26 using ::android::hardware::tv::tuner::V1_1::Constant64Bit; 27 28 namespace android { 29 30 /////////////// TimeFilterClient /////////////////////// 31 TimeFilterClient(shared_ptr<ITunerTimeFilter> tunerTimeFilter)32TimeFilterClient::TimeFilterClient(shared_ptr<ITunerTimeFilter> tunerTimeFilter) { 33 mTunerTimeFilter = tunerTimeFilter; 34 } 35 ~TimeFilterClient()36TimeFilterClient::~TimeFilterClient() { 37 mTunerTimeFilter = NULL; 38 mTimeFilter = NULL; 39 } 40 41 // TODO: remove after migration to Tuner Service is done. setHidlTimeFilter(sp<ITimeFilter> timeFilter)42void TimeFilterClient::setHidlTimeFilter(sp<ITimeFilter> timeFilter) { 43 mTimeFilter = timeFilter; 44 } 45 setTimeStamp(long timeStamp)46Result TimeFilterClient::setTimeStamp(long timeStamp) { 47 if (mTunerTimeFilter != NULL) { 48 Status s = mTunerTimeFilter->setTimeStamp(timeStamp); 49 return ClientHelper::getServiceSpecificErrorCode(s); 50 } 51 52 if (mTimeFilter != NULL) { 53 return mTimeFilter->setTimeStamp(timeStamp); 54 } 55 56 return Result::INVALID_STATE; 57 } 58 clearTimeStamp()59Result TimeFilterClient::clearTimeStamp() { 60 if (mTunerTimeFilter != NULL) { 61 Status s = mTunerTimeFilter->clearTimeStamp(); 62 return ClientHelper::getServiceSpecificErrorCode(s); 63 } 64 65 if (mTimeFilter != NULL) { 66 return mTimeFilter->clearTimeStamp(); 67 } 68 69 return Result::INVALID_STATE; 70 } 71 getTimeStamp()72long TimeFilterClient::getTimeStamp() { 73 if (mTunerTimeFilter != NULL) { 74 int64_t timeStamp; 75 Status s = mTunerTimeFilter->getTimeStamp(&timeStamp); 76 if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { 77 return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP; 78 } 79 return timeStamp; 80 } 81 82 if (mTimeFilter != NULL) { 83 Result res; 84 long timestamp; 85 mTimeFilter->getTimeStamp( 86 [&](Result r, uint64_t t) { 87 res = r; 88 timestamp = t; 89 }); 90 if (res != Result::SUCCESS) { 91 return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP; 92 } 93 return timestamp; 94 } 95 96 return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP; 97 } 98 getSourceTime()99long TimeFilterClient::getSourceTime() { 100 if (mTunerTimeFilter != NULL) { 101 int64_t sourceTime; 102 Status s = mTunerTimeFilter->getTimeStamp(&sourceTime); 103 if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) { 104 return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP; 105 } 106 return sourceTime; 107 } 108 109 if (mTimeFilter != NULL) { 110 Result res; 111 long sourceTime; 112 mTimeFilter->getSourceTime( 113 [&](Result r, uint64_t t) { 114 res = r; 115 sourceTime = t; 116 }); 117 if (res != Result::SUCCESS) { 118 return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP; 119 } 120 return sourceTime; 121 } 122 123 return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP; 124 } 125 close()126Result TimeFilterClient::close() { 127 if (mTunerTimeFilter != NULL) { 128 Status s = mTunerTimeFilter->close(); 129 mTunerTimeFilter = NULL; 130 return ClientHelper::getServiceSpecificErrorCode(s); 131 } 132 133 if (mTimeFilter != NULL) { 134 Result res = mTimeFilter->close(); 135 mTimeFilter = NULL; 136 return res; 137 } 138 139 return Result::INVALID_STATE; 140 } 141 } // namespace android 142