Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9bfb598 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 4476081 from dec548b0 to pi-release

Change-Id: I64877f1c10c2721ff5f2d009bfd9116afe0300c7
parents cdd83cfb dec548b0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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),
+4 −0
Original line number Diff line number Diff line
@@ -23,5 +23,9 @@ cc_library_static {
    strip: {
        keep_symbols: true,
    },
    cflags: [
        "-Wall",
        "-Werror",
    ],
    srcs: ["VehicleHalProto.proto"]
}
+1 −0
Original line number Diff line number Diff line
@@ -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",
+92 −0
Original line number Diff line number Diff line
@@ -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));

+2 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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