From: Sangyoon Jang Date: Fri, 24 Aug 2018 08:07:05 +0000 (+0900) Subject: Add group invited event handler X-Git-Tag: submit/tizen/20190208.015210~29 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dbdc0faa23385b3a6c675be3f453f357fd6b64ec;p=platform%2Fcore%2Fappfw%2Fcapmgr.git Add group invited event handler If local device is invited by not invited remote device, try invite that remote device. Change-Id: If69867bf3934dec3eed412324fce5fda692afda3 Signed-off-by: Sangyoon Jang --- diff --git a/src/common/mdg_manager.cc b/src/common/mdg_manager.cc index 9657757..1b659b5 100644 --- a/src/common/mdg_manager.cc +++ b/src/common/mdg_manager.cc @@ -149,6 +149,13 @@ bool MDGManager::Initialize() { return false; } + ret = mdg_set_invited_event_cb(mdg_handle_, &MDGManager::GroupInvitedCb, + this); + if (ret != MDG_ERROR_NONE) { + LOG(ERROR) << "Failed to set invited event cb: " << MDGErrorToString(ret); + return false; + } + if (!CreateGroup()) { LOG(ERROR) << "Failed to create capmgr group"; return false; @@ -323,6 +330,39 @@ bool MDGManager::GroupForeachCb(mdg_device_h device, void* user_data) { return true; } +void MDGManager::GroupInvitedCb(mdg_group_h group, void* user_data) { + char* device_id; + int ret = mdg_group_info_get_device_id(group, &device_id); + if (ret != MDG_ERROR_NONE) { + LOG(ERROR) << "Failed to get device id: " << MDGErrorToString(ret); + return; + } + + LOG(INFO) << "Invited by device id: " << device_id; + + bool found = false; + MDGManager* mdgmgr = static_cast(user_data); + for (auto& dev : GListRange(mdgmgr->device_list_)) { + char* dev_id; + int ret = mdg_device_info_get_device_id(dev, &dev_id); + if (ret != MDG_ERROR_NONE) + continue; + ret = strcmp(dev_id, device_id); + free(dev_id); + if (!ret) { + found = true; + break; + } + } + free(device_id); + + if (!found) { + LOG(INFO) << "Invited by not invited device. " + << "Try find and invite this device."; + mdgmgr->FindDevices(); + } +} + bool MDGManager::CreateGroup() { int ret = mdg_group_create(mdg_handle_, const_cast(kGroupName)); if (ret == MDG_ERROR_NONE) { diff --git a/src/common/mdg_manager.h b/src/common/mdg_manager.h index 4319372..2a3e328 100644 --- a/src/common/mdg_manager.h +++ b/src/common/mdg_manager.h @@ -60,6 +60,7 @@ class MDGManager : public ConnectionManager { static bool DeviceFoundCb(mdg_device_h device, void* user_data); static void DeviceFinishCb(int result, void* user_data); static bool GroupForeachCb(mdg_device_h device, void* user_data); + static void GroupInvitedCb(mdg_group_h group, void* user_data); mdg_h mdg_handle_; mdg_group_h group_handle_;