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

Commit 66b5f382 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk Committed by Android (Google) Code Review
Browse files

Merge "Make metadata field mandatory for program info struct."

parents 96966995 049475c2
Loading
Loading
Loading
Loading
+10 −19
Original line number Diff line number Diff line
@@ -172,16 +172,11 @@ public:
    virtual status_t getProgramInformation(struct radio_program_info *info)
    {
        Parcel data, reply;
        if (info == NULL) {
        if (info == nullptr || info->metadata == nullptr) {
            return BAD_VALUE;
        }
        radio_metadata_t *metadata = info->metadata;
        data.writeInterfaceToken(IRadio::getInterfaceDescriptor());
        if (metadata != NULL) {
            data.writeUint32(1);
        } else {
            data.writeUint32(0);
        }
        status_t status = remote()->transact(GET_PROGRAM_INFORMATION, data, &reply);
        if (status == NO_ERROR) {
            status = (status_t)reply.readInt32();
@@ -190,13 +185,13 @@ public:
                // restore local metadata pointer
                info->metadata = metadata;

                uint32_t metatataSize = reply.readUint32();
                if ((metadata != NULL) && (metatataSize != 0)) {
                    radio_metadata_t *newMetadata = (radio_metadata_t *)malloc(metatataSize);
                uint32_t metadataSize = reply.readUint32();
                if (metadataSize != 0) {
                    radio_metadata_t *newMetadata = (radio_metadata_t *)malloc(metadataSize);
                    if (newMetadata == NULL) {
                        return NO_MEMORY;
                    }
                    reply.read(newMetadata, metatataSize);
                    reply.read(newMetadata, metadataSize);
                    status = radio_metadata_add_metadata(&info->metadata, newMetadata);
                    free(newMetadata);
                }
@@ -306,21 +301,17 @@ status_t BnRadio::onTransact(
            CHECK_INTERFACE(IRadio, data, reply);
            struct radio_program_info info;
            status_t status;
            // query metadata only if requested by remote side
            if (data.readUint32() == 1) {

            status = radio_metadata_allocate(&info.metadata, 0, 0);
            if (status != NO_ERROR) {
                return status;
            }
            } else {
                info.metadata = NULL;
            }
            status = getProgramInformation(&info);

            reply->writeInt32(status);
            if (status == NO_ERROR) {
                reply->write(&info, sizeof(struct radio_program_info));
                if ((info.metadata != NULL) && (radio_metadata_get_count(info.metadata) > 0)) {
                if (radio_metadata_get_count(info.metadata) > 0) {
                    size_t size = radio_metadata_get_size(info.metadata);
                    reply->writeUint32((uint32_t)size);
                    reply->write(info.metadata, size);
+3 −6
Original line number Diff line number Diff line
@@ -122,8 +122,7 @@ void HidlUtils::convertBandConfigFromHal(radio_hal_band_config_t *config,

//static
void HidlUtils::convertProgramInfoFromHal(radio_program_info_t *info,
                                          const ProgramInfo *halInfo,
                                          bool withMetadata)
                                          const ProgramInfo *halInfo)
{
    info->channel = halInfo->channel;
    info->sub_channel = halInfo->subChannel;
@@ -131,11 +130,9 @@ void HidlUtils::convertProgramInfoFromHal(radio_program_info_t *info,
    info->stereo = halInfo->stereo;
    info->digital = halInfo->digital;
    info->signal_strength = halInfo->signalStrength;
    if (withMetadata && halInfo->metadata.size() != 0) {
    convertMetaDataFromHal(&info->metadata, halInfo->metadata,
                           halInfo->channel, halInfo->subChannel);
}
}

//static
void HidlUtils::convertMetaDataFromHal(radio_metadata_t **metadata,
+1 −2
Original line number Diff line number Diff line
@@ -38,8 +38,7 @@ public:
    static void convertBandConfigToHal(BandConfig *halConfig,
                                       const radio_hal_band_config_t *config);
    static void convertProgramInfoFromHal(radio_program_info_t *info,
                                          const ProgramInfo *halInfo,
                                          bool withMetadata);
                                          const ProgramInfo *halInfo);
    static void convertMetaDataFromHal(radio_metadata_t **metadata,
                                       const hidl_vec<MetaData>& halMetadata,
                                       uint32_t channel,
+13 −13
Original line number Diff line number Diff line
@@ -233,11 +233,13 @@ int RadioHalHidl::Tuner::getProgramInformation(radio_program_info_t *info)
    if (mHalTuner == 0) {
        return -ENODEV;
    }
    if (info == nullptr || info->metadata == nullptr) {
        return BAD_VALUE;
    }
    ProgramInfo halInfo;
    Result halResult;
    bool withMetaData = (info->metadata != NULL);
    Return<void> hidlReturn = mHalTuner->getProgramInformation(
                    withMetaData, [&](Result result, const ProgramInfo& info) {
        [&](Result result, const ProgramInfo& info) {
            halResult = result;
            if (result == Result::OK) {
                halInfo = info;
@@ -245,7 +247,7 @@ int RadioHalHidl::Tuner::getProgramInformation(radio_program_info_t *info)
        });
    status_t status = checkHidlStatus(hidlReturn.getStatus());
    if (status == NO_ERROR && halResult == Result::OK) {
        HidlUtils::convertProgramInfoFromHal(info, &halInfo, withMetaData);
        HidlUtils::convertProgramInfoFromHal(info, &halInfo);
    }
    return HidlUtils::convertHalResult(halResult);
}
@@ -276,11 +278,9 @@ Return<void> RadioHalHidl::Tuner::tuneComplete(Result result, const ProgramInfo&
    memset(&event, 0, sizeof(radio_hal_event_t));
    event.type = RADIO_EVENT_TUNED;
    event.status = HidlUtils::convertHalResult(result);
    HidlUtils::convertProgramInfoFromHal(&event.info, &info, true);
    HidlUtils::convertProgramInfoFromHal(&event.info, &info);
    onCallback(&event);
    if (event.info.metadata != NULL) {
    radio_metadata_deallocate(event.info.metadata);
    }
    return Return<void>();
}

@@ -290,7 +290,7 @@ Return<void> RadioHalHidl::Tuner::afSwitch(const ProgramInfo& info)
    radio_hal_event_t event;
    memset(&event, 0, sizeof(radio_hal_event_t));
    event.type = RADIO_EVENT_AF_SWITCH;
    HidlUtils::convertProgramInfoFromHal(&event.info, &info, true);
    HidlUtils::convertProgramInfoFromHal(&event.info, &info);
    onCallback(&event);
    if (event.info.metadata != NULL) {
        radio_metadata_deallocate(event.info.metadata);