Este ejemplo muestra como obtener información acerca de todos los dispositivos y servicios. Esto inicia un bucle infinito (usando CLI), y si alguno de los dispositivos o servicios disponibles es hayado, la función callback correcta será invocada.
Ejemplo #1 Buscar toos los dispositivos y servicios UPnP.
<?php
/* Callback para dispositivo disponible */
function device_proxy_available_cb($proxy, $arg)
{
$info = gupnp_device_info_get($proxy);
$type = $info['device_type'];
$location = $info['location'];
printf("Dispositivo Disponible:\n");
printf("\ttipo: %s\n", $type);
printf("\tubicación: %s\n", $location);
}
/* Callback para servicio disponible */
function service_proxy_available_cb($proxy, $arg)
{
$info = gupnp_service_info_get($proxy);
$type = $info['service_type'];
$location = $info['location'];
printf("Servicio Disponible:\n");
printf("\ttipo: %s\n", $type);
printf("\tubicación: %s\n", $location);
}
/* Crear el contexto UPnP */
$context = gupnp_context_new();
if (!$context) {
printf("Error creando el contexto GUPnP\n");
exit(-1);
}
/* Estamos interesados en todo */
$cp = gupnp_control_point_new($context, "ssdp:all");
/* Carga callbacks */
gupnp_control_point_callback_set($cp,
GUPNP_SIGNAL_DEVICE_PROXY_AVAILABLE, 'device_proxy_available_cb');
gupnp_control_point_callback_set($cp,
GUPNP_SIGNAL_SERVICE_PROXY_AVAILABLE, 'service_proxy_available_cb');
/* Inicio para navegar (lazo infinito, Ctrl-C para interrumpir) */
gupnp_control_point_browse_start($cp);
?>