Loading audio/2.0/default/StreamIn.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -415,7 +415,7 @@ Result StreamIn::getCapturePositionImpl(audio_stream_in_t* stream, // spam the log in this case. static const std::vector<int> ignoredErrors{ENOSYS}; Result retval(Result::NOT_SUPPORTED); if (stream->get_capture_position != NULL) return retval; if (stream->get_capture_position == NULL) return retval; int64_t halFrames, halTime; retval = Stream::analyzeStatus("get_capture_position", stream->get_capture_position(stream, &halFrames, &halTime), Loading automotive/vehicle/2.0/default/impl/vhal_v2_0/proto/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -23,5 +23,9 @@ cc_library_static { strip: { keep_symbols: true, }, cflags: [ "-Wall", "-Werror", ], srcs: ["VehicleHalProto.proto"] } broadcastradio/1.1/vts/functional/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ cc_test { static_libs: [ "android.hardware.broadcastradio@1.0", "android.hardware.broadcastradio@1.1", "android.hardware.broadcastradio@1.2", // common-utils-lib dependency "android.hardware.broadcastradio@common-utils-lib", "android.hardware.broadcastradio@vts-utils-lib", "libgmock", Loading broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp +92 −0 Original line number Diff line number Diff line Loading @@ -525,6 +525,98 @@ TEST_P(BroadcastRadioHalTest, AnalogForcedSwitch) { ASSERT_FALSE(forced); } static void verifyIdentifier(const ProgramIdentifier& id) { EXPECT_NE(id.type, 0u); auto val = id.value; switch (static_cast<IdentifierType>(id.type)) { case IdentifierType::AMFM_FREQUENCY: case IdentifierType::DAB_FREQUENCY: case IdentifierType::DRMO_FREQUENCY: EXPECT_GT(val, 100u) << "Expected f > 100kHz"; EXPECT_LT(val, 10000000u) << "Expected f < 10GHz"; break; case IdentifierType::RDS_PI: EXPECT_GT(val, 0u); EXPECT_LE(val, 0xFFFFu) << "Expected 16bit id"; break; case IdentifierType::HD_STATION_ID_EXT: { auto stationId = val & 0xFFFFFFFF; // 32bit val >>= 32; auto subchannel = val & 0xF; // 4bit val >>= 4; auto freq = val & 0x3FFFF; // 18bit EXPECT_GT(stationId, 0u); EXPECT_LT(subchannel, 8u) << "Expected ch < 8"; EXPECT_GT(freq, 100u) << "Expected f > 100kHz"; EXPECT_LT(freq, 10000000u) << "Expected f < 10GHz"; break; } case IdentifierType::HD_SUBCHANNEL: EXPECT_LT(val, 8u) << "Expected ch < 8"; break; case IdentifierType::DAB_SIDECC: { auto sid = val & 0xFFFF; // 16bit val >>= 16; auto ecc = val & 0xFF; // 8bit EXPECT_NE(sid, 0u); EXPECT_GE(ecc, 0xA0u) << "Invalid ECC, see ETSI TS 101 756 V2.1.1"; EXPECT_LE(ecc, 0xF6u) << "Invalid ECC, see ETSI TS 101 756 V2.1.1"; break; } case IdentifierType::DAB_ENSEMBLE: EXPECT_GT(val, 0u); EXPECT_LE(val, 0xFFFFu) << "Expected 16bit id"; break; case IdentifierType::DAB_SCID: EXPECT_GT(val, 0xFu) << "Expected 12bit SCId (not 4bit SCIdS)"; EXPECT_LE(val, 0xFFFu) << "Expected 12bit id"; break; case IdentifierType::DRMO_SERVICE_ID: EXPECT_GT(val, 0u); EXPECT_LE(val, 0xFFFFFFu) << "Expected 24bit id"; break; case IdentifierType::DRMO_MODULATION: EXPECT_GE(val, static_cast<uint32_t>(Modulation::AM)); EXPECT_LE(val, static_cast<uint32_t>(Modulation::FM)); break; case IdentifierType::SXM_SERVICE_ID: EXPECT_GT(val, 0u); EXPECT_LE(val, 0xFFFFFFFFu) << "Expected 32bit id"; break; case IdentifierType::SXM_CHANNEL: EXPECT_LT(val, 1000u); break; case IdentifierType::VENDOR_PRIMARY_START: case IdentifierType::VENDOR_PRIMARY_END: // skip break; } } /** * Test ProgramIdentifier format. * * Verifies that: * - values of ProgramIdentifier match their definitions at IdentifierType. */ TEST_P(BroadcastRadioHalTest, VerifyIdentifiersFormat) { if (skipped) return; ASSERT_TRUE(openTuner()); do { auto getCb = [&](const hidl_vec<ProgramInfo>& list) { for (auto&& program : list) { verifyIdentifier(program.selector.primaryId); for (auto&& id : program.selector.secondaryIds) { verifyIdentifier(id); } } }; getProgramList(getCb); } while (nextBand()); } INSTANTIATE_TEST_CASE_P(BroadcastRadioHalTestCases, BroadcastRadioHalTest, ::testing::Values(Class::AM_FM, Class::SAT, Class::DT)); Loading broadcastradio/1.2/default/Tuner.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -35,13 +35,13 @@ using V1_0::Band; using V1_0::BandConfig; using V1_0::Class; using V1_0::Direction; using V1_1::IdentifierType; using V1_1::ProgramInfo; using V1_1::ProgramInfoFlags; using V1_1::ProgramListResult; using V1_1::ProgramSelector; using V1_1::ProgramType; using V1_1::VendorKeyValue; using V1_2::IdentifierType; using utils::HalRevision; using std::chrono::milliseconds; Loading Loading @@ -282,7 +282,7 @@ Return<Result> Tuner::tuneByProgramSelector(const ProgramSelector& sel) { return Result::INVALID_ARGUMENTS; } } else if (programType == ProgramType::DAB) { if (!utils::hasId(sel, IdentifierType::DAB_SIDECC)) return Result::INVALID_ARGUMENTS; if (!utils::hasId(sel, IdentifierType::DAB_SID_EXT)) return Result::INVALID_ARGUMENTS; } else if (programType == ProgramType::DRMO) { if (!utils::hasId(sel, IdentifierType::DRMO_SERVICE_ID)) return Result::INVALID_ARGUMENTS; } else if (programType == ProgramType::SXM) { Loading Loading
audio/2.0/default/StreamIn.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -415,7 +415,7 @@ Result StreamIn::getCapturePositionImpl(audio_stream_in_t* stream, // spam the log in this case. static const std::vector<int> ignoredErrors{ENOSYS}; Result retval(Result::NOT_SUPPORTED); if (stream->get_capture_position != NULL) return retval; if (stream->get_capture_position == NULL) return retval; int64_t halFrames, halTime; retval = Stream::analyzeStatus("get_capture_position", stream->get_capture_position(stream, &halFrames, &halTime), Loading
automotive/vehicle/2.0/default/impl/vhal_v2_0/proto/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -23,5 +23,9 @@ cc_library_static { strip: { keep_symbols: true, }, cflags: [ "-Wall", "-Werror", ], srcs: ["VehicleHalProto.proto"] }
broadcastradio/1.1/vts/functional/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ cc_test { static_libs: [ "android.hardware.broadcastradio@1.0", "android.hardware.broadcastradio@1.1", "android.hardware.broadcastradio@1.2", // common-utils-lib dependency "android.hardware.broadcastradio@common-utils-lib", "android.hardware.broadcastradio@vts-utils-lib", "libgmock", Loading
broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp +92 −0 Original line number Diff line number Diff line Loading @@ -525,6 +525,98 @@ TEST_P(BroadcastRadioHalTest, AnalogForcedSwitch) { ASSERT_FALSE(forced); } static void verifyIdentifier(const ProgramIdentifier& id) { EXPECT_NE(id.type, 0u); auto val = id.value; switch (static_cast<IdentifierType>(id.type)) { case IdentifierType::AMFM_FREQUENCY: case IdentifierType::DAB_FREQUENCY: case IdentifierType::DRMO_FREQUENCY: EXPECT_GT(val, 100u) << "Expected f > 100kHz"; EXPECT_LT(val, 10000000u) << "Expected f < 10GHz"; break; case IdentifierType::RDS_PI: EXPECT_GT(val, 0u); EXPECT_LE(val, 0xFFFFu) << "Expected 16bit id"; break; case IdentifierType::HD_STATION_ID_EXT: { auto stationId = val & 0xFFFFFFFF; // 32bit val >>= 32; auto subchannel = val & 0xF; // 4bit val >>= 4; auto freq = val & 0x3FFFF; // 18bit EXPECT_GT(stationId, 0u); EXPECT_LT(subchannel, 8u) << "Expected ch < 8"; EXPECT_GT(freq, 100u) << "Expected f > 100kHz"; EXPECT_LT(freq, 10000000u) << "Expected f < 10GHz"; break; } case IdentifierType::HD_SUBCHANNEL: EXPECT_LT(val, 8u) << "Expected ch < 8"; break; case IdentifierType::DAB_SIDECC: { auto sid = val & 0xFFFF; // 16bit val >>= 16; auto ecc = val & 0xFF; // 8bit EXPECT_NE(sid, 0u); EXPECT_GE(ecc, 0xA0u) << "Invalid ECC, see ETSI TS 101 756 V2.1.1"; EXPECT_LE(ecc, 0xF6u) << "Invalid ECC, see ETSI TS 101 756 V2.1.1"; break; } case IdentifierType::DAB_ENSEMBLE: EXPECT_GT(val, 0u); EXPECT_LE(val, 0xFFFFu) << "Expected 16bit id"; break; case IdentifierType::DAB_SCID: EXPECT_GT(val, 0xFu) << "Expected 12bit SCId (not 4bit SCIdS)"; EXPECT_LE(val, 0xFFFu) << "Expected 12bit id"; break; case IdentifierType::DRMO_SERVICE_ID: EXPECT_GT(val, 0u); EXPECT_LE(val, 0xFFFFFFu) << "Expected 24bit id"; break; case IdentifierType::DRMO_MODULATION: EXPECT_GE(val, static_cast<uint32_t>(Modulation::AM)); EXPECT_LE(val, static_cast<uint32_t>(Modulation::FM)); break; case IdentifierType::SXM_SERVICE_ID: EXPECT_GT(val, 0u); EXPECT_LE(val, 0xFFFFFFFFu) << "Expected 32bit id"; break; case IdentifierType::SXM_CHANNEL: EXPECT_LT(val, 1000u); break; case IdentifierType::VENDOR_PRIMARY_START: case IdentifierType::VENDOR_PRIMARY_END: // skip break; } } /** * Test ProgramIdentifier format. * * Verifies that: * - values of ProgramIdentifier match their definitions at IdentifierType. */ TEST_P(BroadcastRadioHalTest, VerifyIdentifiersFormat) { if (skipped) return; ASSERT_TRUE(openTuner()); do { auto getCb = [&](const hidl_vec<ProgramInfo>& list) { for (auto&& program : list) { verifyIdentifier(program.selector.primaryId); for (auto&& id : program.selector.secondaryIds) { verifyIdentifier(id); } } }; getProgramList(getCb); } while (nextBand()); } INSTANTIATE_TEST_CASE_P(BroadcastRadioHalTestCases, BroadcastRadioHalTest, ::testing::Values(Class::AM_FM, Class::SAT, Class::DT)); Loading
broadcastradio/1.2/default/Tuner.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -35,13 +35,13 @@ using V1_0::Band; using V1_0::BandConfig; using V1_0::Class; using V1_0::Direction; using V1_1::IdentifierType; using V1_1::ProgramInfo; using V1_1::ProgramInfoFlags; using V1_1::ProgramListResult; using V1_1::ProgramSelector; using V1_1::ProgramType; using V1_1::VendorKeyValue; using V1_2::IdentifierType; using utils::HalRevision; using std::chrono::milliseconds; Loading Loading @@ -282,7 +282,7 @@ Return<Result> Tuner::tuneByProgramSelector(const ProgramSelector& sel) { return Result::INVALID_ARGUMENTS; } } else if (programType == ProgramType::DAB) { if (!utils::hasId(sel, IdentifierType::DAB_SIDECC)) return Result::INVALID_ARGUMENTS; if (!utils::hasId(sel, IdentifierType::DAB_SID_EXT)) return Result::INVALID_ARGUMENTS; } else if (programType == ProgramType::DRMO) { if (!utils::hasId(sel, IdentifierType::DRMO_SERVICE_ID)) return Result::INVALID_ARGUMENTS; } else if (programType == ProgramType::SXM) { Loading