diff options
author | JackLivio <jack@livio.io> | 2018-10-12 14:14:54 -0400 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2018-10-12 14:14:54 -0400 |
commit | 3110a7696b44cec29cf31f7358a66317bfdf6d04 (patch) | |
tree | a67ee38222428fba8968f1a44a5431a5253e08e1 | |
parent | c9697970a6ad6300936fe893efe7f3acae92a7c0 (diff) | |
download | sdl_core-3110a7696b44cec29cf31f7358a66317bfdf6d04.tar.gz |
Add radio param filtering if radioEnable or hdRadioEnable are false
3 files changed, 30 insertions, 0 deletions
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/commands/mobile/on_interior_vehicle_data_notification.h b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/commands/mobile/on_interior_vehicle_data_notification.h index 931e79366c..ec764d37cd 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/commands/mobile/on_interior_vehicle_data_notification.h +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/commands/mobile/on_interior_vehicle_data_notification.h @@ -60,6 +60,7 @@ class OnInteriorVehicleDataNotification private: InteriorDataCache& interior_data_cache_; void AddDataToCache(const std::string& module_type); + void FilterDisabledModuleData(const std::string& module_type); }; } // namespace commands } // namespace rc_rpc_plugin diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h index 1951af1a24..18014e6270 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h @@ -150,6 +150,7 @@ const char kFrequencyInteger[] = "frequencyInteger"; const char kFrequencyFraction[] = "frequencyFraction"; const char kBand[] = "band"; const char kRdsData[] = "rdsData"; +const char kHdRadioEnable[] = "hdRadioEnable"; const char kAvailableHDs[] = "availableHDs"; const char kHdChannel[] = "hdChannel"; const char kSignalStrength[] = "signalStrength"; diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/on_interior_vehicle_data_notification.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/on_interior_vehicle_data_notification.cc index 37890b7979..7393c4f70e 100644 --- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/on_interior_vehicle_data_notification.cc +++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/on_interior_vehicle_data_notification.cc @@ -63,6 +63,33 @@ void OnInteriorVehicleDataNotification::AddDataToCache( interior_data_cache_.Add(module_type, module_data); } +void OnInteriorVehicleDataNotification::FilterDisabledModuleData( + const std::string& module_type) { + const auto& data_mapping = RCHelpers::GetModuleTypeToDataMapping(); + auto& module_data = + (*message_)[app_mngr::strings::msg_params][message_params::kModuleData] + [data_mapping(module_type)]; + + // If radioEnable is false, remove all other radio parameters from the + // message. + if (module_data.keyExists(message_params::kRadioEnable) && + module_data[message_params::kRadioEnable] == false) { + for (auto data = module_data.map_begin(); data != module_data.map_end(); + ++data) { + if (data->first != message_params::kRadioEnable) { + module_data.erase(data->first); + } + } + } + + // If hdRadioEnable is false, find and remove the HDChannel if parameter is + // present. + if (module_data.keyExists(message_params::kHdRadioEnable) && + module_data[message_params::kHdRadioEnable] == false) { + module_data.erase(message_params::kHdChannel); + } +} + void OnInteriorVehicleDataNotification::Run() { LOG4CXX_AUTO_TRACE(logger_); @@ -71,6 +98,7 @@ void OnInteriorVehicleDataNotification::Run() { RCHelpers::AppsSubscribedToModuleType(application_manager_, module_type); if (!apps_subscribed.empty()) { AddDataToCache(module_type); + FilterDisabledModuleData(module_type); } typedef std::vector<application_manager::ApplicationSharedPtr> AppPtrs; AppPtrs apps = RCRPCPlugin::GetRCApplications(application_manager_); |