diff options
author | Kari Oikarinen <kari.oikarinen@qt.io> | 2018-09-05 17:10:27 +0300 |
---|---|---|
committer | Kari Oikarinen <kari.oikarinen@qt.io> | 2018-09-11 06:25:09 +0000 |
commit | a79fc340804358f1b951fa8ce0e309e54f151fca (patch) | |
tree | fcf1e04c3f05cb8060da591e894a92af869e8929 | |
parent | 0412faf51df1dd15dd79ae7d2ecd0a053768c9fa (diff) |
Disable USB gadget when shutting down
This was previously done by the init script. Move it inside qdbd like the
initialization was moved previously.
Task-number: QTBUG-63029
Change-Id: I869138acd579f9f3f1f3af1ebf5583e7882296fa
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
-rw-r--r-- | qdbd/usb-gadget/usbgadget.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/qdbd/usb-gadget/usbgadget.cpp b/qdbd/usb-gadget/usbgadget.cpp index 599de48..265527e 100644 --- a/qdbd/usb-gadget/usbgadget.cpp +++ b/qdbd/usb-gadget/usbgadget.cpp @@ -120,6 +120,11 @@ const struct { }, }; +QString gadgetConfigPath() +{ + return Configuration::gadgetConfigFsDir() + QLatin1String("/UDC"); +} + UsbGadget::UsbGadget() : m_controlEndpoint(Configuration::functionFsDir() + "/ep0"), m_outEndpoint(Configuration::functionFsDir() + "/ep1"), @@ -149,6 +154,19 @@ UsbGadget::~UsbGadget() m_writeThread->terminate(); m_readThread->wait(); } + + // Disable USB gadget configuration + QFile gadgetConfigFile{gadgetConfigPath()}; + if (gadgetConfigFile.open(QIODevice::WriteOnly | QIODevice::Unbuffered)) { + if (gadgetConfigFile.write("") != -1) + qCDebug(usbC) << "Disabled USB gadget UDC driver"; + else + qCWarning(usbC) << "Could not disable USB gadget UDC driver when quitting"; + } else { + qCWarning(usbC) << "Could not open USB gadget UDC file for writing to disable"; + } + gadgetConfigFile.close(); + m_inEndpoint.close(); m_outEndpoint.close(); m_controlEndpoint.close(); @@ -295,20 +313,19 @@ void UsbGadget::initializeGadgetWithUdc() return; } - const QString gadgetConfigPath = Configuration::gadgetConfigFsDir() + QLatin1String("/UDC"); - QFile gadgetConfigFile{gadgetConfigPath}; + QFile gadgetConfigFile{gadgetConfigPath()}; if (!gadgetConfigFile.exists()) { qCCritical(usbC) << "Failed to initialize USB gadget, no gadget file found in" - << gadgetConfigPath; + << gadgetConfigPath(); return; } if (!gadgetConfigFile.open(QIODevice::ReadWrite | QIODevice::Unbuffered)) { - qCCritical(usbC) << "Failed to initialize USB gadget, can't open" << gadgetConfigPath; + qCCritical(usbC) << "Failed to initialize USB gadget, can't open" << gadgetConfigPath(); return; } if (gadgetConfigFile.write(driverName.toUtf8()) == -1) { qCCritical(usbC) << "Failed to initialize USB gadget, can't write to" - << gadgetConfigPath; + << gadgetConfigPath(); return; } gadgetConfigFile.close(); |