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

Commit e7168a21 authored by Weilin Xu's avatar Weilin Xu
Browse files

Fix converting 28-bit DAB radio id to AIDL HAL id

Fixed converting deprecated 28-bit IDENTIFIER_TYPE_DAB_SID_EXT into
44-bit DAB_SID_EXT defined in broadcast radio HAL. Also fixed potential
null pointer exception when converting related contents of program info
in AIDL broadcast radio HAL service.

Bug: 300481687
Test: atest ConversionUtilsTest
Change-Id: I263a3a88c6b4259fa6b3b1d7489a63f4d079e6c0
parent 59db8423
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -89,9 +89,6 @@ public final class ConversionUtilsTest extends ExtendedRadioMockitoTestCase {
    private static final ProgramSelector.Identifier TEST_DAB_FREQUENCY_ID =
            new ProgramSelector.Identifier(
                    ProgramSelector.IDENTIFIER_TYPE_DAB_FREQUENCY, TEST_DAB_FREQUENCY_VALUE);
    private static final ProgramSelector.Identifier TEST_FM_FREQUENCY_ID =
            new ProgramSelector.Identifier(
                    ProgramSelector.IDENTIFIER_TYPE_AMFM_FREQUENCY, TEST_FM_FREQUENCY_VALUE);
    private static final ProgramSelector.Identifier TEST_VENDOR_ID =
            new ProgramSelector.Identifier(
                    ProgramSelector.IDENTIFIER_TYPE_VENDOR_START, TEST_VENDOR_ID_VALUE);
@@ -250,6 +247,20 @@ public final class ConversionUtilsTest extends ExtendedRadioMockitoTestCase {
                .isEqualTo(TEST_HAL_DAB_SID_EXT_ID);
    }

    @Test
    public void identifierToHalProgramIdentifier_withDeprecateDabId() {
        long value = 0x98765ABCDL;
        ProgramSelector.Identifier dabId = new ProgramSelector.Identifier(
                        ProgramSelector.IDENTIFIER_TYPE_DAB_SID_EXT, value);
        ProgramIdentifier halDabIdExpected = AidlTestUtils.makeHalIdentifier(
                IdentifierType.DAB_SID_EXT, 0x987650000ABCDL);

        ProgramIdentifier halDabId = ConversionUtils.identifierToHalProgramIdentifier(dabId);

        expect.withMessage("Converted 28-bit DAB identifier for HAL").that(halDabId)
                .isEqualTo(halDabIdExpected);
    }

    @Test
    public void identifierFromHalProgramIdentifier_withDabId() {
        ProgramSelector.Identifier dabId =
+10 −2
Original line number Diff line number Diff line
@@ -323,10 +323,15 @@ final class ConversionUtils {
    static ProgramIdentifier identifierToHalProgramIdentifier(ProgramSelector.Identifier id) {
        ProgramIdentifier hwId = new ProgramIdentifier();
        hwId.type = id.getType();
        if (hwId.type == ProgramSelector.IDENTIFIER_TYPE_DAB_DMB_SID_EXT) {
        if (id.getType() == ProgramSelector.IDENTIFIER_TYPE_DAB_DMB_SID_EXT) {
            hwId.type = IdentifierType.DAB_SID_EXT;
        }
        hwId.value = id.getValue();
        long value = id.getValue();
        if (id.getType() == ProgramSelector.IDENTIFIER_TYPE_DAB_SID_EXT) {
            hwId.value = (value & 0xFFFF) | ((value >>> 16) << 32);
        } else {
            hwId.value = value;
        }
        return hwId;
    }

@@ -584,6 +589,9 @@ final class ConversionUtils {
                || isNewIdentifierInU(info.getPhysicallyTunedTo())) {
            return false;
        }
        if (info.getRelatedContent() == null) {
            return true;
        }
        Iterator<ProgramSelector.Identifier> relatedContentIt = info.getRelatedContent().iterator();
        while (relatedContentIt.hasNext()) {
            if (isNewIdentifierInU(relatedContentIt.next())) {