diff options
Diffstat (limited to 'src/components/application_manager/src/hmi_capabilities_impl.cc')
-rw-r--r-- | src/components/application_manager/src/hmi_capabilities_impl.cc | 171 |
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_; } |