Loading radio/IRadio.cpp +10 −19 Original line number Original line Diff line number Diff line Loading @@ -172,16 +172,11 @@ public: virtual status_t getProgramInformation(struct radio_program_info *info) virtual status_t getProgramInformation(struct radio_program_info *info) { { Parcel data, reply; Parcel data, reply; if (info == NULL) { if (info == nullptr || info->metadata == nullptr) { return BAD_VALUE; return BAD_VALUE; } } radio_metadata_t *metadata = info->metadata; radio_metadata_t *metadata = info->metadata; data.writeInterfaceToken(IRadio::getInterfaceDescriptor()); data.writeInterfaceToken(IRadio::getInterfaceDescriptor()); if (metadata != NULL) { data.writeUint32(1); } else { data.writeUint32(0); } status_t status = remote()->transact(GET_PROGRAM_INFORMATION, data, &reply); status_t status = remote()->transact(GET_PROGRAM_INFORMATION, data, &reply); if (status == NO_ERROR) { if (status == NO_ERROR) { status = (status_t)reply.readInt32(); status = (status_t)reply.readInt32(); Loading @@ -190,13 +185,13 @@ public: // restore local metadata pointer // restore local metadata pointer info->metadata = metadata; info->metadata = metadata; uint32_t metatataSize = reply.readUint32(); uint32_t metadataSize = reply.readUint32(); if ((metadata != NULL) && (metatataSize != 0)) { if (metadataSize != 0) { radio_metadata_t *newMetadata = (radio_metadata_t *)malloc(metatataSize); radio_metadata_t *newMetadata = (radio_metadata_t *)malloc(metadataSize); if (newMetadata == NULL) { if (newMetadata == NULL) { return NO_MEMORY; return NO_MEMORY; } } reply.read(newMetadata, metatataSize); reply.read(newMetadata, metadataSize); status = radio_metadata_add_metadata(&info->metadata, newMetadata); status = radio_metadata_add_metadata(&info->metadata, newMetadata); free(newMetadata); free(newMetadata); } } Loading Loading @@ -306,21 +301,17 @@ status_t BnRadio::onTransact( CHECK_INTERFACE(IRadio, data, reply); CHECK_INTERFACE(IRadio, data, reply); struct radio_program_info info; struct radio_program_info info; status_t status; status_t status; // query metadata only if requested by remote side if (data.readUint32() == 1) { status = radio_metadata_allocate(&info.metadata, 0, 0); status = radio_metadata_allocate(&info.metadata, 0, 0); if (status != NO_ERROR) { if (status != NO_ERROR) { return status; return status; } } } else { info.metadata = NULL; } status = getProgramInformation(&info); status = getProgramInformation(&info); reply->writeInt32(status); reply->writeInt32(status); if (status == NO_ERROR) { if (status == NO_ERROR) { reply->write(&info, sizeof(struct radio_program_info)); 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); size_t size = radio_metadata_get_size(info.metadata); reply->writeUint32((uint32_t)size); reply->writeUint32((uint32_t)size); reply->write(info.metadata, size); reply->write(info.metadata, size); Loading services/radio/HidlUtils.cpp +3 −6 Original line number Original line Diff line number Diff line Loading @@ -122,8 +122,7 @@ void HidlUtils::convertBandConfigFromHal(radio_hal_band_config_t *config, //static //static void HidlUtils::convertProgramInfoFromHal(radio_program_info_t *info, void HidlUtils::convertProgramInfoFromHal(radio_program_info_t *info, const ProgramInfo *halInfo, const ProgramInfo *halInfo) bool withMetadata) { { info->channel = halInfo->channel; info->channel = halInfo->channel; info->sub_channel = halInfo->subChannel; info->sub_channel = halInfo->subChannel; Loading @@ -131,11 +130,9 @@ void HidlUtils::convertProgramInfoFromHal(radio_program_info_t *info, info->stereo = halInfo->stereo; info->stereo = halInfo->stereo; info->digital = halInfo->digital; info->digital = halInfo->digital; info->signal_strength = halInfo->signalStrength; info->signal_strength = halInfo->signalStrength; if (withMetadata && halInfo->metadata.size() != 0) { convertMetaDataFromHal(&info->metadata, halInfo->metadata, convertMetaDataFromHal(&info->metadata, halInfo->metadata, halInfo->channel, halInfo->subChannel); halInfo->channel, halInfo->subChannel); } } } //static //static void HidlUtils::convertMetaDataFromHal(radio_metadata_t **metadata, void HidlUtils::convertMetaDataFromHal(radio_metadata_t **metadata, Loading services/radio/HidlUtils.h +1 −2 Original line number Original line Diff line number Diff line Loading @@ -38,8 +38,7 @@ public: static void convertBandConfigToHal(BandConfig *halConfig, static void convertBandConfigToHal(BandConfig *halConfig, const radio_hal_band_config_t *config); const radio_hal_band_config_t *config); static void convertProgramInfoFromHal(radio_program_info_t *info, static void convertProgramInfoFromHal(radio_program_info_t *info, const ProgramInfo *halInfo, const ProgramInfo *halInfo); bool withMetadata); static void convertMetaDataFromHal(radio_metadata_t **metadata, static void convertMetaDataFromHal(radio_metadata_t **metadata, const hidl_vec<MetaData>& halMetadata, const hidl_vec<MetaData>& halMetadata, uint32_t channel, uint32_t channel, Loading services/radio/RadioHalHidl.cpp +13 −13 Original line number Original line Diff line number Diff line Loading @@ -233,11 +233,13 @@ int RadioHalHidl::Tuner::getProgramInformation(radio_program_info_t *info) if (mHalTuner == 0) { if (mHalTuner == 0) { return -ENODEV; return -ENODEV; } } if (info == nullptr || info->metadata == nullptr) { return BAD_VALUE; } ProgramInfo halInfo; ProgramInfo halInfo; Result halResult; Result halResult; bool withMetaData = (info->metadata != NULL); Return<void> hidlReturn = mHalTuner->getProgramInformation( Return<void> hidlReturn = mHalTuner->getProgramInformation( withMetaData, [&](Result result, const ProgramInfo& info) { [&](Result result, const ProgramInfo& info) { halResult = result; halResult = result; if (result == Result::OK) { if (result == Result::OK) { halInfo = info; halInfo = info; Loading @@ -245,7 +247,7 @@ int RadioHalHidl::Tuner::getProgramInformation(radio_program_info_t *info) }); }); status_t status = checkHidlStatus(hidlReturn.getStatus()); status_t status = checkHidlStatus(hidlReturn.getStatus()); if (status == NO_ERROR && halResult == Result::OK) { if (status == NO_ERROR && halResult == Result::OK) { HidlUtils::convertProgramInfoFromHal(info, &halInfo, withMetaData); HidlUtils::convertProgramInfoFromHal(info, &halInfo); } } return HidlUtils::convertHalResult(halResult); return HidlUtils::convertHalResult(halResult); } } Loading Loading @@ -276,11 +278,9 @@ Return<void> RadioHalHidl::Tuner::tuneComplete(Result result, const ProgramInfo& memset(&event, 0, sizeof(radio_hal_event_t)); memset(&event, 0, sizeof(radio_hal_event_t)); event.type = RADIO_EVENT_TUNED; event.type = RADIO_EVENT_TUNED; event.status = HidlUtils::convertHalResult(result); event.status = HidlUtils::convertHalResult(result); HidlUtils::convertProgramInfoFromHal(&event.info, &info, true); HidlUtils::convertProgramInfoFromHal(&event.info, &info); onCallback(&event); onCallback(&event); if (event.info.metadata != NULL) { radio_metadata_deallocate(event.info.metadata); radio_metadata_deallocate(event.info.metadata); } return Return<void>(); return Return<void>(); } } Loading @@ -290,7 +290,7 @@ Return<void> RadioHalHidl::Tuner::afSwitch(const ProgramInfo& info) radio_hal_event_t event; radio_hal_event_t event; memset(&event, 0, sizeof(radio_hal_event_t)); memset(&event, 0, sizeof(radio_hal_event_t)); event.type = RADIO_EVENT_AF_SWITCH; event.type = RADIO_EVENT_AF_SWITCH; HidlUtils::convertProgramInfoFromHal(&event.info, &info, true); HidlUtils::convertProgramInfoFromHal(&event.info, &info); onCallback(&event); onCallback(&event); if (event.info.metadata != NULL) { if (event.info.metadata != NULL) { radio_metadata_deallocate(event.info.metadata); radio_metadata_deallocate(event.info.metadata); Loading Loading
radio/IRadio.cpp +10 −19 Original line number Original line Diff line number Diff line Loading @@ -172,16 +172,11 @@ public: virtual status_t getProgramInformation(struct radio_program_info *info) virtual status_t getProgramInformation(struct radio_program_info *info) { { Parcel data, reply; Parcel data, reply; if (info == NULL) { if (info == nullptr || info->metadata == nullptr) { return BAD_VALUE; return BAD_VALUE; } } radio_metadata_t *metadata = info->metadata; radio_metadata_t *metadata = info->metadata; data.writeInterfaceToken(IRadio::getInterfaceDescriptor()); data.writeInterfaceToken(IRadio::getInterfaceDescriptor()); if (metadata != NULL) { data.writeUint32(1); } else { data.writeUint32(0); } status_t status = remote()->transact(GET_PROGRAM_INFORMATION, data, &reply); status_t status = remote()->transact(GET_PROGRAM_INFORMATION, data, &reply); if (status == NO_ERROR) { if (status == NO_ERROR) { status = (status_t)reply.readInt32(); status = (status_t)reply.readInt32(); Loading @@ -190,13 +185,13 @@ public: // restore local metadata pointer // restore local metadata pointer info->metadata = metadata; info->metadata = metadata; uint32_t metatataSize = reply.readUint32(); uint32_t metadataSize = reply.readUint32(); if ((metadata != NULL) && (metatataSize != 0)) { if (metadataSize != 0) { radio_metadata_t *newMetadata = (radio_metadata_t *)malloc(metatataSize); radio_metadata_t *newMetadata = (radio_metadata_t *)malloc(metadataSize); if (newMetadata == NULL) { if (newMetadata == NULL) { return NO_MEMORY; return NO_MEMORY; } } reply.read(newMetadata, metatataSize); reply.read(newMetadata, metadataSize); status = radio_metadata_add_metadata(&info->metadata, newMetadata); status = radio_metadata_add_metadata(&info->metadata, newMetadata); free(newMetadata); free(newMetadata); } } Loading Loading @@ -306,21 +301,17 @@ status_t BnRadio::onTransact( CHECK_INTERFACE(IRadio, data, reply); CHECK_INTERFACE(IRadio, data, reply); struct radio_program_info info; struct radio_program_info info; status_t status; status_t status; // query metadata only if requested by remote side if (data.readUint32() == 1) { status = radio_metadata_allocate(&info.metadata, 0, 0); status = radio_metadata_allocate(&info.metadata, 0, 0); if (status != NO_ERROR) { if (status != NO_ERROR) { return status; return status; } } } else { info.metadata = NULL; } status = getProgramInformation(&info); status = getProgramInformation(&info); reply->writeInt32(status); reply->writeInt32(status); if (status == NO_ERROR) { if (status == NO_ERROR) { reply->write(&info, sizeof(struct radio_program_info)); 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); size_t size = radio_metadata_get_size(info.metadata); reply->writeUint32((uint32_t)size); reply->writeUint32((uint32_t)size); reply->write(info.metadata, size); reply->write(info.metadata, size); Loading
services/radio/HidlUtils.cpp +3 −6 Original line number Original line Diff line number Diff line Loading @@ -122,8 +122,7 @@ void HidlUtils::convertBandConfigFromHal(radio_hal_band_config_t *config, //static //static void HidlUtils::convertProgramInfoFromHal(radio_program_info_t *info, void HidlUtils::convertProgramInfoFromHal(radio_program_info_t *info, const ProgramInfo *halInfo, const ProgramInfo *halInfo) bool withMetadata) { { info->channel = halInfo->channel; info->channel = halInfo->channel; info->sub_channel = halInfo->subChannel; info->sub_channel = halInfo->subChannel; Loading @@ -131,11 +130,9 @@ void HidlUtils::convertProgramInfoFromHal(radio_program_info_t *info, info->stereo = halInfo->stereo; info->stereo = halInfo->stereo; info->digital = halInfo->digital; info->digital = halInfo->digital; info->signal_strength = halInfo->signalStrength; info->signal_strength = halInfo->signalStrength; if (withMetadata && halInfo->metadata.size() != 0) { convertMetaDataFromHal(&info->metadata, halInfo->metadata, convertMetaDataFromHal(&info->metadata, halInfo->metadata, halInfo->channel, halInfo->subChannel); halInfo->channel, halInfo->subChannel); } } } //static //static void HidlUtils::convertMetaDataFromHal(radio_metadata_t **metadata, void HidlUtils::convertMetaDataFromHal(radio_metadata_t **metadata, Loading
services/radio/HidlUtils.h +1 −2 Original line number Original line Diff line number Diff line Loading @@ -38,8 +38,7 @@ public: static void convertBandConfigToHal(BandConfig *halConfig, static void convertBandConfigToHal(BandConfig *halConfig, const radio_hal_band_config_t *config); const radio_hal_band_config_t *config); static void convertProgramInfoFromHal(radio_program_info_t *info, static void convertProgramInfoFromHal(radio_program_info_t *info, const ProgramInfo *halInfo, const ProgramInfo *halInfo); bool withMetadata); static void convertMetaDataFromHal(radio_metadata_t **metadata, static void convertMetaDataFromHal(radio_metadata_t **metadata, const hidl_vec<MetaData>& halMetadata, const hidl_vec<MetaData>& halMetadata, uint32_t channel, uint32_t channel, Loading
services/radio/RadioHalHidl.cpp +13 −13 Original line number Original line Diff line number Diff line Loading @@ -233,11 +233,13 @@ int RadioHalHidl::Tuner::getProgramInformation(radio_program_info_t *info) if (mHalTuner == 0) { if (mHalTuner == 0) { return -ENODEV; return -ENODEV; } } if (info == nullptr || info->metadata == nullptr) { return BAD_VALUE; } ProgramInfo halInfo; ProgramInfo halInfo; Result halResult; Result halResult; bool withMetaData = (info->metadata != NULL); Return<void> hidlReturn = mHalTuner->getProgramInformation( Return<void> hidlReturn = mHalTuner->getProgramInformation( withMetaData, [&](Result result, const ProgramInfo& info) { [&](Result result, const ProgramInfo& info) { halResult = result; halResult = result; if (result == Result::OK) { if (result == Result::OK) { halInfo = info; halInfo = info; Loading @@ -245,7 +247,7 @@ int RadioHalHidl::Tuner::getProgramInformation(radio_program_info_t *info) }); }); status_t status = checkHidlStatus(hidlReturn.getStatus()); status_t status = checkHidlStatus(hidlReturn.getStatus()); if (status == NO_ERROR && halResult == Result::OK) { if (status == NO_ERROR && halResult == Result::OK) { HidlUtils::convertProgramInfoFromHal(info, &halInfo, withMetaData); HidlUtils::convertProgramInfoFromHal(info, &halInfo); } } return HidlUtils::convertHalResult(halResult); return HidlUtils::convertHalResult(halResult); } } Loading Loading @@ -276,11 +278,9 @@ Return<void> RadioHalHidl::Tuner::tuneComplete(Result result, const ProgramInfo& memset(&event, 0, sizeof(radio_hal_event_t)); memset(&event, 0, sizeof(radio_hal_event_t)); event.type = RADIO_EVENT_TUNED; event.type = RADIO_EVENT_TUNED; event.status = HidlUtils::convertHalResult(result); event.status = HidlUtils::convertHalResult(result); HidlUtils::convertProgramInfoFromHal(&event.info, &info, true); HidlUtils::convertProgramInfoFromHal(&event.info, &info); onCallback(&event); onCallback(&event); if (event.info.metadata != NULL) { radio_metadata_deallocate(event.info.metadata); radio_metadata_deallocate(event.info.metadata); } return Return<void>(); return Return<void>(); } } Loading @@ -290,7 +290,7 @@ Return<void> RadioHalHidl::Tuner::afSwitch(const ProgramInfo& info) radio_hal_event_t event; radio_hal_event_t event; memset(&event, 0, sizeof(radio_hal_event_t)); memset(&event, 0, sizeof(radio_hal_event_t)); event.type = RADIO_EVENT_AF_SWITCH; event.type = RADIO_EVENT_AF_SWITCH; HidlUtils::convertProgramInfoFromHal(&event.info, &info, true); HidlUtils::convertProgramInfoFromHal(&event.info, &info); onCallback(&event); onCallback(&event); if (event.info.metadata != NULL) { if (event.info.metadata != NULL) { radio_metadata_deallocate(event.info.metadata); radio_metadata_deallocate(event.info.metadata); Loading