summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src/commands/mobile/diagnostic_message_request.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/src/commands/mobile/diagnostic_message_request.cc')
-rw-r--r--src/components/application_manager/src/commands/mobile/diagnostic_message_request.cc27
1 files changed, 24 insertions, 3 deletions
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();