+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *******************************************************************************/
-/**
- * @file tbt-d2d-view.c
- * @brief covers d2d convergence apis
- *
- * @author A. B. M. Nazibullah(nazib.ullah@samsung.com)
- * @date October, 2016
- * @credit
- *
- */
-
-#if 0
-#include "utils/app_module_config.h"
-#ifdef TBT_MODULE_D2D
-
-
-#include "utils/logger.h"
-#include "utils/config.h"
-#include "utils/ui-utils.h"
-#include "view/tbt-d2d-view.h"
-#include "view/tbt-common-view.h"
-#include <json-glib/json-glib.h>
-//#include <d2d_conv_manager.h>
-
-struct _d2d_view
-{
- common_view* view;
- Evas_Object *server_list;
- Evas_Object *client_msg_list;
- conv_h gl_conv_h;
- GList *devices_list;
-};
-
-typedef struct _device_data{
- d2d_view *this;
- conv_device_h selected_device;
-}device_data;
-
-typedef struct _service_data{
- d2d_view *view;
- conv_service_h service_handle;
-}service_data;
-
-static Evas_Object *found_device_list;
-static Evas_Object *service_list;
-static Evas_Object *app_comm_menu_list;
-
-
-static void _app_destroy_cb(void* this);
-static void discovery_cb(conv_device_h device, int result, void* user_data);
-static void device_selected_cb(void *data, Evas_Object *obj, void *event_info);
-static void message_listener(conv_service_h handle, conv_channel_h channel, int error, conv_payload_h result, void* user_data);
-static void start_discovery_cb(void *data, Evas_Object *obj, void *event_info);
-
-/**
- * @function d2d_view_add
- * @since_tizen 2.3
- * @description Gps View Add
- * @parameter Evas_Object*: Evas Object Pointer, tbt_info*: Tbt Info Pointer, Elm_Object_Item*: Elm Object Item Pointer
- * @return d2d_view*
- */
-d2d_view *d2d_view_add(Evas_Object *navi, tbt_info *tbt_info, Elm_Object_Item *item)
-{
- RETVM_IF(NULL == navi, NULL, "navi is null");
- RETVM_IF(NULL == tbt_info, NULL, "tbt_info is null");
- RETVM_IF(NULL == item, NULL, "item is NULL");
-
-
- d2d_view *this = NULL;
- this = calloc(1, sizeof(d2d_view));
- RETVM_IF(!this, NULL, "calloc failed");
- this->view = calloc(1, sizeof(common_view));
- RETVM_IF(!this->view, NULL, "calloc failed");
-
- tbt_info->layout_group = "d2d_viewer";
- tbt_info->layout_file = get_edje_path("d2d_viewer.edj");
-
- common_view_add(navi, tbt_info, item, this->view, _app_destroy_cb, this);
-
- if (tbt_info->apptype == TBT_APP_D2D_CLIENT)
- {
- this->server_list = elm_list_add(this->view->layout);
- elm_list_mode_set(this->server_list, ELM_LIST_COMPRESS);
- evas_object_smart_callback_add(this->server_list, "selected", NULL, NULL);
- elm_list_item_append(this->server_list, "D2D discover", NULL, NULL, start_discovery_cb, this);
-
- elm_list_go(this->server_list);
-
- elm_object_part_content_set(this->view->layout, "list_container", this->server_list);
-
- found_device_list = elm_list_add(this->view->layout);
- elm_list_mode_set(found_device_list, ELM_LIST_COMPRESS);
- evas_object_smart_callback_add(found_device_list, "selected", NULL, NULL);
-
- service_list = elm_list_add(this->view->layout);
- elm_list_mode_set(service_list, ELM_LIST_COMPRESS);
- evas_object_smart_callback_add(service_list, "selected", NULL, NULL);
- elm_list_select_mode_set(service_list, ELM_OBJECT_SELECT_MODE_ALWAYS);
-
- app_comm_menu_list = elm_list_add(this->view->layout);
- elm_list_mode_set(app_comm_menu_list, ELM_LIST_COMPRESS);
- evas_object_smart_callback_add(app_comm_menu_list, "selected", NULL, NULL);
-
- }
- else if (tbt_info->apptype == TBT_APP_D2D_SERVER)
- {
- this->client_msg_list = elm_list_add(this->view->layout);
- elm_list_mode_set(this->client_msg_list, ELM_LIST_COMPRESS);
- elm_list_item_append(this->client_msg_list, "Ready", NULL, NULL, NULL, NULL);
-
- elm_list_go(this->client_msg_list);
-
- elm_object_part_content_set(this->view->layout, "list_container", this->client_msg_list);
- }
-
- return this;
-}
-
-
-/**
- * @function get_d2d_error
- * @since_tizen 3.0
- * @description get the name of the error for d2d
- * @parameter int: error int
- * @return char*: error string
- */
-static char* get_d2d_error(int e)
-{
- switch (e) {
- case CONV_ERROR_NONE:
- return "CONV_ERROR_NONE";
- case CONV_ERROR_INVALID_PARAMETER:
- return "CONV_ERROR_INVALID_PARAMETER";
- case CONV_ERROR_INVALID_OPERATION:
- return "CONV_ERROR_INVALID_OPERATION";
- case CONV_ERROR_OUT_OF_MEMORY:
- return "CONV_ERROR_OUT_OF_MEMORY";
- case CONV_ERROR_PERMISSION_DENIED:
- return "CONV_ERROR_PERMISSION_DENIED";
- case CONV_ERROR_NOT_SUPPORTED:
- return "CONV_ERROR_NOT_SUPPORTED";
- case CONV_ERROR_NO_DATA:
- return "CONV_ERROR_NO_DATA";
- default:
- return "UNKNOWN_ERROR";
- }
-
- return "UNKNOWN_ERROR";
-}
-
-static void start_discovery_cb(void *data, Evas_Object *obj, void *event_info)
-{
- d2d_view* this = (d2d_view*) data;
- DBG("Inside start server discovery cb");
-
- int ret = conv_create(&this->gl_conv_h);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_create failed with error : %s", get_d2d_error(ret));
-
- ret = conv_discovery_start(this->gl_conv_h, 90, discovery_cb, this);/*Timeout 90 seconds*/
- RETM_IF(ret != CONV_ERROR_NONE, "conv_discovery_start failed with error : %s", get_d2d_error(ret));
-}
-
-
-static int app_control_start(conv_service_h service_handle, void* data)
-{
- DBG("app_control_start");
- int ret;
-
- service_data *s_data = (service_data*) data;
- s_data->service_handle = service_handle;
- ret = conv_service_set_listener_cb(service_handle, message_listener, (void*)s_data);
- RETVM_IF(ret != CONV_ERROR_NONE,0,"conv_service_set_listener_cb failed with error : %s", get_d2d_error(ret));
- ret = conv_service_read(service_handle, NULL, NULL);
- RETVM_IF(ret != CONV_ERROR_NONE,0,"conv_service_read failed with error : %s", get_d2d_error(ret));
- ret = conv_service_start(service_handle, NULL, NULL);
- RETVM_IF(ret != CONV_ERROR_NONE,0, "conv_service_start failed with error : %s", get_d2d_error(ret));
-
- return 0;
-}
-
-static void service_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
- DBG("service_selected_cb");
-
- service_data *s_data = (service_data*) data;
-
- RETM_IF(NULL==s_data, "s_data is NULL");
-
- conv_service_e e = CONV_SERVICE_NONE;
-
- if(s_data->service_handle == NULL)
- {
- ERR("s_data->service_handle is NULL");
- }
-
- conv_service_h service_handle =s_data->service_handle;
-
-
- int ret = conv_service_get_type(service_handle, &e);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_service_get_type failed with error : %s", get_d2d_error(ret));
-
- switch (e)
- {
- case CONV_SERVICE_APP_TO_APP_COMMUNICATION :
- DBG("CONV_SERVICE_APP_TO_APP_COMMUNICATION");
- break;
-
- case CONV_SERVICE_REMOTE_APP_CONTROL :
- DBG("CONV_SERVICE_REMOTE_APP_CONTROL");
- ret = app_control_start(service_handle, s_data);
- RETM_IF(ret != CONV_ERROR_NONE, "app_control_start failed with error : %s", get_d2d_error(ret));
- break;
- case CONV_SERVICE_REMOTE_INTERACTION:
- DBG("CONV_SERVICE_REMOTE_INTERACTION");
- break;
-
- default :
- DBG( "UNKNOWN_SERVICE");
- break;
- }
-
-}
-
-static void message_listener(conv_service_h handle, conv_channel_h channel, int error, conv_payload_h result, void* user_data)
-{
- DBG("message_listener");
-
- char* test;
- service_data* s_data = (service_data*) user_data;
- conv_payload_get_string(result, "result_type", &test);
- int ret;
-
- DBG("result_type : %s", test);
-
- if (!strcmp(test, "onStart"))
- {
- conv_payload_h payload_handle;
-
- ret = conv_payload_create(&payload_handle);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_payload_create failed with error : %s", get_d2d_error(ret));
-
- app_control_h app_control = NULL;
- app_control_create(&app_control);
- app_control_set_app_id(app_control, "org.tizen.coretbt_uiapp");
- app_control_set_operation(app_control, APP_CONTROL_OPERATION_MAIN);
-
- ret = conv_payload_set_app_control(payload_handle, "app_control", app_control);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_payload_set_app_control failed with error : %s", get_d2d_error(ret));
- ret = conv_payload_set_string(payload_handle, "reply", "0");
- RETM_IF(ret != CONV_ERROR_NONE, "conv_payload_set_string failed with error : %s", get_d2d_error(ret));
- ret = conv_service_publish(s_data->service_handle, NULL, payload_handle);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_service_publish failed with error : %s", get_d2d_error(ret));
- sleep(3);
-
- ret = conv_service_stop(s_data->service_handle, NULL, NULL);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_service_stop failed with error : %s", get_d2d_error(ret));
-
- DBG("conv_payload_destroy called..");
- ret = conv_payload_destroy(payload_handle);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_payload_destroy failed with error : %s", get_d2d_error(ret));
-
- ret = conv_service_destroy(s_data->service_handle);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_service_destroy failed with error : %s", get_d2d_error(ret));
-
- }
-
-}
-
-
-static void service_foreach_cb(conv_service_h service_handle, void *user_data)
-{
- conv_service_e e;
- d2d_view* this = (d2d_view*) user_data;
-
- DBG( "service_foreach_cb");
- service_data* s_data = (service_data*)malloc(sizeof(service_data));
- s_data->view = this;
-
-
- int ret = conv_service_get_type(service_handle, &e);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_service_get_type failed with error : %s", get_d2d_error(ret));
- DBG( "service_get_type = %d", (int)e);
-
- char* value = NULL;
- char* service_id = NULL;
-
- ret = conv_service_get_property_string(service_handle, CONV_SERVICE_ID, &service_id);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_service_get_property_string failed with error : %s", get_d2d_error(ret));
- DBG( "service id = %s", service_id);
-
- ret = conv_service_get_property_string(service_handle, CONV_SERVICE_VERSION, &value);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_service_get_property_string failed with error : %s", get_d2d_error(ret));
- DBG( "service version = %s", value);
-
- conv_service_h clone_service_handle;
-
- ret = conv_service_clone(service_handle, &clone_service_handle);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_service_clone failed with error : %s", get_d2d_error(ret));
-
- s_data->service_handle = clone_service_handle;
-
- elm_list_item_append(service_list, service_id, NULL, NULL, service_selected_cb, s_data);
-
- elm_list_go(service_list);
- elm_object_part_content_set(this->view->layout, "list_container", service_list);
-
-}
-
-static void device_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
- device_data* new_device_data = (device_data*) data;
- d2d_view* this = new_device_data->this;
- char* device_name;
- conv_device_get_property_string(new_device_data->selected_device, CONV_DEVICE_NAME, &device_name);
- DBG("%s is the device name inside device_selected_cb.", device_name );
-
- elm_list_clear(this->server_list);
- conv_device_h clone_device;
- int ret = conv_device_clone(new_device_data->selected_device, &clone_device);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_device_clone failed with error : %s", get_d2d_error(ret));
-
- ret = conv_device_foreach_service(clone_device, service_foreach_cb, this);
- RETM_IF(ret != CONV_ERROR_NONE, "conv_device_foreach_service failed with error : %s", get_d2d_error(ret));
-
-
-}
-
-static void discovery_cb(conv_device_h device, int result, void* user_data)
-{
- char* value = NULL;
- char* device_name = NULL;
- d2d_view* this = (d2d_view*) user_data;
- DBG("Inside server discovery cb.");
- int ret = conv_device_get_property_string(device, CONV_DEVICE_ID, &value);
- DBG("conv_device_get_property_string failed with error : %s", get_d2d_error(ret));
- DBG("device id = %s", value);
-
- ret = conv_device_get_property_string(device, CONV_DEVICE_NAME, &device_name);
- DBG("conv_device_get_property_string failed with error : %s", get_d2d_error(ret));
- DBG("device name = %s", device_name);
-
- ret = conv_device_get_property_string(device, CONV_DEVICE_TYPE, &value);
- DBG("conv_device_get_property_string failed with error : %s", get_d2d_error(ret));
- DBG( "device TYPE = %s", value);
-
-// this->selected_device = device;
-
-
- if( device_name!=NULL)
- {
- //FIX_ME
- device_data *new_device_data = (device_data*) malloc(sizeof(device_data));
- new_device_data->this = this;
- new_device_data->selected_device = device;
- this->devices_list = g_list_append(this->devices_list, (gpointer) new_device_data);
- elm_list_item_append(found_device_list, device_name, NULL, NULL, device_selected_cb, new_device_data);
- elm_list_go(found_device_list);
- elm_object_part_content_set(this->view->layout, "list_container", found_device_list);
-
- }
-}
-
-
-/**
- * @function _app_destroy_cb
- * @since_tizen 2.3
- * @description App Destroy Cb
- * @parameter void*: Void Pointer
- * @return static void
- */
-static void _app_destroy_cb(void* this)
-{
- RETM_IF(NULL == this, "data is NULL");
-
- d2d_view *view = NULL;
- view = (d2d_view*)this;
- RETM_IF(NULL == view, "view is NULL");
-
- GList *l;
- device_data *d;
- for(l = view->devices_list; l != NULL; l = l->next)
- {
- d = (device_data*)l->data;
- conv_device_destroy(d->selected_device);
- SAFE_DELETE(d);
- }
-
- SAFE_DELETE(view->view);
- SAFE_DELETE(view);
-}
-
-#endif
-#endif