summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Klimenko <dklimenko@luxoft.com>2015-06-01 12:58:49 -0700
committerDmitriy Klimenko <dklimenko@luxoft.com>2015-06-01 12:58:49 -0700
commitca8afd996ef8a3fd26c7a7ea497accedd92f20bc (patch)
tree886a79bd81a0ecad996d54b53faf0d0f2c41f26c
parent375ed7e0549adedfc72564a5fd0b4ffe9c39cea6 (diff)
downloadsmartdevicelink-ca8afd996ef8a3fd26c7a7ea497accedd92f20bc.tar.gz
[RTC 602452] [APPLINK] FUN-REQ-134502/B-Diagnostic Message - Request Processing
-rw-r--r--src/components/application_manager/include/application_manager/smart_object_keys.h1
-rw-r--r--src/components/application_manager/src/commands/mobile/diagnostic_message_request.cc27
2 files changed, 25 insertions, 3 deletions
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 6791dd0b5..e2ec9ffd8 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
@@ -276,6 +276,7 @@ const char address_lines[] = "addressLines";
const char phone_number[] = "phoneNumber";
const char location_image[] = "locationImage";
const char is_suscribed[] = "isSubscribed";
+const char message_data[] = "messageData";
} // namespace strings
namespace json {
diff --git a/src/components/application_manager/src/commands/mobile/diagnostic_message_request.cc b/src/components/application_manager/src/commands/mobile/diagnostic_message_request.cc
index 7b5cf5fd9..f5e8808d3 100644
--- a/src/components/application_manager/src/commands/mobile/diagnostic_message_request.cc
+++ b/src/components/application_manager/src/commands/mobile/diagnostic_message_request.cc
@@ -31,9 +31,11 @@
POSSIBILITY OF SUCH DAMAGE.
*/
+#include <algorithm>
#include "application_manager/commands/mobile/diagnostic_message_request.h"
#include "application_manager/application_manager_impl.h"
#include "application_manager/application_impl.h"
+#include "config_profile/profile.h"
#include "interfaces/HMI_API.h"
namespace application_manager {
@@ -50,15 +52,34 @@ DiagnosticMessageRequest::~DiagnosticMessageRequest() {
void DiagnosticMessageRequest::Run() {
LOG4CXX_AUTO_TRACE(logger_);
- ApplicationSharedPtr app = ApplicationManagerImpl::instance()->application(
- connection_key());
+ ApplicationSharedPtr app =
+ ApplicationManagerImpl::instance()->application(connection_key());
if (!app) {
- LOG4CXX_ERROR_EXT(logger_, "An application is not registered.");
+ LOG4CXX_ERROR(logger_, "Application is not registered.");
SendResponse(false, mobile_apis::Result::APPLICATION_NOT_REGISTERED);
return;
}
+ const std::vector<uint32_t>& supported_diag_modes =
+ profile::Profile::instance()->supported_diag_modes();
+
+ uint32_t message_data_length =
+ (*message_)[strings::msg_params][strings::message_data].length();
+ for (uint32_t i = 0; i < message_data_length; ++i) {
+ uint32_t message_data =
+ (*message_)[strings::msg_params][strings::message_data][i].asUInt();
+ if (supported_diag_modes.end() == std::find(supported_diag_modes.begin(),
+ supported_diag_modes.end(),
+ message_data)) {
+ LOG4CXX_ERROR(logger_, "Received message data " << message_data <<
+ " not supported");
+ SendResponse(false, mobile_apis::Result::REJECTED,
+ "Received message data not supported");
+ return;
+ }
+ }
+
// Add app_id for HMI request
(*message_)[strings::msg_params][strings::app_id] = app->app_id();