// \brief Process received HID Report data. // \param[in] rtype report type: // - HID_REPORT_OUTPUT = output report received // - HID_REPORT_FEATURE = feature report received // \param[in] req request type: // - USBD_HID_REQ_EP_CTRL = report received on control endpoint // - USBD_HID_REQ_EP_INT = report received on interrupt endpoint // \param[in] rid report ID (0 if only one report exists). // \param[in] buf buffer that receives report data. // \param[in] len length of received report data. // \return true received report data processed. // \return false received report data not processed or request not supported. bool USBD_HID0_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len) { (void)req; (void)rid; switch (rtype) { case HID_REPORT_OUTPUT: if (len == 0) { break; } if (buf[0] == ID_DAP_TransferAbort) { DAP_TransferAbort = 1U; break; } if ((uint16_t)(USB_RequestCountI - USB_RequestCountO) == DAP_PACKET_COUNT) { osThreadFlagsSet(DAP_ThreadId, 0x80U); break; // Discard packet when buffer is full } // Store received data into request buffer memcpy(USB_Request[USB_RequestIndexI], buf, (uint32_t)len); USB_RequestIndexI++; if (USB_RequestIndexI == DAP_PACKET_COUNT) { USB_RequestIndexI = 0U; } USB_RequestCountI++; osThreadFlagsSet(DAP_ThreadId, 0x01U); break; case HID_REPORT_FEATURE: break; } return true; }
void eventOS_scheduler_signal(void) { // XXX why does signal set lock if called with irqs disabled? //__enable_irq(); //tr_debug("signal %p", (void*)event_thread_id); osThreadFlagsSet(event_thread_id, 1); //tr_debug("signalled %p", (void*)event_thread_id); }
int32_t osSignalSet (osThreadId thread_id, int32_t signals) { uint32_t flags; flags = osThreadFlagsSet(thread_id, (uint32_t)signals); if ((flags & 0x80000000U) != 0U) { return ((int32_t)0x80000000U); } return ((int32_t)(flags & ~((uint32_t)signals))); }
void ThreadC (void *argument) { (void)argument; for (;;) { counterC = counterC + 1; if ((counterC % 0x10) == 0) { osThreadFlagsSet (ThreadB_Id, 1); } osDelay(1U); } }
void eventOS_scheduler_signal(void) { // XXX why does signal set lock if called with irqs disabled? //__enable_irq(); //tr_debug("signal %p", (void*)event_thread_id); #if MBED_CONF_NANOSTACK_HAL_EVENT_LOOP_DISPATCH_FROM_APPLICATION osEventFlagsSet(event_flag_id, 1); #else osThreadFlagsSet(event_thread_id, 1); #endif //tr_debug("signalled %p", (void*)event_thread_id); }