static const vector<string> __SHOW_LABEL_KOKR = {"힌트 메세지 보여줘", "텍스트 보여줘", "텍스트", "텍스트 힌트 보여줘"};
static const vector<string> __SHOW_GRID_KOKR = {"그리드", "그리드 모드", "그리드로 보여줘", "그리드 보여줘"};
static const vector<string> __REFRESH_WINDOW_INFO = {"화면 갱신해줘", "화면 업데이트", "리프레시", "새로고침", "새로 고침"};
+static const vector<string> __TURN_OF_REQUEST = {"동작 그만", "이제 그만"};
static const int __DEFAULT_DISPLAY_WIDTH = 1920;
static const int __DEFAULT_DISPLAY_HEIGHT = 1080;
VoiceTouchEngine::VoiceTouchEngine()
{
_I("[VoiceTouchEngine] Constructor");
- __touchModality.timestamp = -1;
- __touchModality.mode = MMI_VOICE_TOUCH_MODE_TOOLTIP;
- __touchModality.object_id = nullptr;
- __touchModality.coord_x = 0;
- __touchModality.coord_y = 0;
-
- __currentMode = VOICE_TOUCH_MODE_TOOLTIP_TEXT;
-
- __itemList.clear();
-
__displayWidth = __DEFAULT_DISPLAY_WIDTH;
__displayHeight = __DEFAULT_DISPLAY_HEIGHT;
__gridX[1] = __DEFAULT_GRID_NUM_X2;
__gridY[1] = __DEFAULT_GRID_NUM_Y2;
- __outputResultCallback = nullptr;
- __outputResultUserData = nullptr;
-
- __outputModalityCallback = nullptr;
- __outputModalityUserData = nullptr;
-
__findCommandTimer = nullptr;
__makeClickableItemResultTimer = nullptr;
- resetCurrentGridInfo();
+ InitializeMembers();
}
VoiceTouchEngine::~VoiceTouchEngine()
{
_I("[VoiceTouchEngine] Destructor");
+ InitializeMembers();
+}
+
+
+void VoiceTouchEngine::InitializeMembers()
+{
+ _I("[VoiceTouchEngine] Initialize all members");
+ __touchModality.timestamp = -1;
+ __touchModality.mode = MMI_VOICE_TOUCH_MODE_TOOLTIP;
+ __touchModality.object_id = nullptr;
+ __touchModality.coord_x = 0;
+ __touchModality.coord_y = 0;
+
+ __currentMode = VOICE_TOUCH_MODE_TOOLTIP_TEXT;
+
__itemList.clear();
+ __gridList.clear();
__outputResultCallback = nullptr;
__outputResultUserData = nullptr;
__outputModalityCallback = nullptr;
__outputModalityUserData = nullptr;
+ __asrResult.clear();
+ __appId.clear();
+
if (__findCommandTimer != nullptr) {
ecore_timer_del(__findCommandTimer);
__findCommandTimer = nullptr;
ecore_timer_del(__makeClickableItemResultTimer);
__makeClickableItemResultTimer = nullptr;
}
-}
+ __commandManager.cleanCommands();
+ resetCurrentGridInfo();
+}
void VoiceTouchEngine::setDisplayInfo(int width, int height)
{
return true;
}
+ bool isVoiceTouchOff = __is_exist_in_candidates(asrResult, __TURN_OF_REQUEST);
+ if (isVoiceTouchOff) {
+ InitializeMembers();
+ setTurnOffEventResult(timestamp, provider);
+ invokeOutputResultCallback(provider.jsonToString());
+ return true;
+ }
+
voice_touch_mode_e mode = getVoiceTouchMode(asrResult);
if (mode == VOICE_TOUCH_MODE_INVALID) {
_I("[VoiceTouchEngine] This is not mode command. Try to find proper command");
provider.setRejectEvent(MMI_REASON_NO_MATCHED_COMMANDS, timestamp);
}
+void VoiceTouchEngine::setTurnOffEventResult(int timestamp, JsonProvider &provider)
+{
+ _I("[VoiceTouchEngine] Set turn off event into output. timestamp(%d)", timestamp);
+
+ provider.setOutputEvent(MMI_KEY_TURN_OFF_REQUEST);
+ provider.setTurnOffRequestEvent(timestamp);
+}
+
void VoiceTouchEngine::setSelectedItemResult(const ClickableItem &item, int timestamp, JsonProvider &provider)
{
_I("[VoiceTouchEngine] Set clicked object information into output. timestamp(%d). item(%s)", timestamp, item.objectId.c_str());
static Eina_Bool makeClickableItemResultCallback(void *data);
private:
+ void InitializeMembers();
long getCurrentTimestamp();
bool handleVoiceInput(mmi_provider_event_voice *voiceEvent);
void setFinalAsrResult(const std::string &result, int timestamp, JsonProvider &provider);
void setSelectedItemResult(const ClickableItem &item, int timestamp, JsonProvider &provider);
void setRejectedEventResult(int timestamp, JsonProvider &provider);
+ void setTurnOffEventResult(int timestamp, JsonProvider &provider);
void makeGridItemList(const grid_info_s &parentInfo, std::list<ClickableItem> &list);
void makeTouchModality(const ClickableItem &item, int timestamp);