USB Host Shield 2.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
hid.cpp
Go to the documentation of this file.
1 #include "hid.h"
2 
3 //get HID report descriptor
4 
5 uint8_t HID::GetReportDescr(uint8_t ep, USBReadParser *parser) {
6  const uint8_t constBufLen = 64;
7  uint8_t buf[constBufLen];
8 
10  HID_DESCRIPTOR_REPORT, 0x0000, 128, constBufLen, buf, (USBReadParser*)parser);
11 
12  //return ((rcode != hrSTALL) ? rcode : 0);
13  return rcode;
14 }
15 //uint8_t HID::getHidDescr( uint8_t ep, uint16_t nbytes, uint8_t* dataptr )
16 //{
17 // return( pUsb->ctrlReq( bAddress, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, 0x00, HID_DESCRIPTOR_HID, 0x0000, nbytes, dataptr ));
18 //}
19 
20 uint8_t HID::SetReport(uint8_t ep, uint8_t iface, uint8_t report_type, uint8_t report_id, uint16_t nbytes, uint8_t* dataptr) {
21  return ( pUsb->ctrlReq(bAddress, ep, bmREQ_HIDOUT, HID_REQUEST_SET_REPORT, report_id, report_type, iface, nbytes, nbytes, dataptr, NULL));
22 }
23 
24 uint8_t HID::GetReport(uint8_t ep, uint8_t iface, uint8_t report_type, uint8_t report_id, uint16_t nbytes, uint8_t* dataptr) {
25  return ( pUsb->ctrlReq(bAddress, ep, bmREQ_HIDIN, HID_REQUEST_GET_REPORT, report_id, report_type, iface, nbytes, nbytes, dataptr, NULL));
26 }
27 
28 uint8_t HID::GetIdle(uint8_t iface, uint8_t reportID, uint8_t* dataptr) {
29  return ( pUsb->ctrlReq(bAddress, 0, bmREQ_HIDIN, HID_REQUEST_GET_IDLE, reportID, 0, iface, 0x0001, 0x0001, dataptr, NULL));
30 }
31 
32 uint8_t HID::SetIdle(uint8_t iface, uint8_t reportID, uint8_t duration) {
33  return ( pUsb->ctrlReq(bAddress, 0, bmREQ_HIDOUT, HID_REQUEST_SET_IDLE, reportID, duration, iface, 0x0000, 0x0000, NULL, NULL));
34 }
35 
36 uint8_t HID::SetProtocol(uint8_t iface, uint8_t protocol) {
37  return ( pUsb->ctrlReq(bAddress, 0, bmREQ_HIDOUT, HID_REQUEST_SET_PROTOCOL, protocol, 0x00, iface, 0x0000, 0x0000, NULL, NULL));
38 }
39 
40 uint8_t HID::GetProtocol(uint8_t iface, uint8_t* dataptr) {
41  return ( pUsb->ctrlReq(bAddress, 0, bmREQ_HIDIN, HID_REQUEST_GET_PROTOCOL, 0x00, 0x00, iface, 0x0001, 0x0001, dataptr, NULL));
42 }
43 
45  Notify(PSTR("Endpoint descriptor:"), 0x80);
46  Notify(PSTR("\r\nLength:\t\t"), 0x80);
47  D_PrintHex<uint8_t > (ep_ptr->bLength, 0x80);
48  Notify(PSTR("\r\nType:\t\t"), 0x80);
49  D_PrintHex<uint8_t > (ep_ptr->bDescriptorType, 0x80);
50  Notify(PSTR("\r\nAddress:\t"), 0x80);
51  D_PrintHex<uint8_t > (ep_ptr->bEndpointAddress, 0x80);
52  Notify(PSTR("\r\nAttributes:\t"), 0x80);
53  D_PrintHex<uint8_t > (ep_ptr->bmAttributes, 0x80);
54  Notify(PSTR("\r\nMaxPktSize:\t"), 0x80);
55  D_PrintHex<uint16_t > (ep_ptr->wMaxPacketSize, 0x80);
56  Notify(PSTR("\r\nPoll Intrv:\t"), 0x80);
57  D_PrintHex<uint8_t > (ep_ptr->bInterval, 0x80);
58 }
59 
61  Notify(PSTR("\r\n\r\nHID Descriptor:\r\n"), 0x80);
62  Notify(PSTR("bDescLength:\t\t"), 0x80);
63  D_PrintHex<uint8_t > (pDesc->bLength, 0x80);
64 
65  Notify(PSTR("\r\nbDescriptorType:\t"), 0x80);
66  D_PrintHex<uint8_t > (pDesc->bDescriptorType, 0x80);
67 
68  Notify(PSTR("\r\nbcdHID:\t\t\t"), 0x80);
69  D_PrintHex<uint16_t > (pDesc->bcdHID, 0x80);
70 
71  Notify(PSTR("\r\nbCountryCode:\t\t"), 0x80);
72  D_PrintHex<uint8_t > (pDesc->bCountryCode, 0x80);
73 
74  Notify(PSTR("\r\nbNumDescriptors:\t"), 0x80);
75  D_PrintHex<uint8_t > (pDesc->bNumDescriptors, 0x80);
76 
77  Notify(PSTR("\r\nbDescrType:\t\t"), 0x80);
78  D_PrintHex<uint8_t > (pDesc->bDescrType, 0x80);
79 
80  Notify(PSTR("\r\nwDescriptorLength:\t"), 0x80);
81  D_PrintHex<uint16_t > (pDesc->wDescriptorLength, 0x80);
82 }
#define HID_DESCRIPTOR_REPORT
Definition: hid.h:75
#define HID_REQUEST_GET_IDLE
Definition: hid.h:67
uint8_t GetIdle(uint8_t iface, uint8_t reportID, uint8_t *dataptr)
Definition: hid.cpp:28
uint8_t SetReport(uint8_t ep, uint8_t iface, uint8_t report_type, uint8_t report_id, uint16_t nbytes, uint8_t *dataptr)
Definition: hid.cpp:20
#define bmREQ_HIDOUT
Definition: hid.h:60
uint8_t GetReport(uint8_t ep, uint8_t iface, uint8_t report_type, uint8_t report_id, uint16_t nbytes, uint8_t *dataptr)
Definition: hid.cpp:24
#define USB_REQUEST_GET_DESCRIPTOR
Definition: usb_ch9.h:37
#define HID_REQUEST_SET_IDLE
Definition: hid.h:70
uint8_t bLength
Definition: usb_ch9.h:152
uint8_t GetReportDescr(uint8_t ep, USBReadParser *parser=NULL)
Definition: hid.cpp:5
uint8_t bAddress
Definition: hid.h:146
uint8_t ctrlReq(uint8_t addr, uint8_t ep, uint8_t bmReqType, uint8_t bRequest, uint8_t wValLo, uint8_t wValHi, uint16_t wInd, uint16_t total, uint16_t nbytes, uint8_t *dataptr, USBReadParser *p)
Definition: Usb.cpp:126
uint8_t GetProtocol(uint8_t iface, uint8_t *dataptr)
Definition: hid.cpp:40
#define Notify(...)
Definition: message.h:44
uint8_t SetProtocol(uint8_t iface, uint8_t protocol)
Definition: hid.cpp:36
#define bmREQ_HIDREPORT
Definition: hid.h:62
uint16_t wDescriptorLength
Definition: usb_ch9.h:158
uint8_t bCountryCode
Definition: usb_ch9.h:155
#define HID_REQUEST_SET_PROTOCOL
Definition: hid.h:71
uint16_t wMaxPacketSize
Definition: usb_ch9.h:146
#define HID_REQUEST_SET_REPORT
Definition: BTD.h:39
#define HID_REQUEST_GET_REPORT
Definition: hid.h:66
uint8_t bNumDescriptors
Definition: usb_ch9.h:156
uint8_t bEndpointAddress
Definition: usb_ch9.h:144
uint8_t bDescriptorType
Definition: usb_ch9.h:153
void PrintHidDescriptor(const USB_HID_DESCRIPTOR *pDesc)
Definition: hid.cpp:60
USB * pUsb
Definition: hid.h:145
uint8_t SetIdle(uint8_t iface, uint8_t reportID, uint8_t duration)
Definition: hid.cpp:32
#define bmREQ_HIDIN
Definition: hid.h:61
void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR *ep_ptr)
Definition: hid.cpp:44
uint16_t bcdHID
Definition: usb_ch9.h:154
#define HID_REQUEST_GET_PROTOCOL
Definition: hid.h:68
uint8_t bDescrType
Definition: usb_ch9.h:157