static ArvDevice * arv_gv_interface_open_device (ArvInterface *interface, const char *device_id) { ArvGvInterface *gv_interface; ArvDevice *device = NULL; ArvGvInterfaceDeviceInfos *device_infos; GInetAddress *device_address; gv_interface = ARV_GV_INTERFACE (interface); if (device_id == NULL) { GList *device_list; device_list = g_hash_table_get_values (gv_interface->priv->devices); device_infos = device_list != NULL ? device_list->data : NULL; g_list_free (device_list); } else { device_infos = g_hash_table_lookup (gv_interface->priv->devices, device_id); if (device_infos == NULL) device_infos = g_hash_table_lookup (gv_interface->priv->devices_by_mac, device_id); } if (device_infos == NULL) return NULL; device_address = g_inet_address_new_from_bytes (&device_infos->discovery_data[ARV_GVBS_CURRENT_IP_ADDRESS_OFFSET], G_SOCKET_FAMILY_IPV4); device = arv_gv_device_new (device_infos->interface_address, device_address); g_object_unref (device_address); return device; }
static ArvDevice * arv_gv_interface_open_device (ArvInterface *interface, const char *device_id) { ArvGvInterface *gv_interface; ArvDevice *device = NULL; ArvGvInterfaceDeviceInfos *device_infos; GInetAddress *device_address; gv_interface = ARV_GV_INTERFACE (interface); if (device_id == NULL) { GList *device_list; device_list = g_hash_table_get_values (gv_interface->priv->devices); device_infos = device_list != NULL ? device_list->data : NULL; g_list_free (device_list); } else device_infos = g_hash_table_lookup (gv_interface->priv->devices, device_id); if (device_infos == NULL) return NULL; device_address = _device_infos_to_ginetaddress (device_infos); device = arv_gv_device_new (device_infos->interface_address, device_address); g_object_unref (device_address); return device; }