mirror of
https://github.com/digistump/DigistumpArduino.git
synced 2025-04-27 23:29:01 -07:00
mouse and cdc fixes
This commit is contained in:
parent
56dda1007d
commit
a9864c18e8
@ -42,21 +42,26 @@ void DigiCDCDevice::begin(){
|
||||
usbBegin();
|
||||
|
||||
}
|
||||
size_t DigiCDCDevice::write(uint8_t chr)
|
||||
size_t DigiCDCDevice::write(uint8_t c)
|
||||
{
|
||||
if(RingBuffer_IsFull(&txBuf))
|
||||
{
|
||||
refresh();
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
RingBuffer_Insert(&txBuf,chr);
|
||||
RingBuffer_Insert(&txBuf,c);
|
||||
DigiCDCDevice::delay(45); //ouch its slow but it ensures it will work no matter how long of a string is thrown at it
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
int DigiCDCDevice::available()
|
||||
{
|
||||
refresh();
|
||||
return RingBuffer_GetCount(&rxBuf);
|
||||
}
|
||||
|
||||
@ -64,12 +69,15 @@ int DigiCDCDevice::read()
|
||||
{
|
||||
if(RingBuffer_IsEmpty(&rxBuf))
|
||||
{
|
||||
refresh();
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
refresh();
|
||||
return RingBuffer_Remove(&rxBuf);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int DigiCDCDevice::peek()
|
||||
@ -82,22 +90,21 @@ int DigiCDCDevice::peek()
|
||||
{
|
||||
return RingBuffer_Peek(&rxBuf);
|
||||
}
|
||||
refresh();
|
||||
}
|
||||
|
||||
|
||||
void DigiCDCDevice::task(void)
|
||||
{
|
||||
|
||||
usbPollWrapper();
|
||||
refresh();
|
||||
|
||||
}
|
||||
|
||||
void DigiCDCDevice::refresh(void)
|
||||
{
|
||||
|
||||
_delay_ms(1);
|
||||
usbPollWrapper();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -112,7 +119,7 @@ void DigiCDCDevice::end(void)
|
||||
}
|
||||
|
||||
DigiCDCDevice::operator bool() {
|
||||
usbPollWrapper();
|
||||
refresh();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -47,10 +47,6 @@ class DigiCDCDevice : public Stream {
|
||||
virtual int read(void);
|
||||
virtual void flush(void);
|
||||
virtual size_t write(uint8_t);
|
||||
inline size_t write(unsigned long n) { return write((uint8_t)n); }
|
||||
inline size_t write(long n) { return write((uint8_t)n); }
|
||||
inline size_t write(unsigned int n) { return write((uint8_t)n); }
|
||||
inline size_t write(int n) { return write((uint8_t)n); }
|
||||
using Print::write;
|
||||
operator bool();
|
||||
private:
|
||||
|
@ -150,33 +150,25 @@ void clearMove() {
|
||||
class DigiMouseDevice {
|
||||
public:
|
||||
DigiMouseDevice () {
|
||||
|
||||
}
|
||||
|
||||
char isConnected()
|
||||
{
|
||||
return usb_hasCommed;
|
||||
}
|
||||
|
||||
void begin(){
|
||||
|
||||
cli();
|
||||
PORTB &= ~(_BV(USB_CFG_DMINUS_BIT) | _BV(USB_CFG_DPLUS_BIT));
|
||||
usbDeviceDisconnect();
|
||||
_delay_ms(250);
|
||||
usbDeviceConnect();
|
||||
|
||||
rt_usbHidReportDescriptor = mouse_usbHidReportDescriptor;
|
||||
rt_usbHidReportDescriptorSize = sizeof(mouse_usbHidReportDescriptor);
|
||||
rt_usbDeviceDescriptor = usbDescrDevice;
|
||||
rt_usbDeviceDescriptorSize = sizeof(usbDescrDevice);
|
||||
|
||||
}
|
||||
|
||||
void begin() {
|
||||
cli();
|
||||
usbDeviceDisconnect();
|
||||
_delay_ms(200);
|
||||
usbDeviceConnect();
|
||||
|
||||
usbInit();
|
||||
|
||||
sei();
|
||||
last_report_time = millis();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void refresh() {
|
||||
@ -293,7 +285,6 @@ extern "C"{
|
||||
// USB_PUBLIC uchar usbFunctionSetup
|
||||
|
||||
uchar usbFunctionSetup(uchar data[8]) {
|
||||
usb_hasCommed = 1;
|
||||
usbRequest_t *rq = (usbRequest_t *)data;
|
||||
|
||||
usbMsgPtr = reportBuffer;
|
||||
@ -344,4 +335,4 @@ extern "C"{
|
||||
#endif
|
||||
|
||||
|
||||
#endif // __DigiKeyboard_h__
|
||||
#endif // __DigiMouse_h__
|
||||
|
@ -6,7 +6,6 @@
|
||||
|
||||
void setup() {
|
||||
DigiMouse.begin(); //start or reenumerate USB - BREAKING CHANGE from old versions that didn't require this
|
||||
//while(!DigiMouse.isConnected()) {} //don't run sketch until USB is connected
|
||||
}
|
||||
|
||||
void loop() {
|
||||
@ -32,8 +31,11 @@ void loop() {
|
||||
|
||||
//or you can use these functions to click
|
||||
DigiMouse.rightClick();
|
||||
DigiMouse.delay(500);
|
||||
DigiMouse.leftClick();
|
||||
DigiMouse.delay(500);
|
||||
DigiMouse.middleClick();
|
||||
DigiMouse.delay(500);
|
||||
|
||||
//for compatability with other libraries you can also use DigiMouse.move(X, Y, scroll, buttons)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user