]> git.webhop.me Git - lcd4linux.git/commitdiff
auto-detect Samsung SPF
authorTangoCash <eric@loxat.de>
Tue, 3 May 2016 18:30:23 +0000 (20:30 +0200)
committerTangoCash <eric@loxat.de>
Tue, 3 May 2016 18:30:23 +0000 (20:30 +0200)
when setting model to 'SPF-AUTO'

drv_SamsungSPF.c

index 9148435be37a2d1f8c66ba3a90a6b8e37edf960f..c70694e05254d425e8a0e21e820bc703cff936ea 100644 (file)
@@ -72,6 +72,13 @@ struct SPFdev {
 };
 
 static struct SPFdev spfDevices[] = {
+    {
+     .type = "SPF-AUTO",
+     .vendorID = 0x04e8,
+     .productID = {0xffff, 0xffff},
+     .xRes = 1,
+     .yRes = 1,
+     },
     {
      .type = "SPF-72H",
      .vendorID = 0x04e8,
@@ -253,6 +260,7 @@ static void drv_SamsungSPF_find()
     /* open USB device */
     struct usb_bus *bus;
     struct usb_device *dev;
+       int i;
 
     usb_init();
     usb_find_busses();
@@ -261,20 +269,41 @@ static void drv_SamsungSPF_find()
     for (bus = usb_busses; bus; bus = bus->next) {
        for (dev = bus->devices; dev; dev = dev->next) {
            if (dev->descriptor.idVendor == myFrame->vendorID) {
-               if (dev->descriptor.idProduct == myFrame->productID.storageMode) {
+                       if (myFrame->productID.storageMode == 0xFFFF) {
+                               for (i = 0; i < numFrames; i++) {
+                               if (dev->descriptor.idProduct == spfDevices[i].productID.storageMode) {
+
+                               info("Samsung photoframe in Mass Storage mode found.");
+                                       myFrame = &spfDevices[i];
+                               info("%s: Autodetect model %s.", Name, spfDevices[i].type);
+                               myDev = dev;
+
+                               return;
+                               } else if (dev->descriptor.idProduct == spfDevices[i].productID.monitorMode) {
 
-                   info("Samsung photoframe in Mass Storage mode found.");
-                   myDev = dev;
+                               info("Samsung photoframe in Custom Product mode found.");
+                                       myFrame = &spfDevices[i];
+                               info("%s: Autodetect model %s.", Name, spfDevices[i].type);
+                               myDev = dev;
 
-                   return;
-               } else if (dev->descriptor.idProduct == myFrame->productID.monitorMode) {
+                               return;
+                               }}
+                       } else {
+                               if (dev->descriptor.idProduct == myFrame->productID.storageMode) {
 
-                   info("Samsung photoframe in Custom Product mode found.");
-                   myDev = dev;
+                               info("Samsung photoframe in Mass Storage mode found.");
+                               myDev = dev;
 
-                   return;
+                       return;
+                               } else if (dev->descriptor.idProduct == myFrame->productID.monitorMode) {
+
+                               info("Samsung photoframe in Custom Product mode found.");
+                               myDev = dev;
+
+                               return;
+                               }
+               }
                }
-           }
        }
     }
 
@@ -569,6 +598,10 @@ int drv_SamsungSPF_init(const char *section, const int quiet)
 
     /* try to open USB device */
     drv_SamsungSPF_find();
+       while (!myDev) { //endless loop waitung for SPF
+               sleep(5);
+       drv_SamsungSPF_find();
+       }
     if (!myDev) {
        error("%s: No Samsung '%s' found!", Name, myFrame->type);
        return -1;