summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2018-10-12 14:14:54 -0400
committerJackLivio <jack@livio.io>2018-10-12 14:14:54 -0400
commit3110a7696b44cec29cf31f7358a66317bfdf6d04 (patch)
treea67ee38222428fba8968f1a44a5431a5253e08e1
parentc9697970a6ad6300936fe893efe7f3acae92a7c0 (diff)
downloadsdl_core-3110a7696b44cec29cf31f7358a66317bfdf6d04.tar.gz
Add radio param filtering if radioEnable or hdRadioEnable are false
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/commands/mobile/on_interior_vehicle_data_notification.h1
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_module_constants.h1
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/on_interior_vehicle_data_notification.cc28
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_);