summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src/hmi_capabilities_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/src/hmi_capabilities_impl.cc')
-rw-r--r--src/components/application_manager/src/hmi_capabilities_impl.cc171
1 files changed, 130 insertions, 41 deletions
diff --git a/src/components/application_manager/src/hmi_capabilities_impl.cc b/src/components/application_manager/src/hmi_capabilities_impl.cc
index 0f5bc80d56..6b209ade0c 100644
--- a/src/components/application_manager/src/hmi_capabilities_impl.cc
+++ b/src/components/application_manager/src/hmi_capabilities_impl.cc
@@ -58,6 +58,7 @@ std::map<std::string, hmi_apis::Common_TextFieldName::eType>
text_fields_enum_name;
std::map<std::string, hmi_apis::Common_MediaClockFormat::eType>
media_clock_enum_name;
+std::map<std::string, hmi_apis::Common_MenuLayout::eType> menu_layout_enum;
std::map<std::string, hmi_apis::Common_ImageType::eType> image_type_enum;
std::map<std::string, hmi_apis::Common_SamplingRate::eType> sampling_rate_enum;
std::map<std::string, hmi_apis::Common_BitsPerSample::eType>
@@ -135,6 +136,46 @@ void InitCapabilities() {
hmi_apis::Common_ButtonName::CUSTOM_BUTTON));
button_enum_name.insert(std::make_pair(std::string("SEARCH"),
hmi_apis::Common_ButtonName::SEARCH));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_CENTER_LOCATION"),
+ hmi_apis::Common_ButtonName::NAV_CENTER_LOCATION));
+ button_enum_name.insert(std::make_pair(
+ std::string("NAV_ZOOM_IN"), hmi_apis::Common_ButtonName::NAV_ZOOM_IN));
+ button_enum_name.insert(std::make_pair(
+ std::string("NAV_ZOOM_OUT"), hmi_apis::Common_ButtonName::NAV_ZOOM_OUT));
+ button_enum_name.insert(std::make_pair(
+ std::string("NAV_PAN_UP"), hmi_apis::Common_ButtonName::NAV_PAN_UP));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_PAN_UP_RIGHT"),
+ hmi_apis::Common_ButtonName::NAV_PAN_UP_RIGHT));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_PAN_RIGHT"),
+ hmi_apis::Common_ButtonName::NAV_PAN_RIGHT));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_PAN_DOWN_RIGHT"),
+ hmi_apis::Common_ButtonName::NAV_PAN_DOWN_RIGHT));
+ button_enum_name.insert(std::make_pair(
+ std::string("NAV_PAN_DOWN"), hmi_apis::Common_ButtonName::NAV_PAN_DOWN));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_PAN_DOWN_LEFT"),
+ hmi_apis::Common_ButtonName::NAV_PAN_DOWN_LEFT));
+ button_enum_name.insert(std::make_pair(
+ std::string("NAV_PAN_LEFT"), hmi_apis::Common_ButtonName::NAV_PAN_LEFT));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_PAN_UP_LEFT"),
+ hmi_apis::Common_ButtonName::NAV_PAN_UP_LEFT));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_TILT_TOGGLE"),
+ hmi_apis::Common_ButtonName::NAV_TILT_TOGGLE));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_ROTATE_CLOCKWISE"),
+ hmi_apis::Common_ButtonName::NAV_ROTATE_CLOCKWISE));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_ROTATE_COUNTERCLOCKWISE"),
+ hmi_apis::Common_ButtonName::NAV_ROTATE_COUNTERCLOCKWISE));
+ button_enum_name.insert(
+ std::make_pair(std::string("NAV_HEADING_TOGGLE"),
+ hmi_apis::Common_ButtonName::NAV_HEADING_TOGGLE));
text_fields_enum_name.insert(std::make_pair(
std::string("mainField1"), hmi_apis::Common_TextFieldName::mainField1));
@@ -239,6 +280,11 @@ void InitCapabilities() {
std::make_pair(std::string("CLOCKTEXT4"),
hmi_apis::Common_MediaClockFormat::CLOCKTEXT4));
+ menu_layout_enum.insert(
+ std::make_pair(std::string("LIST"), hmi_apis::Common_MenuLayout::LIST));
+ menu_layout_enum.insert(
+ std::make_pair(std::string("TILES"), hmi_apis::Common_MenuLayout::TILES));
+
image_type_enum.insert(std::make_pair(std::string("STATIC"),
hmi_apis::Common_ImageType::STATIC));
image_type_enum.insert(std::make_pair(std::string("DYNAMIC"),
@@ -337,6 +383,8 @@ void InitCapabilities() {
std::make_pair(std::string("MFD5"), hmi_apis::Common_DisplayType::MFD5));
display_type_enum.insert(std::make_pair(
std::string("GEN3_8_INCH"), hmi_apis::Common_DisplayType::GEN3_8_INCH));
+ display_type_enum.insert(std::make_pair(
+ std::string("SDL_GENERIC"), hmi_apis::Common_DisplayType::SDL_GENERIC));
character_set_enum.insert(std::make_pair(
std::string("TYPE2SET"), hmi_apis::Common_CharacterSet::TYPE2SET));
@@ -568,6 +616,12 @@ void HMICapabilitiesImpl::set_display_capabilities(
}
}
+void HMICapabilitiesImpl::set_system_display_capabilities(
+ const smart_objects::SmartObject& display_capabilities) {
+ system_display_capabilities_.reset(
+ new smart_objects::SmartObject(display_capabilities));
+}
+
void HMICapabilitiesImpl::set_hmi_zone_capabilities(
const smart_objects::SmartObject& hmi_zone_capabilities) {
if (hmi_zone_capabilities_) {
@@ -758,6 +812,11 @@ const smart_objects::SmartObject* HMICapabilitiesImpl::display_capabilities()
return display_capabilities_;
}
+const smart_objects::SmartObjectSPtr
+HMICapabilitiesImpl::system_display_capabilities() const {
+ return system_display_capabilities_;
+}
+
const smart_objects::SmartObject* HMICapabilitiesImpl::hmi_zone_capabilities()
const {
return hmi_zone_capabilities_;
@@ -826,6 +885,26 @@ bool HMICapabilitiesImpl::rc_supported() const {
return is_rc_supported_;
}
+bool HMICapabilitiesImpl::menu_layout_supported(
+ mobile_apis::MenuLayout::eType layout) const {
+ if (!display_capabilities_ ||
+ !display_capabilities_->keyExists(strings::menu_layouts_available))
+ return false;
+
+ auto menu_layouts =
+ display_capabilities_->getElement(strings::menu_layouts_available);
+ if (menu_layouts.getType() == smart_objects::SmartType_Array) {
+ for (uint32_t i = 0; i < menu_layouts.length(); ++i) {
+ if (layout == static_cast<mobile_apis::MenuLayout::eType>(
+ menu_layouts.getElement(i).asUInt())) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
const smart_objects::SmartObject* HMICapabilitiesImpl::navigation_capability()
const {
return navigation_capability_;
@@ -1002,6 +1081,25 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() {
}
if (display_capabilities_so.keyExists(
+ strings::menu_layouts_available)) {
+ smart_objects::SmartObject menu_layouts_available_enum(
+ smart_objects::SmartType_Array);
+ auto menu_layouts_available_array =
+ display_capabilities_so[strings::menu_layouts_available];
+ for (uint32_t i = 0, j = 0; i < menu_layouts_available_array.length();
+ ++i) {
+ auto it = menu_layout_enum.find(
+ menu_layouts_available_array[i].asString());
+ if (it != menu_layout_enum.end()) {
+ menu_layouts_available_enum[j++] = it->second;
+ }
+ }
+ display_capabilities_so.erase(strings::menu_layouts_available);
+ display_capabilities_so[strings::menu_layouts_available] =
+ menu_layouts_available_enum;
+ }
+
+ if (display_capabilities_so.keyExists(
hmi_response::image_capabilities)) {
smart_objects::SmartObject& image_capabilities_array =
display_capabilities_so[hmi_response::image_capabilities];
@@ -1026,27 +1124,16 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() {
if (check_existing_json_member(ui, "audioPassThruCapabilities")) {
Json::Value audio_capabilities =
ui.get("audioPassThruCapabilities", "");
- smart_objects::SmartObject audio_capabilities_so =
- smart_objects::SmartObject(smart_objects::SmartType_Array);
- audio_capabilities_so =
- smart_objects::SmartObject(smart_objects::SmartType_Map);
- if (check_existing_json_member(audio_capabilities, "samplingRate")) {
- audio_capabilities_so["samplingRate"] =
- sampling_rate_enum
- .find(audio_capabilities.get("samplingRate", "").asString())
- ->second;
- }
- if (check_existing_json_member(audio_capabilities, "bitsPerSample")) {
- audio_capabilities_so["bitsPerSample"] =
- bit_per_sample_enum
- .find(audio_capabilities.get("bitsPerSample", "").asString())
- ->second;
- }
- if (check_existing_json_member(audio_capabilities, "audioType")) {
- audio_capabilities_so["audioType"] =
- audio_type_enum
- .find(audio_capabilities.get("audioType", "").asString())
- ->second;
+ smart_objects::SmartObject audio_capabilities_so(
+ smart_objects::SmartType_Array);
+ if (audio_capabilities.type() == Json::arrayValue) {
+ for (uint32_t i = 0; i < audio_capabilities.size(); i++) {
+ convert_audio_capability_to_obj(audio_capabilities[i],
+ audio_capabilities_so[i]);
+ }
+ } else if (audio_capabilities.type() == Json::objectValue) {
+ convert_audio_capability_to_obj(audio_capabilities,
+ audio_capabilities_so[0]);
}
set_audio_pass_thru_capabilities(audio_capabilities_so);
}
@@ -1055,26 +1142,7 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() {
Json::Value pcm_capabilities = ui.get("pcmStreamCapabilities", "");
smart_objects::SmartObject pcm_capabilities_so =
smart_objects::SmartObject(smart_objects::SmartType_Map);
-
- if (check_existing_json_member(pcm_capabilities, "samplingRate")) {
- pcm_capabilities_so["samplingRate"] =
- sampling_rate_enum
- .find(pcm_capabilities.get("samplingRate", "").asString())
- ->second;
- }
- if (check_existing_json_member(pcm_capabilities, "bitsPerSample")) {
- pcm_capabilities_so["bitsPerSample"] =
- bit_per_sample_enum
- .find(pcm_capabilities.get("bitsPerSample", "").asString())
- ->second;
- }
- if (check_existing_json_member(pcm_capabilities, "audioType")) {
- pcm_capabilities_so["audioType"] =
- audio_type_enum
- .find(pcm_capabilities.get("audioType", "").asString())
- ->second;
- }
-
+ convert_audio_capability_to_obj(pcm_capabilities, pcm_capabilities_so);
set_pcm_stream_capabilities(pcm_capabilities_so);
}
@@ -1331,6 +1399,27 @@ void HMICapabilitiesImpl::convert_json_languages_to_obj(
}
}
+void HMICapabilitiesImpl::convert_audio_capability_to_obj(
+ const Json::Value& capability,
+ smart_objects::SmartObject& output_so) const {
+ if (check_existing_json_member(capability, "samplingRate")) {
+ output_so[strings::sampling_rate] =
+ sampling_rate_enum.find(capability.get("samplingRate", "").asString())
+ ->second;
+ }
+ if (check_existing_json_member(capability, "bitsPerSample")) {
+ output_so[strings::bits_per_sample] =
+ bit_per_sample_enum
+ .find(capability.get("bitsPerSample", "").asString())
+ ->second;
+ }
+ if (check_existing_json_member(capability, "audioType")) {
+ output_so[strings::audio_type] =
+ audio_type_enum.find(capability.get("audioType", "").asString())
+ ->second;
+ }
+}
+
HMILanguageHandler& HMICapabilitiesImpl::get_hmi_language_handler() {
return hmi_language_handler_;
}