From be8eace83b3a30e4c8bfc817fbf14c81a3bb6292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Wed, 4 Apr 2018 16:17:50 +0200 Subject: [PATCH] [usb] Add variable to Device to tell if it should reset on disconnect Change-Id: I69a960661aea145bce02ba7a103c61deff7caf61 --- ion/src/device/usb/calculator.cpp | 3 +-- ion/src/device/usb/device.h | 7 ++++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ion/src/device/usb/calculator.cpp b/ion/src/device/usb/calculator.cpp index 3ab07250f..459f86e9e 100644 --- a/ion/src/device/usb/calculator.cpp +++ b/ion/src/device/usb/calculator.cpp @@ -24,8 +24,7 @@ bool Calculator::PollAndReset() { if (!c.isSoftDisconnected()) { c.detach(); } - - return false; + return c.resetOnDisconnect(); } Descriptor * Calculator::descriptor(uint8_t type, uint8_t index) { diff --git a/ion/src/device/usb/device.h b/ion/src/device/usb/device.h index 77319a0a1..8191a1103 100644 --- a/ion/src/device/usb/device.h +++ b/ion/src/device/usb/device.h @@ -16,12 +16,15 @@ class Device : public RequestRecipient { public: Device(Interface * interface) : RequestRecipient(&m_ep0), - m_ep0(this, interface) + m_ep0(this, interface), + m_resetOnDisconnect(false) { } void poll(); bool isSoftDisconnected() const; void detach(); + bool resetOnDisconnect() { return m_resetOnDisconnect; } + void setResetOnDisconnect(bool reset) { m_resetOnDisconnect = reset; } protected: virtual Descriptor * descriptor(uint8_t type, uint8_t index) = 0; virtual void setActiveConfiguration(uint8_t configurationIndex) = 0; @@ -52,6 +55,8 @@ private: bool getDescriptor(SetupPacket * request, uint8_t * transferBuffer, uint16_t * transferBufferLength, uint16_t transferBufferMaxLength); bool getConfiguration(uint8_t * transferBuffer, uint16_t * transferBufferLength); bool setConfiguration(SetupPacket * request); + + bool m_resetOnDisconnect; }; }