Libloom sample

From Lundman Wiki
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;
}