#pragma once #include "ehs/Types.h" namespace ehs { class UsbBase { private: UInt_32 bus; UInt_32 address; public: virtual ~UsbBase() = default; UsbBase(); UsbBase(UInt_32 bus, UInt_32 address); UsbBase(UsbBase&& usb) noexcept; UsbBase(const UsbBase& usb); UsbBase& operator=(UsbBase&& usb) noexcept; UsbBase& operator=(const UsbBase& usb); virtual void Initialize() = 0; virtual void Release() = 0; virtual bool IsInitialized() const = 0; virtual Size Send(const Byte* data, Size size) = 0; void BulkSend(const Byte* data, Size size); virtual Size Receive(Byte* data, Size size) = 0; void BulkReceive(Byte** data, Size* size); UInt_32 GetBus() const; UInt_32 GetAddress() const; bool IsValid() const; }; }