Skip to content

Commit 1e26788

Browse files
committed
adding HID exmaple
1 parent 82ed403 commit 1e26788

File tree

4 files changed

+54
-4
lines changed

4 files changed

+54
-4
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include "Adafruit_TinyUSB.h"
2+
3+
enum
4+
{
5+
RID_KEYBOARD = 1,
6+
RID_MOUSE
7+
};
8+
9+
// HID report descriptor using TinyUSB's template
10+
uint8_t const desc_hid_report[] =
11+
{
12+
HID_REPORT_DESC_KEYBOARD( HID_REPORT_ID(RID_KEYBOARD), ),
13+
HID_REPORT_DESC_MOUSE ( HID_REPORT_ID(RID_MOUSE), )
14+
};
15+
16+
Adafruit_USBD_HID usb_hid;
17+
18+
// the setup function runs once when you press reset or power the board
19+
void setup()
20+
{
21+
usb_hid.setPollInterval(10);
22+
usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report));
23+
usb_hid.begin();
24+
25+
Serial.begin(115200);
26+
while ( !Serial ) delay(10); // wait for native usb
27+
28+
Serial.println("Adafruit TinyUSB Mass Storage Disk RAM example");
29+
}
30+
31+
void loop()
32+
{
33+
// nothing to do
34+
}

examples/msc_ramdisk/msc_ramdisk.ino

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ Adafruit_USBD_MSC usbmsc;
66
// the setup function runs once when you press reset or power the board
77
void setup()
88
{
9-
// block count and size are defined in variant.h
9+
// Set disk size and callback for Logical Unit 0 (LUN 0)
1010
usbmsc.setCapacity(0, DISK_BLOCK_NUM, DISK_BLOCK_SIZE);
1111
usbmsc.setCallback(0, ram_read_cb, ram_write_cb, ram_flush_cb);
12+
1213
usbmsc.begin();
1314

1415
Serial.begin(115200);

src/Adafruit_USBD_HID.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,17 @@
3030
//------------- IMPLEMENTATION -------------//
3131
Adafruit_USBD_HID::Adafruit_USBD_HID(void)
3232
{
33+
_interval_ms = 10;
3334
_protocol = HID_PROTOCOL_NONE;
3435
_desc_report = NULL;
3536
_desc_report_len = 0;
3637
}
3738

39+
void Adafruit_USBD_HID::setPollInterval(uint8_t interval_ms)
40+
{
41+
_interval_ms = interval_ms;
42+
}
43+
3844
void Adafruit_USBD_HID::setBootProtocol(uint8_t protocol)
3945
{
4046
_protocol = protocol;
@@ -46,11 +52,17 @@ void Adafruit_USBD_HID::setReportDescriptor(uint8_t const* desc_report, uint16_t
4652
_desc_report_len = len;
4753
}
4854

55+
void Adafruit_USBD_HID::setReportCallback(get_report_callback_t get_report, set_report_callback_t set_report)
56+
{
57+
_get_report_cb = get_report;
58+
_set_report_cb = set_report;
59+
}
60+
4961
uint16_t Adafruit_USBD_HID::getDescriptor(uint8_t* buf, uint16_t bufsize)
5062
{
5163
if ( !_desc_report_len ) return 0;
5264

53-
uint8_t desc[] = { TUD_HID_DESCRIPTOR(0, 0, _protocol, _desc_report_len, EPIN, 16, 4) };
65+
uint8_t desc[] = { TUD_HID_DESCRIPTOR(0, 0, _protocol, _desc_report_len, EPIN, 16, _interval_ms) };
5466
uint16_t const len = sizeof(desc);
5567

5668
if ( bufsize < len ) return 0;

src/Adafruit_USBD_HID.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,10 @@ class Adafruit_USBD_HID : Adafruit_USBD_Interface
3535

3636
Adafruit_USBD_HID(void);
3737

38+
void setPollInterval(uint8_t interval_ms);
3839
void setBootProtocol(uint8_t protocol); // 0: None, 1: Keyboard, 2:Mouse
3940
void setReportDescriptor(uint8_t const* desc_report, uint16_t len);
40-
void setReportCallback();
41+
void setReportCallback(get_report_callback_t get_report, set_report_callback_t set_report);
4142

4243
bool begin(void);
4344

@@ -48,9 +49,11 @@ class Adafruit_USBD_HID : Adafruit_USBD_Interface
4849
virtual uint16_t getDescriptor(uint8_t* buf, uint16_t bufsize);
4950

5051
private:
52+
uint8_t _interval_ms;
5153
uint8_t _protocol;
52-
uint8_t const* _desc_report;
54+
5355
uint16_t _desc_report_len;
56+
uint8_t const* _desc_report;
5457

5558
get_report_callback_t _get_report_cb;
5659
set_report_callback_t _set_report_cb;

0 commit comments

Comments
 (0)