// TITLE: types and definitions used during USB enumeration
#pragma once
#include "usblib.h" //usb::tRequest
namespace usb{
struct tDevice {
virtual ~tDevice() {}
virtual void idle() {}
virtual bool cbGetDescriptor(const tRequest&) {return false;}
virtual bool cbRequestHandler(const tRequest&) {return false;}
virtual void onReset() {devstat &= ~2; config = 0;}
virtual void onDisconnect() {onReset();}
virtual void onSOF() {}
uint8_t config; // 0 = unconfigured, !=0 = configured
uint8_t devstat; // Bit 0: SelfPower, Bit 1: RemoteWakeupEnabled
bool Init();
void Term();
// void RequestDataEP0(uint8_t*,uint32_t);
void SendDataEP0(const uint8_t*,unsigned, const tRequest&);
void PowerStatusSet(bool selfpower) {if (selfpower) devstat|=1; else devstat&=~1;}
void poll();
private:
void pollEP0();
void SendDataEP0(const uint8_t*,unsigned);
};
}
Detected encoding: UTF-8 | 0
|