virtual bool set_app_icon_path(const std::string& file_name) = 0;
virtual void set_app_allowed(const bool& allowed) = 0;
virtual void set_device(connection_handler::DeviceHandle device) = 0;
+ virtual uint32_t get_grammar_id() = 0;
+ virtual void set_grammar_id(uint32_t value) = 0;
virtual bool AddFile(AppFile& file) = 0;
virtual const AppFilesMap& getAppFiles() const = 0;
bool set_app_icon_path(const std::string& path);
void set_app_allowed(const bool& allowed);
void set_device(connection_handler::DeviceHandle device);
+ virtual uint32_t get_grammar_id();
+ virtual void set_grammar_id(uint32_t value);
bool AddFile(AppFile& file);
bool UpdateFile(AppFile& file);
private:
uint32_t hash_val_;
+ uint32_t grammar_id_;
+
smart_objects::SmartObject* active_message_;
*/
ResumeCtrl& resume_controller() { return resume_ctrl_; }
- uint32_t GetGrammarID();
+ uint32_t GenerateGrammarID();
/*
* @brief Save binary data to specified directory
*
is_app_allowed_(true),
has_been_activated_(false),
tts_speak_state_(false),
- device_(0) {
+ device_(0),
+ grammar_id_(0) {
}
ApplicationImpl::~ApplicationImpl() {
device_ = device;
}
+uint32_t ApplicationImpl::get_grammar_id() {
+ return grammar_id_;
+}
+
+void ApplicationImpl::set_grammar_id(uint32_t value) {
+ grammar_id_ = value;
+}
+
bool ApplicationImpl::has_been_activated() const {
return has_been_activated_;
}
}
}
- smart_objects::SmartObject& params = message[strings::msg_params];
-
- ApplicationSharedPtr application(new ApplicationImpl(app_id,
- params[strings::app_id].asString(),
- NULL));
+ ApplicationSharedPtr application(new
+ ApplicationImpl(app_id));
if (!application) {
utils::SharedPtr<smart_objects::SmartObject> response(
MessageHelper::CreateNegativeResponse(
application->set_name(name);
application->set_device(device_id);
-
+ application->set_grammar_id(GenerateGrammarID());
application->set_language(
static_cast<mobile_api::Language::eType>(
message[strings::msg_params][strings::language_desired].asInt()));
return false;
}
-uint32_t ApplicationManagerImpl::GetGrammarID() {
+uint32_t ApplicationManagerImpl::GenerateGrammarID() {
return rand();
}
vr_msg_params[strings::app_id] = app->app_id();
vr_msg_params[strings::type] = hmi_apis::Common_VRCommandType::Command;
- vr_msg_params[strings::grammar_id] = ApplicationManagerImpl::instance()->GetGrammarID();
+ vr_msg_params[strings::grammar_id] = app->get_grammar_id();
send_vr_ = true;
}
SendResponse(false, result);
return;
}
- uint32_t grammar_id = ApplicationManagerImpl::instance()->GetGrammarID();
+ uint32_t grammar_id = ApplicationManagerImpl::instance()->GenerateGrammarID();
(*message_)[strings::msg_params][strings::grammar_id] = grammar_id;
app->AddChoiceSet(choice_set_id, (*message_)[strings::msg_params]);
SendVRAddCommandRequest(app);
// Self check of new choice set for params coincidence
for (; it_array != it_array_end; ++it_array) {
+ const smart_objects::SmartArray* vr_array =
+ (*it_array)[strings::vr_commands].asArray();
CoincidencePredicateChoiceID c((*it_array)[strings::choice_id].asInt());
if (1 != std::count_if(
return mobile_apis::Result::DUPLICATE_NAME;
}
+ // check dublicate with existing choisets
+
+ for (ChoiceSetMap::const_iterator it = app_choice_set_map.begin();
+ it != app_choice_set_map.end(); ++it) {
+ smart_objects::SmartObject* cur_set = it->second;
+
+ const smart_objects::SmartArray* choices =
+ (*cur_set)[strings::choice_set].asArray();
+ smart_objects::SmartArray::const_iterator cur_choise_it;
+
+
+
+ for (cur_choise_it = choices->begin(); cur_choise_it != choices->end();
+ ++cur_choise_it) {
+ //vr_commands
+ if (true == compareSynonyms((*cur_choise_it),(*it_array))) {
+ LOG4CXX_ERROR(logger_, "Dublicated VR synonyms");
+ return mobile_apis::Result::DUPLICATE_NAME;
+ }
+ // menu_name
+ if((*cur_choise_it)[strings::menu_name].asString() ==
+ (*it_array)[strings::menu_name].asString()) {
+ LOG4CXX_ERROR(logger_, "Dublicated Menu name ");
+ return mobile_apis::Result::DUPLICATE_NAME;
+ }
+
+ }
+ }
+
// Check coincidence inside the current choice
- const smart_objects::SmartArray* vr_array =
- (*it_array)[strings::vr_commands].asArray();
smart_objects::SmartArray::const_iterator it_vr = vr_array->begin();
smart_objects::SmartArray::const_iterator it_vr_end = vr_array->end();
application_manager::ApplicationSharedPtr const app) {
smart_objects::SmartObject msg_params =
smart_objects::SmartObject(smart_objects::SmartType_Map);
+ smart_objects::SmartObject& choice_list =
+ (*message_)[strings::msg_params][strings::interaction_choice_set_id_list];
+
+ msg_params[strings::grammar_id] = smart_objects::SmartObject(smart_objects::SmartType_Array);
+ int32_t grammar_id_index = 0;
+ for (uint32_t i = 0; i < choice_list.length(); ++i) {
+ smart_objects::SmartObject* choice_set =
+ app->FindChoiceSet(choice_list[i].asInt());
+ if (!choice_set) {
+ LOG4CXX_WARN(logger_, "Couldn't found choiset");
+ continue;
+ }
+ uint32_t grammar_id = (*choice_set)[strings::grammar_id].asUInt();
+ msg_params[strings::grammar_id][grammar_id_index++]= (*choice_set)[strings::grammar_id];
+ }
if ((*message_)[strings::msg_params].keyExists(strings::help_prompt)) {
DeleteParameterFromTTSChunk(&msg_params[strings::help_prompt]);
} else {
-
- smart_objects::SmartObject& choice_list =
- (*message_)[strings::msg_params][strings::interaction_choice_set_id_list];
-
msg_params[strings::help_prompt] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
int32_t index = 0;
- int32_t grammar_id_index = 0;
-
- msg_params[strings::grammar_id] = smart_objects::SmartObject(smart_objects::SmartType_Array);
for (uint32_t i = 0; i < choice_list.length(); ++i) {
smart_objects::SmartObject* choice_set =
app->FindChoiceSet(choice_list[i].asInt());
msg_params[strings::help_prompt][index++] = item;
}
}
- msg_params[strings::grammar_id][grammar_id_index++]= (*choice_set)[strings::grammar_id];
} else {
LOG4CXX_ERROR(logger_, "Can't found choiset!")
}
full_file_path = profile::Profile::instance()->system_files_path();
if (!file_system::CreateDirectoryRecursively(full_file_path)) {
- LOG4CXX_ERROR(logger_, "Cann't create folder.");
+ LOG4CXX_ERROR(logger_, "Cann't create folder");
SendResponse(false, mobile_apis::Result::GENERIC_ERROR,
"Cann't create folder.",
&response_params);
> file_system::GetAvailableSpaceForApp(application->name())) {
LOG4CXX_ERROR(logger_, "Out of free app memory.");
SendResponse(false, mobile_apis::Result::OUT_OF_MEMORY,
- "Out of memory.",
+ "Out of memory",
&response_params);
return;
}
case mobile_apis::Result::SUCCESS: {
AppFile file(sync_file_name_, is_persistent_file_, is_download_compleate,
file_type_);
- if (offset_ == 0) {
+ if (0 == offset_) {
LOG4CXX_INFO(logger_, "New file downloading");
if (!application->AddFile(file)) {
LOG4CXX_INFO(
break;
}
default:
- LOG4CXX_INFO(logger_, "Save in unsuccesfull result = " << save_result);
- SendResponse(false, save_result, "Cant' save file", &response_params);
+ LOG4CXX_INFO(logger_, "Save in unsuccesfull. Result = " << save_result);
+ SendResponse(false, save_result, "Can't save file", &response_params);
break;
}
}
message[strings::msg_params][strings::app_id] = connection_key();
message[strings::msg_params][strings::sync_file_name] = sync_file_name_;
message[strings::msg_params][strings::offset] = offset_;
- if ( offset_ == 0 ) {
+ if (0 == offset_) {
message[strings::msg_params][strings::file_size] =
(*message_)[strings::msg_params][strings::length];
}