summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src
diff options
context:
space:
mode:
authorChrisB-Elektrobit <chris.boguslawski@elektrobit.com>2017-08-08 15:51:37 -0400
committerChrisB-Elektrobit <chris.boguslawski@elektrobit.com>2017-08-08 15:51:37 -0400
commit54e2ef2aef655e842d99b4d0026392e29f5e6f72 (patch)
treedda25a2cb437ef53fcc5944e4b112b1d4f86c509 /src/components/application_manager/src
parenta2d33105ac96a1fea9fa755188fef40e311fc411 (diff)
downloadsdl_core-54e2ef2aef655e842d99b4d0026392e29f5e6f72.tar.gz
- added new ShowRequest::HandleMetadata function for the Show RPC to
handle mapping metadata values from incoming mobile protocol to outgoing HMI protocol - hooked HandleMetadata() into ShowRequest::run() for the four mainFields - added new metadata json string entries to smart_object_keys.h/.cc
Diffstat (limited to 'src/components/application_manager/src')
-rw-r--r--src/components/application_manager/src/commands/mobile/show_request.cc53
-rw-r--r--src/components/application_manager/src/smart_object_keys.cc2
2 files changed, 55 insertions, 0 deletions
diff --git a/src/components/application_manager/src/commands/mobile/show_request.cc b/src/components/application_manager/src/commands/mobile/show_request.cc
index cf2509cdb9..53c6ece67c 100644
--- a/src/components/application_manager/src/commands/mobile/show_request.cc
+++ b/src/components/application_manager/src/commands/mobile/show_request.cc
@@ -49,6 +49,41 @@ ShowRequest::ShowRequest(const MessageSharedPtr& message,
ShowRequest::~ShowRequest() {}
+void ShowRequest::HandleMetadata(const char* field_id,
+ int32_t field_index,
+ smart_objects::SmartObject& msg_params) {
+ smart_objects::SmartObject& metadata_struct =
+ (*message_)[strings::msg_params][strings::text_field_metadata];
+
+ if (metadata_struct.keyExists(field_id)) {
+ LOG4CXX_INFO(logger_, "field " << field_id << " exists.");
+
+ if (field_index != -1) {
+ LOG4CXX_INFO(logger_, "have a field index of " << field_index);
+ msg_params[hmi_request::show_strings][field_index]
+ [hmi_request::field_types] =
+ smart_objects::SmartObject(smart_objects::SmartType_Array);
+
+ const size_t num_tags = metadata_struct[field_id].length();
+ LOG4CXX_INFO(logger_, "num_tags = " << num_tags);
+
+ for (size_t i = 0; i < num_tags; ++i) {
+ const int32_t current_tag = metadata_struct[field_id][i].asInt();
+ msg_params[hmi_request::show_strings][field_index]
+ [hmi_request::field_types][i] = current_tag;
+ LOG4CXX_INFO(logger_, "tag " << i << ": " << current_tag);
+ }
+ } else {
+ LOG4CXX_INFO(logger_,
+ "tag provided with no item for " << field_id
+ << ", ignore with warning");
+ // tag provided with no item, ignore with warning
+ }
+ } else {
+ LOG4CXX_INFO(logger_, "field " << field_id << " does not exist.");
+ }
+}
+
void ShowRequest::Run() {
LOG4CXX_AUTO_TRACE(logger_);
@@ -125,38 +160,56 @@ void ShowRequest::Run() {
smart_objects::SmartObject(smart_objects::SmartType_Array);
int32_t index = 0;
+ int32_t main_field_1_index = -1;
if ((*message_)[strings::msg_params].keyExists(strings::main_field_1)) {
msg_params[hmi_request::show_strings][index][hmi_request::field_name] =
static_cast<int32_t>(hmi_apis::Common_TextFieldName::mainField1);
msg_params[hmi_request::show_strings][index][hmi_request::field_text] =
(*message_)[strings::msg_params][strings::main_field_1];
+ main_field_1_index = index;
++index;
}
+ int32_t main_field_2_index = -1;
if ((*message_)[strings::msg_params].keyExists(strings::main_field_2)) {
msg_params[hmi_request::show_strings][index][hmi_request::field_name] =
static_cast<int32_t>(hmi_apis::Common_TextFieldName::mainField2);
msg_params[hmi_request::show_strings][index][hmi_request::field_text] =
(*message_)[strings::msg_params][strings::main_field_2];
+ main_field_2_index = index;
++index;
}
+ int32_t main_field_3_index = -1;
if ((*message_)[strings::msg_params].keyExists(strings::main_field_3)) {
msg_params[hmi_request::show_strings][index][hmi_request::field_name] =
static_cast<int32_t>(hmi_apis::Common_TextFieldName::mainField3);
msg_params[hmi_request::show_strings][index][hmi_request::field_text] =
(*message_)[strings::msg_params][strings::main_field_3];
+ main_field_3_index = index;
++index;
}
+ int32_t main_field_4_index = -1;
if ((*message_)[strings::msg_params].keyExists(strings::main_field_4)) {
msg_params[hmi_request::show_strings][index][hmi_request::field_name] =
static_cast<int32_t>(hmi_apis::Common_TextFieldName::mainField4);
msg_params[hmi_request::show_strings][index][hmi_request::field_text] =
(*message_)[strings::msg_params][strings::main_field_4];
+ main_field_4_index = index;
++index;
}
+ if ((*message_)[strings::msg_params].keyExists(
+ strings::text_field_metadata)) {
+ LOG4CXX_INFO(logger_, "TextFieldMetadata exists.");
+
+ HandleMetadata(strings::main_field_1, main_field_1_index, msg_params);
+ HandleMetadata(strings::main_field_2, main_field_2_index, msg_params);
+ HandleMetadata(strings::main_field_3, main_field_3_index, msg_params);
+ HandleMetadata(strings::main_field_4, main_field_4_index, msg_params);
+ }
+
if ((*message_)[strings::msg_params].keyExists(strings::media_clock)) {
msg_params[hmi_request::show_strings][index][hmi_request::field_name] =
static_cast<int32_t>(hmi_apis::Common_TextFieldName::mediaClock);
diff --git a/src/components/application_manager/src/smart_object_keys.cc b/src/components/application_manager/src/smart_object_keys.cc
index 7f8fd5d00f..cafb7f7388 100644
--- a/src/components/application_manager/src/smart_object_keys.cc
+++ b/src/components/application_manager/src/smart_object_keys.cc
@@ -57,6 +57,7 @@ const char* main_field_1 = "mainField1";
const char* main_field_2 = "mainField2";
const char* main_field_3 = "mainField3";
const char* main_field_4 = "mainField4";
+const char* text_field_metadata = "textFieldMetadata";
const char* eta = "eta";
const char* time_to_destination = "timeToDestination";
const char* total_distance = "totalDistance";
@@ -349,6 +350,7 @@ namespace hmi_request {
const char* parent_id = "parentID";
const char* field_name = "fieldName";
const char* field_text = "fieldText";
+const char* field_types = "fieldTypes";
const char* alert_strings = "alertStrings";
const char* duration = "duration";
const char* soft_buttons = "softButtons";