static int refresh = 0;
void device_change(device_change_t status, char *uuid, char *name)
{
switch(status) {
case DEVICE_ADD:
printf("**ADD device '%s' (%s)\n",
name, uuid);
refresh = 1;
break;
case DEVICE_DEL:
printf("**DEL device '%s' (%s)\n",
name, uuid);
refresh = 1;
break;
case DEVICE_UPDATE:
break;
}
}
int main( int argc, char **argv )
{
int key;
char buffer[256];
CgUpnpDevice *dev;
loom_device_t device;
if (loom_init()) {
printf("Failed to start UPnP\n");
exit(1);
}
loom_discovery_listener(device_change);
if (loom_start()) {
printf("Failed to join UPnP\n");
loom_free();
exit(2);
}
while(1) {
char *r;
printf("Push return to list MediaServer, 'q' to quit. Enter uuid to connect\n");
fgets(buffer, sizeof(buffer), stdin);
if ((r = strchr(buffer, '\r'))) *r = 0;
if ((r = strchr(buffer, '\n'))) *r = 0;
if (*buffer=='q') break;
if (!strncmp("uuid:", buffer, 5)) {
list_server(buffer);
}
if (refresh)
printf("Refresh was set.\n");
refresh = 0;
while( loom_device_list( &device ) > 0 ) {
printf("'%s' (%s)\n", device.friendlyName, device.uuid);
} // for all devices
}
printf("Quitting\n");
loom_stop();
loom_free();
return 0;
}