summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Keeler <jacob.keeler@livioradio.com>2018-09-07 16:23:56 -0400
committerGitHub <noreply@github.com>2018-09-07 16:23:56 -0400
commit74be3a1a9e2fb5d6e0d2160d605554c36763b8ce (patch)
tree8db1f06e560ff9ba7af7d60b7e575a6dd1a76d54
parente32f05950701e9ac5f5e75c7396c4d74241fee03 (diff)
parent586c049050baa10b6f2de2bf8fcb4635e732f4ad (diff)
downloadsdl_core-74be3a1a9e2fb5d6e0d2160d605554c36763b8ce.tar.gz
Merge pull request #2587 from smartdevicelink/fix/sirium_xm_capability_checking
Fix capabilities check for siriusxmAvailable
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc69
1 files changed, 37 insertions, 32 deletions
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc
index b81008155d..cfd8caae39 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/commands/mobile/set_interior_vehicle_data_request.cc
@@ -267,6 +267,32 @@ ModuleCapability GetLightNameCapabilities(
capabilitiesStatus::missedLightName);
}
+ModuleCapability GetRadioBandByCapabilities(
+ const smart_objects::SmartObject& capabilities_status,
+ const smart_objects::SmartObject& request_parameter) {
+ mobile_apis::RadioBand::eType radio_band =
+ static_cast<mobile_apis::RadioBand::eType>(request_parameter.asUInt());
+ if (mobile_apis::RadioBand::XM == radio_band) {
+ if (!capabilities_status.keyExists(strings::kSiriusxmRadioAvailable)) {
+ LOG4CXX_DEBUG(logger_,
+ "Capability "
+ << strings::kSiriusxmRadioAvailable
+ << " is missed in RemoteControl capabilities");
+ return std::make_pair(strings::kSiriusxmRadioAvailable,
+ capabilitiesStatus::missedParam);
+ }
+ if (!capabilities_status[strings::kSiriusxmRadioAvailable].asBool()) {
+ LOG4CXX_DEBUG(logger_,
+ "Capability "
+ << strings::kSiriusxmRadioAvailable
+ << " is switched off in RemoteControl capabilities");
+ return std::make_pair(strings::kSiriusxmRadioAvailable,
+ capabilitiesStatus::missedParam);
+ }
+ }
+ return std::make_pair("", capabilitiesStatus::success);
+}
+
/**
* @brief Check whether the exists light data related to correspondent
* capabilities
@@ -303,40 +329,18 @@ ModuleCapability GetControlDataCapabilities(
return light_capability;
}
-
- const capabilitiesStatus status_item_capability =
- GetItemCapability(capabilities[0],
- mapping,
- request_parameter,
- mobile_apis::Result::UNSUPPORTED_RESOURCE);
-
- if (capabilitiesStatus::success != status_item_capability) {
- return std::make_pair("", status_item_capability);
+ if (message_params::kBand == request_parameter) {
+ ModuleCapability radio_capability = GetRadioBandByCapabilities(
+ capabilities, control_data[request_parameter]);
+ if (capabilitiesStatus::success != radio_capability.second) {
+ return radio_capability;
+ }
}
- }
-
- return std::make_pair("", capabilitiesStatus::success);
-}
-
-/**
- * @brief Check whether the exists hmi data related to correspondent
- * capabilities
- * @param smart object of capabilities
- * @param smart object of control_data
- * @return pair of state and capability status - ModuleCapability
- */
-ModuleCapability GetHmiControlDataCapabilities(
- const smart_objects::SmartObject& capabilities,
- const smart_objects::SmartObject& control_data) {
- LOG4CXX_AUTO_TRACE(logger_);
- std::map<std::string, std::string> mapping =
- GetModuleDataToCapabilitiesMapping();
- for (auto it = control_data.map_begin(); it != control_data.map_end(); ++it) {
const capabilitiesStatus status_item_capability =
GetItemCapability(capabilities,
mapping,
- it->first,
+ request_parameter,
mobile_apis::Result::UNSUPPORTED_RESOURCE);
if (capabilitiesStatus::success != status_item_capability) {
@@ -376,12 +380,13 @@ ModuleCapability GetModuleDataCapabilities(
const smart_objects::SmartObject& caps =
rc_capabilities[capabilities_key];
- if (message_params::kHmiSettingsControlData == module_data_key) {
+ if (message_params::kHmiSettingsControlData == module_data_key ||
+ message_params::kLightControlData == module_data_key) {
module_data_capabilities =
- GetHmiControlDataCapabilities(caps, module_data[module_data_key]);
+ GetControlDataCapabilities(caps, module_data[module_data_key]);
} else {
module_data_capabilities =
- GetControlDataCapabilities(caps, module_data[module_data_key]);
+ GetControlDataCapabilities(caps[0], module_data[module_data_key]);
}
}
}