diff options
7 files changed, 69 insertions, 27 deletions
diff --git a/src/appMain/hmi_capabilities.json b/src/appMain/hmi_capabilities.json index a849dc86d7..f5e88fe370 100755 --- a/src/appMain/hmi_capabilities.json +++ b/src/appMain/hmi_capabilities.json @@ -292,7 +292,16 @@ "longPressAvailable": true, "upDownAvailable": true, "imageSupported": true - }] + }], + "systemCapabilities": { + "navigationCapability": { + "sendLocationEnabled": true, + "getWayPointsEnabled": true + }, + "phoneCapability": { + "dialNumberEnabled": true + } + } }, "VR": { "capabilities": ["TEXT"], @@ -415,14 +424,5 @@ "SyncMessageVersion": { "majorVersion": 3, "minorVersion": 0 - }, - "SystemCapabilities": { - "NavigationCapability": { - "sendLocationEnabled": true, - "getWayPointsEnabled": true - }, - "PhoneCapability": { - "dialNumberEnabled": true - } } }
\ No newline at end of file diff --git a/src/components/application_manager/include/application_manager/smart_object_keys.h b/src/components/application_manager/include/application_manager/smart_object_keys.h index 9f9cee99cf..9b8acd0675 100644 --- a/src/components/application_manager/include/application_manager/smart_object_keys.h +++ b/src/components/application_manager/include/application_manager/smart_object_keys.h @@ -169,6 +169,9 @@ extern const char* audio_pass_thru_icon; extern const char* way_points; extern const char* system_capability; extern const char* system_capability_type; +extern const char* system_capabilities; +extern const char* navigation_capability; +extern const char* phone_capability; // PutFile extern const char* sync_file_name; diff --git a/src/components/application_manager/src/commands/hmi/ui_get_capabilities_response.cc b/src/components/application_manager/src/commands/hmi/ui_get_capabilities_response.cc index de0a2f2157..bf89b3d5a7 100644 --- a/src/components/application_manager/src/commands/hmi/ui_get_capabilities_response.cc +++ b/src/components/application_manager/src/commands/hmi/ui_get_capabilities_response.cc @@ -79,6 +79,15 @@ void UIGetCapabilitiesResponse::Run() { msg_params[strings::hmi_capabilities][strings::phone_call].asBool()); } } + + if(msg_params.keyExists(strings::system_capabilities)) { + if(msg_params[strings::system_capabilities].keyExists(strings::navigation_capability)) { + hmi_capabilities.set_navigation_capability(msg_params[strings::system_capabilities][strings::navigation_capability]); + } + if(msg_params[strings::system_capabilities].keyExists(strings::phone_capability)) { + hmi_capabilities.set_phone_capability(msg_params[strings::system_capabilities][strings::phone_capability]); + } + } } } // namespace commands diff --git a/src/components/application_manager/src/hmi_capabilities_impl.cc b/src/components/application_manager/src/hmi_capabilities_impl.cc index 6ffc501439..9b4d62ed2d 100644 --- a/src/components/application_manager/src/hmi_capabilities_impl.cc +++ b/src/components/application_manager/src/hmi_capabilities_impl.cc @@ -988,6 +988,21 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() { soft_button_capabilities, soft_button_capabilities_so); set_soft_button_capabilities(soft_button_capabilities_so); } + if(check_existing_json_member(ui, "systemCapabilities")) { + Json::Value system_capabilities = ui.get("systemCapabilities", ""); + if (check_existing_json_member(system_capabilities, "navigationCapability")) { + Json::Value navigation_capability = system_capabilities.get("navigationCapability",""); + smart_objects::SmartObject navigation_capability_so; + Formatters::CFormatterJsonBase::jsonValueToObj(navigation_capability, navigation_capability_so); + set_navigation_capability(navigation_capability_so); + } + if (check_existing_json_member(system_capabilities, "phoneCapability")) { + Json::Value phone_capability = system_capabilities.get("phoneCapability",""); + smart_objects::SmartObject phone_capability_so; + Formatters::CFormatterJsonBase::jsonValueToObj(phone_capability, phone_capability_so); + set_phone_capability(phone_capability_so); + } + } } // UI end // VR @@ -1093,21 +1108,6 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() { vehicle_type_so); set_vehicle_type(vehicle_type_so); } // VehicleType end - if(check_existing_json_member(root_json, "SystemCapabilities")) { - Json::Value system_capabilities = root_json.get("SystemCapabilities", ""); - if (check_existing_json_member(system_capabilities, "NavigationCapability")) { - Json::Value navigation_capability = system_capabilities.get("NavigationCapability",""); - smart_objects::SmartObject navigation_capability_so; - Formatters::CFormatterJsonBase::jsonValueToObj(navigation_capability, navigation_capability_so); - set_navigation_capability(navigation_capability_so); - } - if (check_existing_json_member(system_capabilities, "PhoneCapability")) { - Json::Value phone_capability = system_capabilities.get("PhoneCapability",""); - smart_objects::SmartObject phone_capability_so; - Formatters::CFormatterJsonBase::jsonValueToObj(phone_capability, phone_capability_so); - set_phone_capability(phone_capability_so); - } - } } catch (...) { return false; } diff --git a/src/components/application_manager/src/smart_object_keys.cc b/src/components/application_manager/src/smart_object_keys.cc index 2a86c6c1c0..7f8fd5d00f 100644 --- a/src/components/application_manager/src/smart_object_keys.cc +++ b/src/components/application_manager/src/smart_object_keys.cc @@ -136,6 +136,9 @@ const char* audio_pass_thru_icon = "audioPassThruIcon"; const char* way_points = "wayPoints"; const char* system_capability = "systemCapability"; const char* system_capability_type = "systemCapabilityType"; +const char* system_capabilities = "systemCapabilities"; +const char* navigation_capability = "navigationCapability"; +const char* phone_capability = "phoneCapability"; // PutFile const char* sync_file_name = "syncFileName"; diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml index 0d6d5fad3d..10660f982d 100644 --- a/src/components/interfaces/HMI_API.xml +++ b/src/components/interfaces/HMI_API.xml @@ -2086,6 +2086,30 @@ </param> </struct> + <struct name="NavigationCapability"> + <description>Extended capabilities for an onboard navigation system</description> + <param name="sendLocationEnabled" type="Boolean" mandatory="false"> + <description>If the module has the ability to add locations to the onboard nav</description> + </param> + <param name="getWayPointsEnabled" type="Boolean" mandatory="false"> + <description>If the module has the ability to return way points from onboard nav</description> + </param> + </struct> + + <struct name="PhoneCapability"> + <description>Extended capabilities of the module's phone feature</description> + <param name="dialNumberEnabled" type="Boolean" mandatory="false"> + <description>If the module has the abiulity to perform dial number</description> + </param> + </struct> + + <struct name="SystemCapabilities"> + <param name="navigationCapability" type="NavigationCapability" mandatory="false"> + </param> + <param name="phoneCapability" type="PhoneCapability" mandatory="false"> + </param> + </struct> + </interface> <interface name="Buttons" version="1.2.0" date="2017-04-27"> @@ -2953,7 +2977,7 @@ <description>Optional text to label an app menu button (for certain touchscreen platforms).</description> </param> <param name="menuIcon" type="Common.Image" mandatory="false"> - <description>>Optional icon to draw on an app menu button (for certain touchscreen platforms).</description> + <description>Optional icon to draw on an app menu button (for certain touchscreen platforms).</description> </param> <param name="keyboardProperties" type="Common.KeyboardProperties" mandatory="false"> <description>On-screen keybaord configuration (if available).</description> @@ -3000,6 +3024,9 @@ <param name="hmiCapabilities" type="Common.HMICapabilities" mandatory="false"> <description>Specifies the HMI’s capabilities. See HMICapabilities.</description> </param> + <param name="systemCapabilities" type="Common.SystemCapabilities" mandatory="false"> + <description>Specifies system capabilities. See SystemCapabilities</description> + </param> </function> <function name="ChangeRegistration" messagetype="request"> <description>Request from SmartDeviceLink to HMI to change language for app.</description> diff --git a/src/components/interfaces/MOBILE_API.xml b/src/components/interfaces/MOBILE_API.xml index 347623a6e3..cac520d349 100644 --- a/src/components/interfaces/MOBILE_API.xml +++ b/src/components/interfaces/MOBILE_API.xml @@ -2407,7 +2407,7 @@ </param>
</struct>
- <struct name="SystemCapability">
+ <struct name="SystemCapability">
<description>The systemCapabilityType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a "navigationCapability" should exist</description>
<param name="systemCapabilityType" type="SystemCapabilityType" mandatory="true">
</param>
|