mirror of
https://github.com/gdsports/USBHost_t36
synced 2024-11-28 20:02:14 -05:00
Add Mouse driver from wwatson
https://forum.pjrc.com/threads/45740-USB-Host-Mouse-Driver
This commit is contained in:
parent
e345c0360d
commit
75ac4d21e6
@ -654,4 +654,37 @@ private:
|
|||||||
Transfer_t mytransfers[7] __attribute__ ((aligned(32)));
|
Transfer_t mytransfers[7] __attribute__ ((aligned(32)));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MouseController : public USBDriver {
|
||||||
|
public:
|
||||||
|
MouseController(USBHost &host) { init(); }
|
||||||
|
MouseController(USBHost *host) { init(); }
|
||||||
|
bool available() { return mouseEvent; }
|
||||||
|
void mouseDataClear();
|
||||||
|
uint8_t getButtons() { return buttons; }
|
||||||
|
int8_t getMouseX() { return mouseX; }
|
||||||
|
int8_t getMouseY() { return mouseY; }
|
||||||
|
int8_t getWheel() { return wheel; }
|
||||||
|
protected:
|
||||||
|
virtual bool claim(Device_t *device, int type, const uint8_t *descriptors, uint32_t len);
|
||||||
|
virtual void control(const Transfer_t *transfer);
|
||||||
|
virtual void disconnect();
|
||||||
|
static void callback(const Transfer_t *transfer);
|
||||||
|
void new_data(const Transfer_t *transfer);
|
||||||
|
void init();
|
||||||
|
private:
|
||||||
|
void update();
|
||||||
|
Pipe_t *datapipe;
|
||||||
|
setup_t setup;
|
||||||
|
uint32_t packetSize;
|
||||||
|
uint8_t buttons;
|
||||||
|
int8_t mouseX;
|
||||||
|
int8_t mouseY;
|
||||||
|
int8_t wheel;
|
||||||
|
bool mouseEvent = false;
|
||||||
|
uint8_t report[20]; // Set to largest packet size 20 bytes
|
||||||
|
uint8_t prev_report[20]; // Same as above
|
||||||
|
Pipe_t mypipes[2] __attribute__ ((aligned(32)));
|
||||||
|
Transfer_t mytransfers[4] __attribute__ ((aligned(32)));
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
55
examples/Mouse/Mouse.ino
Normal file
55
examples/Mouse/Mouse.ino
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
// Simple test of USB Host Mouse/Keyboard
|
||||||
|
//
|
||||||
|
// This example is in the public domain
|
||||||
|
|
||||||
|
#include "USBHost_t36.h"
|
||||||
|
|
||||||
|
USBHost myusb;
|
||||||
|
USBHub hub1(myusb);
|
||||||
|
USBHub hub2(myusb);
|
||||||
|
USBHub hub3(myusb);
|
||||||
|
KeyboardController keyboard1(myusb);
|
||||||
|
KeyboardController keyboard2(myusb);
|
||||||
|
MouseController mouse1(myusb);
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
while (!Serial) ; // wait for Arduino Serial Monitor
|
||||||
|
Serial.println("USB Host Testing");
|
||||||
|
myusb.begin();
|
||||||
|
keyboard1.attachPress(OnPress);
|
||||||
|
keyboard2.attachPress(OnPress);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
myusb.Task();
|
||||||
|
if(mouse1.available()) {
|
||||||
|
Serial.print("buttons = ");
|
||||||
|
Serial.print(mouse1.getButtons(),DEC);
|
||||||
|
Serial.print(", wheel = ");
|
||||||
|
Serial.print(mouse1.getWheel(),DEC);
|
||||||
|
Serial.print(", mouseX = ");
|
||||||
|
Serial.print(mouse1.getMouseX(),DEC);
|
||||||
|
Serial.print(", mouseY = ");
|
||||||
|
Serial.println(mouse1.getMouseY(),DEC);
|
||||||
|
mouse1.mouseDataClear();
|
||||||
|
}
|
||||||
|
delay(50);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OnPress(int key)
|
||||||
|
{
|
||||||
|
Serial.print("key '");
|
||||||
|
Serial.print((char)key);
|
||||||
|
Serial.print("' ");
|
||||||
|
Serial.println(key);
|
||||||
|
//Serial.print("key ");
|
||||||
|
//Serial.print((char)keyboard1.getKey());
|
||||||
|
//Serial.print(" ");
|
||||||
|
//Serial.print((char)keyboard2.getKey());
|
||||||
|
//Serial.println();
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
USBHost KEYWORD1
|
USBHost KEYWORD1
|
||||||
USBHub KEYWORD1
|
USBHub KEYWORD1
|
||||||
KeyboardController KEYWORD1
|
KeyboardController KEYWORD1
|
||||||
|
MouseController KEYWORD1
|
||||||
MIDIDevice KEYWORD1
|
MIDIDevice KEYWORD1
|
||||||
Task KEYWORD2
|
Task KEYWORD2
|
||||||
getKey KEYWORD2
|
getKey KEYWORD2
|
||||||
@ -8,3 +9,7 @@ getModifiers KEYWORD2
|
|||||||
getOemKey KEYWORD2
|
getOemKey KEYWORD2
|
||||||
attachPress KEYWORD2
|
attachPress KEYWORD2
|
||||||
attachRelease KEYWORD2
|
attachRelease KEYWORD2
|
||||||
|
getButtons KEYWORD2
|
||||||
|
getWheel KEYWORD2
|
||||||
|
getMouseX KEYWORD2
|
||||||
|
getMouseY KEYWORD2
|
||||||
|
Loading…
Reference in New Issue
Block a user