Merge "Revert "Add monitor for ip cid change""
diff --git a/tv/tuner/1.1/IFilter.hal b/tv/tuner/1.1/IFilter.hal
index 1e94114..1c6c33f 100644
--- a/tv/tuner/1.1/IFilter.hal
+++ b/tv/tuner/1.1/IFilter.hal
@@ -85,23 +85,19 @@
configureAvStreamType(AvStreamType avStreamType) generates (Result result);
/**
- * Configure the monitor event.
+ * Configure the filter to monitor specific Scrambling Status.
*
- * The event for Scrambling Status should be sent at the following two scenarios:
+ * Scrambling Status should be sent through the filer callback at the following two scenarios:
* 1. When this method is called, the first detected scrambling status should be sent.
- * 2. When the Scrambling status transits into different status, event should be sent.
+ * 2. When the filter transits into the monitored statuses configured through this method,
+ * event should be sent.
*
- * The event for IP CID change should be sent at the following two scenarios:
- * 1. When this method is called, the first detected CID for the IP should be sent.
- * 2. When the CID is changed to different value for the IP filter, event should be sent.
- *
- * @param monitorEventypes the events to monitor. Set corresponding bit of the event to monitor.
- * Reset to stop monitoring.
+ * @param statuses Scrambling Statuses to monitor. Set corresponding bit to monitor. Reset to
+ * stop monitoring.
* @return result Result status of the operation.
- * SUCCESS if successful,
- * INVALID_STATE if configure can't be applied,
- * UNKNOWN_ERROR if failed for other reasons.
+ * SUCCESS if successful,
+ * INVALID_STATE if configure can't be applied,
+ * UNKNOWN_ERROR if failed for other reasons.
*/
- configureMonitorEvent(bitfield<DemuxFilterMonitorEventType> monitorEventTypes)
- generates (Result result);
+ configureScramblingEvent(bitfield<ScramblingStatus> statuses) generates (Result result);
};
diff --git a/tv/tuner/1.1/default/Filter.cpp b/tv/tuner/1.1/default/Filter.cpp
index 4fa1746..e766a8a 100644
--- a/tv/tuner/1.1/default/Filter.cpp
+++ b/tv/tuner/1.1/default/Filter.cpp
@@ -250,49 +250,25 @@
return Result::SUCCESS;
}
-Return<Result> Filter::configureMonitorEvent(uint32_t monitorEventTypes) {
+Return<Result> Filter::configureScramblingEvent(uint32_t statuses) {
ALOGV("%s", __FUNCTION__);
- DemuxFilterEvent emptyFilterEvent;
- V1_1::DemuxFilterMonitorEvent monitorEvent;
- V1_1::DemuxFilterEventExt eventExt;
+ mStatuses = statuses;
+ if (mCallback_1_1 != nullptr) {
+ // Assuming current status is always NOT_SCRAMBLED
+ V1_1::DemuxFilterEventExt filterEventExt;
+ V1_1::DemuxFilterEventExt::Event event;
+ event.scramblingStatus(V1_1::ScramblingStatus::NOT_SCRAMBLED);
+ int size = filterEventExt.events.size();
+ filterEventExt.events.resize(size + 1);
+ filterEventExt.events[size] = event;
+ DemuxFilterEvent emptyFilterEvent;
- uint32_t newScramblingStatus =
- monitorEventTypes & V1_1::DemuxFilterMonitorEventType::SCRAMBLING_STATUS;
- uint32_t newIpCid = monitorEventTypes & V1_1::DemuxFilterMonitorEventType::IP_CID_CHANGE;
-
- // if scrambling status monitoring flipped, record the new state and send msg on enabling
- if (newScramblingStatus ^ mScramblingStatusMonitored) {
- mScramblingStatusMonitored = newScramblingStatus;
- if (mScramblingStatusMonitored) {
- if (mCallback_1_1 != nullptr) {
- // Assuming current status is always NOT_SCRAMBLED
- monitorEvent.scramblingStatus(V1_1::ScramblingStatus::NOT_SCRAMBLED);
- eventExt.events.resize(1);
- eventExt.events[0].monitorEvent(monitorEvent);
- mCallback_1_1->onFilterEvent_1_1(emptyFilterEvent, eventExt);
- } else {
- return Result::INVALID_STATE;
- }
- }
+ mCallback_1_1->onFilterEvent_1_1(emptyFilterEvent, filterEventExt);
+ mFilterEventExt.events.resize(0);
+ } else {
+ return Result::INVALID_STATE;
}
-
- // if ip cid monitoring flipped, record the new state and send msg on enabling
- if (newIpCid ^ mIpCidMonitored) {
- mIpCidMonitored = newIpCid;
- if (mIpCidMonitored) {
- if (mCallback_1_1 != nullptr) {
- // Return random cid
- monitorEvent.cid(1);
- eventExt.events.resize(1);
- eventExt.events[0].monitorEvent(monitorEvent);
- mCallback_1_1->onFilterEvent_1_1(emptyFilterEvent, eventExt);
- } else {
- return Result::INVALID_STATE;
- }
- }
- }
-
return Result::SUCCESS;
}
diff --git a/tv/tuner/1.1/default/Filter.h b/tv/tuner/1.1/default/Filter.h
index 3a4246e..1ebc135 100644
--- a/tv/tuner/1.1/default/Filter.h
+++ b/tv/tuner/1.1/default/Filter.h
@@ -84,7 +84,7 @@
virtual Return<Result> configureAvStreamType(const V1_1::AvStreamType& avStreamType) override;
- virtual Return<Result> configureMonitorEvent(uint32_t monitorEventTypes) override;
+ virtual Return<Result> configureScramblingEvent(uint32_t statuses) override;
/**
* To create a FilterMQ and its Event Flag.
@@ -238,8 +238,6 @@
bool mConfigured = false;
int mStartId = 0;
- uint8_t mScramblingStatusMonitored = 0;
- uint8_t mIpCidMonitored = 0;
};
} // namespace implementation
diff --git a/tv/tuner/1.1/types.hal b/tv/tuner/1.1/types.hal
index 938cb6e..09b87f2 100644
--- a/tv/tuner/1.1/types.hal
+++ b/tv/tuner/1.1/types.hal
@@ -151,42 +151,22 @@
struct DemuxFilterEventExt {
safe_union Event {
/**
- * No extended filter Event.
+ * No extended record filter Event. This is used by the tsRecord or mmtpRecord filter event
+ * that does not contain the DemuxFilterTs/MmtpRecordEventExt information.
*/
Monostate noinit;
- /**
- * Extended TS Record event sent along with @1.0::DemuxFilterEvent::Event::tsRecord.
- * DemuxFilterEventExt.events[i] is corresponding to @1.0::DemuxFilterEvent.events[i]. If
- * @1.0::DemuxFilterEvent.events[i] does not have extended event,
- * DemuxFilterEventExt.events[i] should use Monostate.
- */
DemuxFilterTsRecordEventExt tsRecord;
- /**
- * Extended MMTP Record event sent along with @1.0::DemuxFilterEvent::Event::mmtpRecord.
- * DemuxFilterEventExt.events[i] is corresponding to @1.0::DemuxFilterEvent.events[i]. If
- * @1.0::DemuxFilterEvent.events[i] does not have extended event,
- * DemuxFilterEventExt.events[i] should use Monostate.
- */
DemuxFilterMmtpRecordEventExt mmtpRecord;
- /**
- * Monitor event to notify monitored status change.
- *
- * When sending monitorEvent, DemuxFilterEventExt.events should only contain one
- * monitorEvent. MonitorEvent should be sent with an empty @1.0::DemuxFilterEvent.
- */
- DemuxFilterMonitorEvent monitorEvent;
+ ScramblingStatus scramblingStatus;
/**
* An unique ID to mark the start point of receiving the valid filter events after
* reconfiguring the filter. It must be sent at least once in the first event after the
* filter is restarted. 0 is reserved for the newly opened filter's first start, which is
* optional for HAL to send.
- *
- * When sending starId, DemuxFilterEventExt.events should only contain one startId event.
- * StardId event should be sent with an empty @1.0::DemuxFilterEvent.
*/
uint32_t startId;
};
@@ -216,24 +196,6 @@
SCRAMBLED = 1 << 2,
};
-@export
-enum DemuxFilterMonitorEventType : uint32_t {
- SCRAMBLING_STATUS = 1 << 0,
- IP_CID_CHANGE = 1 << 1,
-};
-
-safe_union DemuxFilterMonitorEvent {
- /**
- * New scrambling status.
- */
- ScramblingStatus scramblingStatus;
-
- /**
- * New cid for the IP filter.
- */
- uint32_t cid;
-};
-
typedef FrontendDvbcSpectralInversion FrontendSpectralInversion;
/**
diff --git a/tv/tuner/1.1/vts/functional/FilterTests.cpp b/tv/tuner/1.1/vts/functional/FilterTests.cpp
index d8fad3d..cdf3b69 100644
--- a/tv/tuner/1.1/vts/functional/FilterTests.cpp
+++ b/tv/tuner/1.1/vts/functional/FilterTests.cpp
@@ -40,18 +40,6 @@
ALOGW("[vts] pass and stop");
}
-void FilterCallback::testFilterIpCidEvent() {
- android::Mutex::Autolock autoLock(mMsgLock);
- while (mIpCidEvent < 1) {
- if (-ETIMEDOUT == mMsgCondition.waitRelative(mMsgLock, WAIT_TIMEOUT)) {
- EXPECT_TRUE(false) << "ip cid change event does not output within timeout";
- return;
- }
- }
- mIpCidEvent = 0;
- ALOGW("[vts] pass and stop");
-}
-
void FilterCallback::testStartIdAfterReconfigure() {
android::Mutex::Autolock autoLock(mMsgLock);
while (!mStartIdReceived) {
@@ -92,17 +80,8 @@
eventExt.mmtpRecord().pts, eventExt.mmtpRecord().firstMbInSlice,
eventExt.mmtpRecord().mpuSequenceNumber, eventExt.mmtpRecord().tsIndexMask);
break;
- case DemuxFilterEventExt::Event::hidl_discriminator::monitorEvent:
- switch (eventExt.monitorEvent().getDiscriminator()) {
- case DemuxFilterMonitorEvent::hidl_discriminator::scramblingStatus:
- mScramblingStatusEvent++;
- break;
- case DemuxFilterMonitorEvent::hidl_discriminator::cid:
- mIpCidEvent++;
- break;
- default:
- break;
- }
+ case DemuxFilterEventExt::Event::hidl_discriminator::scramblingStatus:
+ mScramblingStatusEvent++;
break;
case DemuxFilterEventExt::Event::hidl_discriminator::startId:
ALOGD("[vts] Extended restart filter event, startId=%d", eventExt.startId());
@@ -293,16 +272,15 @@
return AssertionResult(status == Result::SUCCESS);
}
-AssertionResult FilterTests::configureMonitorEvent(uint64_t filterId, uint32_t monitorEventTypes) {
+AssertionResult FilterTests::configureScramblingEvent(uint64_t filterId, uint32_t statuses) {
EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first.";
Result status;
sp<android::hardware::tv::tuner::V1_1::IFilter> filter_v1_1 =
android::hardware::tv::tuner::V1_1::IFilter::castFrom(mFilters[filterId]);
if (filter_v1_1 != NULL) {
- status = filter_v1_1->configureMonitorEvent(monitorEventTypes);
+ status = filter_v1_1->configureScramblingEvent(statuses);
mFilterCallbacks[filterId]->testFilterScramblingEvent();
- mFilterCallbacks[filterId]->testFilterIpCidEvent();
} else {
ALOGW("[vts] Can't cast IFilter into v1_1.");
return failure();
diff --git a/tv/tuner/1.1/vts/functional/FilterTests.h b/tv/tuner/1.1/vts/functional/FilterTests.h
index 6749265..ae57659 100644
--- a/tv/tuner/1.1/vts/functional/FilterTests.h
+++ b/tv/tuner/1.1/vts/functional/FilterTests.h
@@ -56,7 +56,6 @@
using android::hardware::tv::tuner::V1_0::Result;
using android::hardware::tv::tuner::V1_1::AvStreamType;
using android::hardware::tv::tuner::V1_1::DemuxFilterEventExt;
-using android::hardware::tv::tuner::V1_1::DemuxFilterMonitorEvent;
using android::hardware::tv::tuner::V1_1::IFilterCallback;
using android::hardware::tv::tuner::V1_1::ITuner;
@@ -119,7 +118,6 @@
void testFilterDataOutput();
void testFilterScramblingEvent();
- void testFilterIpCidEvent();
void testStartIdAfterReconfigure();
void readFilterEventData();
@@ -141,7 +139,6 @@
int mPidFilterOutputCount = 0;
int mScramblingStatusEvent = 0;
- int mIpCidEvent = 0;
bool mStartIdReceived = false;
};
@@ -160,7 +157,7 @@
AssertionResult configFilter(DemuxFilterSettings setting, uint64_t filterId);
AssertionResult configAvFilterStreamType(AvStreamType type, uint64_t filterId);
AssertionResult configIpFilterCid(uint32_t ipCid, uint64_t filterId);
- AssertionResult configureMonitorEvent(uint64_t filterId, uint32_t monitorEventTypes);
+ AssertionResult configureScramblingEvent(uint64_t filterId, uint32_t statuses);
AssertionResult getFilterMQDescriptor(uint64_t filterId);
AssertionResult startFilter(uint64_t filterId);
AssertionResult stopFilter(uint64_t filterId);
diff --git a/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TargetTest.cpp b/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TargetTest.cpp
index e872762..dda8b60 100644
--- a/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TargetTest.cpp
+++ b/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TargetTest.cpp
@@ -46,8 +46,8 @@
if (filterConf.type.mainType == DemuxFilterMainType::IP) {
ASSERT_TRUE(mFilterTests.configIpFilterCid(filterConf.ipCid, filterId));
}
- if (filterConf.monitorEventTypes > 0) {
- ASSERT_TRUE(mFilterTests.configureMonitorEvent(filterId, filterConf.monitorEventTypes));
+ if (filterConf.statuses > 0) {
+ ASSERT_TRUE(mFilterTests.configureScramblingEvent(filterId, filterConf.statuses));
}
ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId));
ASSERT_TRUE(mFilterTests.startFilter(filterId));
diff --git a/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TestConfigurations.h b/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TestConfigurations.h
index beae223..76bf765 100644
--- a/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TestConfigurations.h
+++ b/tv/tuner/1.1/vts/functional/VtsHalTvTunerV1_1TestConfigurations.h
@@ -96,7 +96,7 @@
DemuxFilterSettings settings;
AvStreamType streamType;
uint32_t ipCid;
- uint32_t monitorEventTypes;
+ uint32_t statuses;
bool operator<(const FilterConfig& /*c*/) const { return false; }
};
@@ -188,9 +188,7 @@
filterArray[TS_VIDEO0].bufferSize = FMQ_SIZE_16M;
filterArray[TS_VIDEO0].settings.ts().tpid = 256;
filterArray[TS_VIDEO0].settings.ts().filterSettings.av({.isPassthrough = false});
- filterArray[TS_VIDEO0].monitorEventTypes =
- android::hardware::tv::tuner::V1_1::DemuxFilterMonitorEventType::SCRAMBLING_STATUS |
- android::hardware::tv::tuner::V1_1::DemuxFilterMonitorEventType::IP_CID_CHANGE;
+ filterArray[TS_VIDEO0].statuses = 1;
filterArray[TS_VIDEO1].type.mainType = DemuxFilterMainType::TS;
filterArray[TS_VIDEO1].type.subType.tsFilterType(DemuxTsFilterType::VIDEO);
filterArray[TS_VIDEO1].bufferSize = FMQ_SIZE_16M;