return false;
}
- if (!CreateGroup()) {
+ if (!FindGroup()) {
LOG(ERROR) << "Failed to create capmgr group";
return false;
}
void MDGManager::GroupFinishCb(int result, void* user_data) {
LOG(INFO) << "Find group finished: " << result;
MDGManager* mdgmgr = static_cast<MDGManager*>(user_data);
- mdgmgr->FindDevices();
-}
-
-void MDGManager::GroupInviteFinishCb(int result, mdg_device_h invited_device,
- void* user_data) {
- LOG(INFO) << "GroupInviteFinishCb called. "
- << "result: " << result;
- MDGManager* mdgmgr = static_cast<MDGManager*>(user_data);
- if (!mdgmgr->AddDevice(invited_device))
- LOG(ERROR) << "Failed to add device to list!";
-}
-
-bool MDGManager::DeviceFoundCb(mdg_device_h device, void* user_data) {
- char* device_id;
- bool is_invited;
- char* model_name;
-
- int ret = mdg_device_info_get_device_id(device, &device_id);
- if (ret != MDG_ERROR_NONE) {
- LOG(ERROR) << "Failed to get device id: " << MDGErrorToString(ret);
- return true;
- }
-
- bool found = false;
- MDGManager* mdgmgr = static_cast<MDGManager*>(user_data);
- for (const auto& id : GListRange<char*>(mdgmgr->device_id_list_)) {
- if (!strcmp(device_id, id)) {
- found = true;
- break;
- }
- }
-
- if (!found) {
- LOG(DEBUG) << "capmgr group doesn't exist in this device";
- free(device_id);
- return true;
- }
-
- ret = mdg_device_info_is_invited(device, &is_invited);
- if (ret != MDG_ERROR_NONE) {
- LOG(ERROR) << "Failed to get is_invited: " << MDGErrorToString(ret);
- free(device_id);
- return true;
- }
-
- ret = mdg_device_info_get_model_name(device, &model_name);
- if (ret != MDG_ERROR_NONE) {
- LOG(ERROR) << "Failed to get model_name: " << MDGErrorToString(ret);
- free(device_id);
- return true;
- }
-
- LOG(INFO) << "Found not invited device. Invite this device. "
- << "device_id: " << device_id
- << ", is_invited: " << is_invited
- << ", model_name: " << model_name;
-
- free(model_name);
- free(device_id);
-
- ret = mdg_group_invite_device(mdgmgr->mdg_handle_, mdgmgr->group_handle_,
- device, const_cast<char*>(kPIN), &MDGManager::GroupInviteFinishCb,
- user_data);
- if (ret != MDG_ERROR_NONE)
- LOG(ERROR) << "Failed to invite device: " << MDGErrorToString(ret);
-
- return true;
-}
-
-void MDGManager::DeviceFinishCb(int result, void* user_data) {
- LOG(INFO) << "Find device finished: " << result;
-
- int ret;
- MDGManager* mdgmgr = static_cast<MDGManager*>(user_data);
- ret = mdg_group_foreach_device(mdgmgr->mdg_handle_, mdgmgr->group_handle_,
+ int ret = mdg_group_foreach_device(mdgmgr->mdg_handle_, mdgmgr->group_handle_,
&MDGManager::GroupForeachCb, user_data);
if (ret != MDG_ERROR_NONE)
LOG(ERROR) << "Failed to call mdg_group_foreach_device: "
}
}
-bool MDGManager::CreateGroup() {
- int ret = mdg_group_create(mdg_handle_, const_cast<char*>(kGroupName));
- if (ret == MDG_ERROR_NONE) {
- LOG(INFO) << "Group for capmgr registered";
- } else if (ret == MDG_ERROR_ALREADY_REGISTERED) {
- LOG(INFO) << "Group for capmgr already registered";
- } else {
- LOG(ERROR) << "Failed to create group: " << MDGErrorToString(ret);
- return false;
- }
-
- ret = mdg_group_find(mdg_handle_, kRequestTimeout,
+bool MDGManager::FindGroup() {
+ int ret = mdg_group_find(mdg_handle_, kRequestTimeout,
&MDGManager::GroupFoundCb, &MDGManager::GroupFinishCb, this);
if (ret != MDG_ERROR_NONE) {
LOG(ERROR) << "Failed to find group: " << MDGErrorToString(ret);
void MDGManager::FindDevices() {
- int ret = mdg_device_find(mdg_handle_, kRequestTimeout, false,
- &MDGManager::DeviceFoundCb, &MDGManager::DeviceFinishCb, this);
- if (ret != MDG_ERROR_NONE)
- LOG(ERROR) << "Failed to find device: " << MDGErrorToString(ret);
}
void MDGManager::RegisterEndpoint() {
void* data);
bool Initialize();
- bool CreateGroup();
+ bool FindGroup();
bool AddDevice(const mdg_device_h device);
int SendData(const std::string& device_id, Command cmd,
const unsigned char* data, size_t len);
static bool GroupFoundCb(mdg_group_type_e type, mdg_group_h group,
void* user_data);
static void GroupFinishCb(int result, void* user_data);
- static void GroupInviteFinishCb(int result, mdg_device_h invited_device,
- void* user_data);
- 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);
void HandlePackageEvent(const std::string& pkgid,