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 | 155 |
1 files changed, 115 insertions, 40 deletions
diff --git a/src/components/application_manager/src/hmi_capabilities_impl.cc b/src/components/application_manager/src/hmi_capabilities_impl.cc index 060eaf011c..6f95e43545 100644 --- a/src/components/application_manager/src/hmi_capabilities_impl.cc +++ b/src/components/application_manager/src/hmi_capabilities_impl.cc @@ -32,16 +32,16 @@ #include <map> -#include "utils/logger.h" -#include "application_manager/hmi_capabilities_impl.h" #include "application_manager/application_manager.h" -#include "smart_objects/smart_object.h" +#include "application_manager/hmi_capabilities_impl.h" #include "application_manager/message_helper.h" #include "application_manager/smart_object_keys.h" #include "config_profile/profile.h" #include "formatters/CFormatterJsonBase.h" #include "interfaces/HMI_API.h" +#include "smart_objects/smart_object.h" #include "utils/file_system.h" +#include "utils/logger.h" namespace application_manager { namespace formatters = ns_smart_device_link::ns_json_handler::formatters; @@ -135,6 +135,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)); @@ -337,6 +377,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)); @@ -405,6 +447,7 @@ HMICapabilitiesImpl::HMICapabilitiesImpl(ApplicationManager& app_mngr) , phone_capability_(NULL) , video_streaming_capability_(NULL) , rc_capability_(NULL) + , seat_location_capability_(NULL) , app_mngr_(app_mngr) , hmi_language_handler_(app_mngr) { InitCapabilities(); @@ -568,6 +611,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_) { @@ -703,6 +752,15 @@ void HMICapabilitiesImpl::set_rc_capability( rc_capability_ = new smart_objects::SmartObject(rc_capability); } +void HMICapabilitiesImpl::set_seat_location_capability( + const smart_objects::SmartObject& seat_location_capability) { + if (seat_location_capability_) { + delete seat_location_capability_; + } + seat_location_capability_ = + new smart_objects::SmartObject(seat_location_capability); +} + void HMICapabilitiesImpl::Init(resumption::LastState* last_state) { hmi_language_handler_.Init(last_state); if (false == load_capabilities_from_file()) { @@ -758,6 +816,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_; @@ -845,6 +908,11 @@ const smart_objects::SmartObject* HMICapabilitiesImpl::rc_capability() const { return rc_capability_; } +const smart_objects::SmartObject* +HMICapabilitiesImpl::seat_location_capability() const { + return seat_location_capability_; +} + bool HMICapabilitiesImpl::load_capabilities_from_file() { std::string json_string; std::string file_name = app_mngr_.get_settings().hmi_capabilities_file_name(); @@ -914,7 +982,8 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() { hmi_apis::Common_TextFieldName::eType>::const_iterator it_text_field_name = text_fields_enum_name.find( display_capabilities_so[hmi_response::text_fields][i] - [strings::name].asString()); + [strings::name] + .asString()); display_capabilities_so[hmi_response::text_fields][i].erase( strings::name); if (text_fields_enum_name.end() != it_text_field_name) { @@ -1025,25 +1094,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); } @@ -1052,23 +1112,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); } @@ -1089,6 +1133,7 @@ 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, @@ -1191,6 +1236,15 @@ bool HMICapabilitiesImpl::load_capabilities_from_file() { set_rc_supported(true); } } + if (check_existing_json_member(system_capabilities, + "seatLocationCapability")) { + Json::Value seat_location_capability = + system_capabilities.get("seatLocationCapability", ""); + smart_objects::SmartObject seat_location_capability_so; + formatters::CFormatterJsonBase::jsonValueToObj( + seat_location_capability, seat_location_capability_so); + set_seat_location_capability(seat_location_capability_so); + } } } // UI end @@ -1325,6 +1379,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_; } |