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;
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<MDGManager*>(user_data);
+ for (auto& dev : GListRange<mdg_device_h>(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<char*>(kGroupName));
if (ret == MDG_ERROR_NONE) {
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_;