Linux::_usb PHP Method

_usb() private method

USB devices
private _usb ( ) : array
return array
    private function _usb()
    {
        $devnum = -1;
        if (CommonFunctions::executeProgram('lsusb', '', $bufr, PSI_DEBUG) && trim($bufr) !== "") {
            $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
            foreach ($bufe as $buf) {
                $device = preg_split("/ /", $buf, 7);
                if (isset($device[6]) && trim($device[6]) != "") {
                    $dev = new HWDevice();
                    $dev->setName(trim($device[6]));
                    $this->sys->setUsbDevices($dev);
                } elseif (isset($device[5]) && trim($device[5]) != "") {
                    $dev = new HWDevice();
                    $dev->setName("unknown");
                    $this->sys->setUsbDevices($dev);
                }
            }
        } elseif (CommonFunctions::rfts('/proc/bus/usb/devices', $bufr, 0, 4096, false)) {
            $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
            foreach ($bufe as $buf) {
                if (preg_match('/^T/', $buf)) {
                    $devnum++;
                    $results[$devnum] = "";
                } elseif (preg_match('/^S:/', $buf)) {
                    list($key, $value) = preg_split('/: /', $buf, 2);
                    list($key, $value2) = preg_split('/=/', $value, 2);
                    if (trim($key) == "Manufacturer" && preg_match("/^linux\\s/i", trim($value2))) {
                        $value2 = "Linux";
                    }
                    if (trim($key) != "SerialNumber") {
                        $results[$devnum] .= " " . trim($value2);
                    }
                }
            }
            foreach ($results as $var) {
                $dev = new HWDevice();
                $var = trim($var);
                if ($var != "") {
                    $dev->setName($var);
                } else {
                    $dev->setName("unknown");
                }
                $this->sys->setUsbDevices($dev);
            }
        } else {
            $usbdevices = glob('/sys/bus/usb/devices/*/idProduct', GLOB_NOSORT);
            if (($total = count($usbdevices)) > 0) {
                $buf = "";
                for ($i = 0; $i < $total; $i++) {
                    if (CommonFunctions::rfts($usbdevices[$i], $buf, 1, 4096, false) && trim($buf) != "") {
                        //is readable
                        $product = preg_replace("/\\/idProduct\$/", "/product", $usbdevices[$i]);
                        $manufacturer = preg_replace("/\\/idProduct\$/", "/manufacturer", $usbdevices[$i]);
                        $usbbuf = "";
                        if (CommonFunctions::fileexists($manufacturer) && CommonFunctions::rfts($manufacturer, $buf, 1, 4096, false) && trim($buf) != "") {
                            if (preg_match("/^linux\\s/i", trim($buf))) {
                                $usbbuf = "Linux";
                            } else {
                                $usbbuf = trim($buf);
                            }
                        }
                        if (CommonFunctions::fileexists($product) && CommonFunctions::rfts($product, $buf, 1, 4096, false) && trim($buf) != "") {
                            $usbbuf .= " " . trim($buf);
                        }
                        $dev = new HWDevice();
                        if (trim($usbbuf) != "") {
                            $dev->setName(trim($usbbuf));
                        } else {
                            $dev->setName("unknown");
                        }
                        $this->sys->setUsbDevices($dev);
                    }
                }
            }
        }
    }