static void on_network_light_available (GUPnPControlPoint *cp, GUPnPDeviceProxy *light_proxy, gpointer user_data) { GUPnPServiceProxy *switch_proxy; GUPnPServiceProxy *dimming_proxy; GUPnPServiceInfo *info; info = gupnp_device_info_get_service (GUPNP_DEVICE_INFO (light_proxy), SWITCH_SERVICE); switch_proxy = GUPNP_SERVICE_PROXY (info); if (switch_proxy) { switch_proxies = g_list_append (switch_proxies, switch_proxy); } info = gupnp_device_info_get_service (GUPNP_DEVICE_INFO (light_proxy), DIMMING_SERVICE); dimming_proxy = GUPNP_SERVICE_PROXY (info); if (dimming_proxy) { dimming_proxies = g_list_append (dimming_proxies, dimming_proxy); } }
static void got_introspection (GUPnPServiceInfo *info, GUPnPServiceIntrospection *introspection, const GError *error, gpointer user_data) { GtkTreeModel *model; GtkTreeIter *service_iter; service_iter = (GtkTreeIter *) user_data; model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); g_assert (model != NULL); append_introspection (GUPNP_SERVICE_PROXY (info), introspection, GTK_TREE_STORE (model), service_iter); g_slice_free (GtkTreeIter, service_iter); if (introspection != NULL) { g_object_unref (introspection); /* Services are subscribed to by default */ gupnp_service_proxy_set_subscribed (GUPNP_SERVICE_PROXY (info), TRUE); } }
static void gupnp_control_point_resource_unavailable (GSSDPResourceBrowser *resource_browser, const char *usn) { GUPnPControlPoint *control_point; char *udn, *service_type; control_point = GUPNP_CONTROL_POINT (resource_browser); /* Parse USN */ if (!parse_usn (usn, &udn, &service_type)) return; /* Find proxy */ if (service_type) { GList *l = find_service_node (control_point, udn, service_type); if (l) { GUPnPServiceProxy *proxy; /* Remove proxy */ proxy = GUPNP_SERVICE_PROXY (l->data); control_point->priv->services = g_list_delete_link (control_point->priv->services, l); g_signal_emit (control_point, signals[SERVICE_PROXY_UNAVAILABLE], 0, proxy); g_object_unref (proxy); } } else { GList *l = find_device_node (control_point, udn); if (l) { GUPnPDeviceProxy *proxy; /* Remove proxy */ proxy = GUPNP_DEVICE_PROXY (l->data); control_point->priv->devices = g_list_delete_link (control_point->priv->devices, l); g_signal_emit (control_point, signals[DEVICE_PROXY_UNAVAILABLE], 0, proxy); g_object_unref (proxy); } } g_free (udn); g_free (service_type); }
void set_all_load_level (gint load_level) { GList *proxy_node; for (proxy_node = dimming_proxies; proxy_node; proxy_node = g_list_next (proxy_node)) { GUPnPServiceProxy *proxy; char *action_name; proxy = GUPNP_SERVICE_PROXY (proxy_node->data); action_name = g_strdup ("SetLoadLevelTarget"); gupnp_service_proxy_begin_action (proxy, action_name, on_service_proxy_action_ret, action_name, "newLoadlevelTarget", G_TYPE_UINT, load_level, NULL); } }
void set_all_status (gboolean status) { GList *proxy_node; for (proxy_node = switch_proxies; proxy_node; proxy_node = g_list_next (proxy_node)) { GUPnPServiceProxy *proxy; char *action_name; proxy = GUPNP_SERVICE_PROXY (proxy_node->data); action_name = g_strdup ("SetTarget"); gupnp_service_proxy_begin_action (proxy, action_name, on_service_proxy_action_ret, action_name, "newTargetValue", G_TYPE_BOOLEAN, status, NULL); } }