File usb_host.h¶
File List > external-docs > libDaisy > src > hid > usb_host.h
Go to the documentation of this file
Source Code¶
#ifndef USB_HOST_H
#define USB_HOST_H
#include <cstdint>
#include "usbh_def.h"
namespace daisy
{
typedef enum
{
APPLICATION_IDLE = 0,
APPLICATION_START,
APPLICATION_READY,
APPLICATION_DISCONNECT
} ApplicationTypeDef;
class USBHostHandle
{
public:
enum class Result
{
OK,
BUSY,
FAIL,
NOT_SUPPORTED,
UNRECOVERED_ERROR,
ERROR_SPEED_UNKNOWN
};
typedef void (*ConnectCallback)(void* data);
typedef void (*DisconnectCallback)(void* data);
typedef void (*ClassActiveCallback)(void* userdata);
typedef void (*ErrorCallback)(void* data);
struct Config
{
Config()
: connect_callback(nullptr),
disconnect_callback(nullptr),
class_active_callback(nullptr),
error_callback(nullptr),
userdata(nullptr)
{
}
ConnectCallback connect_callback;
DisconnectCallback disconnect_callback;
ClassActiveCallback class_active_callback;
ErrorCallback error_callback;
void* userdata;
};
Result RegisterClass(USBH_ClassTypeDef* pClass);
Result Init(USBHostHandle::Config& config);
Result Deinit();
bool IsActiveClass(USBH_ClassTypeDef* usbClass);
Result Process();
Result ReEnumerate();
bool GetReady();
bool GetPresent();
const char* GetProductName();
bool IsPortEnabled();
bool IsDeviceConnected();
USBHostHandle() : pimpl_(nullptr) {}
USBHostHandle(const USBHostHandle& other) = default;
USBHostHandle& operator=(const USBHostHandle& other) = default;
class Impl;
private:
Impl* pimpl_;
};
} // namespace daisy
#endif // DSY_MSD