summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-07-31 13:45:31 +0700
committerhathach <[email protected]>2018-07-31 13:45:31 +0700
commit191b73b58c5ad6a098c652f31459ef39078a484b (patch)
tree21da893ed74932c7fa9e82687f35ee4a86e8833e
parent1a0ffcee25566c03cc267c96cceb7a0189d2b026 (diff)
tud_hid_generic_get_report_cb and tud_hid_generic_set_report_cb are mandantory
-rw-r--r--examples/device/nrf52840/src/main.c9
-rw-r--r--examples/device/nrf52840/src/msc_device_app.c14
-rw-r--r--src/class/hid/hid_device.c2
-rw-r--r--src/class/hid/hid_device.h10
4 files changed, 25 insertions, 10 deletions
diff --git a/examples/device/nrf52840/src/main.c b/examples/device/nrf52840/src/main.c
index 0008bb69c..9a80accc9 100644
--- a/examples/device/nrf52840/src/main.c
+++ b/examples/device/nrf52840/src/main.c
@@ -143,7 +143,16 @@ void usb_hid_task(void)
}
}
+uint16_t tud_hid_generic_get_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen)
+{
+ // TODO not Implemented
+ return 0;
+}
+void tud_hid_generic_set_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t const* buffer, uint16_t bufsize)
+{
+ // TODO not Implemented
+}
//--------------------------------------------------------------------+
// tinyusb callbacks
diff --git a/examples/device/nrf52840/src/msc_device_app.c b/examples/device/nrf52840/src/msc_device_app.c
index 916e4331c..9f5015042 100644
--- a/examples/device/nrf52840/src/msc_device_app.c
+++ b/examples/device/nrf52840/src/msc_device_app.c
@@ -90,17 +90,23 @@ int32_t tud_msc_scsi_cb (uint8_t lun, uint8_t const scsi_cmd[16], void* buffer,
start_stop->start;
start_stop->load_eject;
*/
- resplen = 0;
+ resplen = 0;
break;
- // negative means error -> tusb could stall and/or response with failed status
- default: return -1;
+
+ default:
+ // Set Sense = Invalid Command Operation
+ tud_msc_set_sense(lun, SCSI_SENSE_ILLEGAL_REQUEST, 0x20, 0x00);
+
+ // negative means error -> tinyusb could stall and/or response with failed status
+ resplen = -1;
+ break;
}
// return resplen must not larger than bufsize
if ( resplen > bufsize ) resplen = bufsize;
- if ( response && resplen )
+ if ( response && (resplen > 0) )
{
if(in_xfer)
{
diff --git a/src/class/hid/hid_device.c b/src/class/hid/hid_device.c
index e52952e08..4df370cfe 100644
--- a/src/class/hid/hid_device.c
+++ b/src/class/hid/hid_device.c
@@ -449,8 +449,8 @@ tusb_error_t hidd_control_request_st(uint8_t rhport, tusb_control_request_t cons
xferlen = p_hid->get_report_cb(report_id, (hid_report_type_t) report_type, p_hid->report_buf, p_request->wLength);
}else
{
+ // For boot Interface only: re-use report_buf -> report has no change
xferlen = p_request->wLength;
- // re-use report_buf -> report has no change
}
STASK_ASSERT( xferlen > 0 );
diff --git a/src/class/hid/hid_device.h b/src/class/hid/hid_device.h
index 43181b1a9..6edd9f934 100644
--- a/src/class/hid/hid_device.h
+++ b/src/class/hid/hid_device.h
@@ -73,9 +73,9 @@
bool tud_hid_generic_ready(void);
bool tud_hid_generic_report(uint8_t report_id, void const* report, uint8_t len);
-/*------------- Callbacks -------------*/
-ATTR_WEAK uint16_t tud_hid_generic_get_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen);
-ATTR_WEAK void tud_hid_generic_set_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t const* buffer, uint16_t bufsize);
+/*------------- Callbacks (Weak is optional) -------------*/
+uint16_t tud_hid_generic_get_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen);
+void tud_hid_generic_set_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t const* buffer, uint16_t bufsize);
//--------------------------------------------------------------------+
// KEYBOARD API
@@ -110,7 +110,7 @@ extern const hid_ascii_to_keycode_entry_t HID_ASCII_TO_KEYCODE[128];
#endif
-/*------------- Callbacks -------------*/
+/*------------- Callbacks (Weak is optional) -------------*/
/** Callback invoked when USB host request \ref HID_REQ_CONTROL_GET_REPORT.
* \param[in] report_type specify which report (INPUT, OUTPUT, FEATURE) that host requests
@@ -172,7 +172,7 @@ static inline bool tud_hid_mouse_button_release(void)
return tud_hid_mouse_data(0, 0, 0, 0, 0);
}
-/*------------- Callbacks -------------*/
+/*------------- Callbacks (Weak is optional) -------------*/
/**
* Callback function that is invoked when USB host request \ref HID_REQ_CONTROL_GET_REPORT.