|
@@ -640,6 +640,9 @@ static bool udi_hid_raw_b_report_trans_ongoing;
|
|
|
COMPILER_WORD_ALIGNED
|
|
|
static uint8_t udi_hid_raw_report_trans[UDI_HID_RAW_REPORT_SIZE];
|
|
|
|
|
|
+COMPILER_WORD_ALIGNED
|
|
|
+static uint8_t udi_hid_raw_report_recv[UDI_HID_RAW_REPORT_SIZE];
|
|
|
+
|
|
|
COMPILER_WORD_ALIGNED
|
|
|
UDC_DESC_STORAGE udi_hid_raw_report_desc_t udi_hid_raw_report_desc = {{
|
|
|
0x06, 0x60, 0xFF,
|
|
@@ -663,6 +666,7 @@ static bool udi_hid_raw_setreport(void);
|
|
|
static void udi_hid_raw_setreport_valid(void);
|
|
|
|
|
|
static void udi_hid_raw_report_sent(udd_ep_status_t status, iram_size_t nb_sent, udd_ep_id_t ep);
|
|
|
+static void udi_hid_raw_report_rcvd(udd_ep_status_t status, iram_size_t nb_rcvd, udd_ep_id_t ep);
|
|
|
|
|
|
bool udi_hid_raw_enable(void) {
|
|
|
|
|
@@ -719,7 +723,30 @@ static void udi_hid_raw_report_sent(udd_ep_status_t status, iram_size_t nb_sent,
|
|
|
|
|
|
static void udi_hid_raw_setreport_valid(void) {}
|
|
|
|
|
|
-#endif
|
|
|
+void raw_hid_send(uint8_t *data, uint8_t length) {
|
|
|
+ if (main_b_raw_enable && !udi_hid_raw_b_report_trans_ongoing && length == UDI_HID_RAW_REPORT_SIZE) {
|
|
|
+ memcpy(udi_hid_raw_report, data, UDI_HID_RAW_REPORT_SIZE);
|
|
|
+ udi_hid_raw_send_report();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+bool udi_hid_raw_receive_report(void) {
|
|
|
+ if (!main_b_raw_enable) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return udd_ep_run(UDI_HID_RAW_EP_OUT | USB_EP_DIR_OUT, false, udi_hid_raw_report_recv, UDI_HID_RAW_REPORT_SIZE, udi_hid_raw_report_rcvd);
|
|
|
+}
|
|
|
+
|
|
|
+static void udi_hid_raw_report_rcvd(udd_ep_status_t status, iram_size_t nb_rcvd, udd_ep_id_t ep) {
|
|
|
+ UNUSED(ep);
|
|
|
+
|
|
|
+ if (status == UDD_EP_TRANSFER_OK && nb_rcvd == UDI_HID_RAW_REPORT_SIZE) {
|
|
|
+ UDI_HID_RAW_RECEIVE(udi_hid_raw_report_recv, UDI_HID_RAW_REPORT_SIZE);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
|