void __mmi_iu_voice_touch_engine_output_result_cb(const char* app_id, const char* output_result, void *user_data)
{
- // TODO: implement
+ if (iu_output_result_received_callback == nullptr) {
+ _E("[MMI IU] Output result callback is not set");
+ return;
+ }
+
+ iu_output_result_received_callback(app_id, MMI_PROVIDER_EVENT_VOICE_TOUCH, output_result, iu_output_result_user_data);
}
void __mmi_iu_voice_touch_engine_output_modality_cb(const char* app_id, void* output_modality, void *user_data)
{
- // TODO: implement
+ if (iu_output_modality_received_callback == nullptr) {
+ _E("[MMI IU] Output result callback is not set");
+ return;
+ }
+
+ iu_output_modality_received_callback(app_id, MMI_PROVIDER_EVENT_VOICE_TOUCH, output_modality, iu_output_modality_user_data);
}
EXPORT_API int mmi_iu_init()
return MMI_IU_ERROR_NONE;
}
-static void fire_output_result_callback(const char *app_id, const char *output_intent)
-{
- if (iu_output_result_received_callback)
- iu_output_result_received_callback(app_id, output_intent, iu_output_result_user_data);
- else
- _D("No output intent receive callback\n");
-}
-
-static void fire_output_result(const char *app_id, const char *json_output_intent)
-{
- if (g_system_app_id == string(app_id)) {
- fire_output_result_callback(app_id, json_output_intent);
- return;
- }
-
- if (g_focus_app_id.empty()) {
- fire_output_result_callback(app_id, json_output_intent);
- return;
- }
-
- if (g_focus_app_id == string(app_id)) {
- fire_output_result_callback(app_id, json_output_intent);
- return;
- }
-
- _I("different focus app\n");
-}
-
EXPORT_API int mmi_iu_feed_intent(const char *app_id, const char *json_data)
{
if (!app_id || !json_data) {
}
_I("app state: %d\n", g_app_state);
-
- fire_output_result(app_id, json_output_result.c_str());
-
return MMI_IU_ERROR_NONE;
}
* @param[in] json_data The output intent data with json format
* @param[in] user_data The user data passed from the callback function
*/
-typedef void (*mmi_iu_output_result_received_cb)(const char *target_app_id, const char *json_data, void *user_data);
+typedef void (*mmi_iu_output_result_received_cb)(const char *target_app_id, int type, const char *json_data, void *user_data);
typedef void (*mmi_iu_output_modality_received_cb)(const char *target_app_id, int type, void *event, void *user_data);
_init_done = false;
}
+int mmi_api_handler_send_resullt(const char *app_id, int event_type, const char *output_result)
+{
+ if (app_id == NULL) {
+ LOGE("App ID is NULL");
+ return MMI_ERROR_INVALID_PARAMETER;
+ }
+
+ mmi_client *mclient = client_manager_get_client(app_id);
+ if (mclient == NULL) {
+ LOGE("Failed to get client information from sender(%s)!", app_id);
+ return MMI_ERROR_INVALID_PARAMETER;
+ }
+
+ rpc_port_stub_mmi_result_cb_h result_cb = client_manager_get_result_cb_handle(mclient, event_type);
+ if (result_cb == NULL) {
+ LOGE("Failed to get result callback. App ID(%s), event Type(%d)!", app_id, event_type);
+ return MMI_ERROR_INVALID_PARAMETER;
+ }
+
+ int ret = rpc_port_stub_mmi_result_cb_invoke(result_cb, event_type, output_result);
+ if (ret != RPC_PORT_ERROR_NONE) {
+ LOGE("Failed to invoke result callback. App ID(%s), event Type(%d), ret(%d)!", app_id, event_type, ret);
+ return MMI_ERROR_OPERATION_FAILED;
+ }
+
+ LOGI("Send result to client. App ID(%s), event Type(%d)", app_id, event_type);
+ return MMI_ERROR_NONE;
+}
int mmi_api_handler_initialize(void);
void mmi_api_handler_deinitialize(void);
+int mmi_api_handler_send_resullt(const char *app_id, int event_type, const char *output_result);
+
#ifdef __cplusplus
}
#endif
return client->pid;
}
+rpc_port_stub_mmi_result_cb_h client_manager_get_result_cb_handle(mmi_client *client, int input_event_type)
+{
+ LOGI("client_manager_get_result_cb_handle");
+ if (client == NULL) {
+ LOGE("Fail to get client result_cb. client is NULL");
+ return NULL;
+ }
+
+ if (g_list_length(client->result_cb_list) > 0) {
+ LOGE("Fail to get client result_cb. There is no result_cb set");
+ return NULL;
+ }
+
+ GList *iter = g_list_first(client->result_cb_list);
+ while (iter != NULL) {
+ mmi_result_cb_s *data = iter->data;
+ if (data != NULL) {
+ int type = data->input_event_type;
+
+ if (type == input_event_type) {
+ return data->result_cb_h;
+ }
+ }
+ iter = g_list_next(iter);
+ }
+
+ return NULL;
+}
+
const char *
client_manager_get_client_sender(mmi_client *client)
{
int client_manager_set_client_pid(mmi_client *client, pid_t pid);
int client_manager_get_client_pid(mmi_client *client);
const char *client_manager_get_client_sender(mmi_client *client);
+rpc_port_stub_mmi_result_cb_h client_manager_get_result_cb_handle(mmi_client *client, int input_event_type);
void client_manager_init(void);
void client_manager_shutdown(void);
#include "mmi-manager.h"
#include "mmi-manager-dbg.h"
+#include "mmi-api-handler.h"
#include "iu/mmi_iu.h"
-
+#include "output_modality/mmi_output_modality.h"
#include "mmi-core.h"
#define APP_ID "org.tizen.test"
static Ecore_Event_Handler *_event_handlers[EVENT_HANDLER_MAX];
static mmi_client *g_client = NULL;
-static void __output_result_received_cb(const char *app_id, const char *json_data, void *user_data)
+static void __output_result_received_cb(const char *app_id, int type, const char *json_data, void *user_data)
{
- // TODO: implement
+ int ret = mmi_api_handler_send_resullt(app_id, type, json_data);
}
static void __output_modality_received_cb(const char *app_id, int type, void *event, void *user_data)
arg.source = gesture_event->source;
}
else if (type == MMI_PROVIDER_EVENT_VOICE_TOUCH) {
- // TODO: implement
+ mmi_output_modality_voice_touch *modality = (mmi_output_modality_voice_touch *)event;
+
+ if (modality != NULL) {
+ output_modality_voice_touch(*modality);
+ }
}
}
namespace {
-static void output_intent_received_cb(const char *app_id, const char *json_data, void *user_data)
+static void output_intent_received_cb(const char *app_id, int type, const char *json_data, void *user_data)
{
JsonParser *parser = json_parser_new();
GError *err_msg = NULL;
namespace {
-static void output_intent_received_cb(const char *app_id, const char *json_data, void *user_data)
+static void output_intent_received_cb(const char *app_id, int type, const char *json_data, void *user_data)
{
JsonParser *parser = json_parser_new();
GError *err_msg = NULL;
output_action = string("");
- ret = mmi_iu_set_output_intent_received_callback(output_intent_received_cb, NULL);
+ ret = mmi_iu_set_output_result_received_callback(output_intent_received_cb, NULL);
EXPECT_EQ(ret, MMI_IU_ERROR_NONE);
}
virtual void TearDown() {
}
)";
- int ret = mmi_iu_set_output_intent_received_callback(output_intent_received_cb, NULL);
+ int ret = mmi_iu_set_output_result_received_callback(output_intent_received_cb, NULL);
EXPECT_EQ(ret, MMI_IU_ERROR_NONE);
ret = mmi_iu_set_focus_app_id(SYSTEM_APP_ID);
EXPECT_EQ(ret, MMI_IU_ERROR_INVALID_PARAMETER);
}
-static void output_intent_received_cb(const char *app_id, const char *json_data, void *user_data)
+static void output_intent_received_cb(const char *app_id, int type, const char *json_data, void *user_data)
{
}
namespace {
-static void output_intent_received_cb(const char *app_id, const char *json_data, void *user_data)
+static void output_intent_received_cb(const char *app_id, int type, const char *json_data, void *user_data)
{
}