コード例 #1
0
ファイル: test_root.c プロジェクト: KTannenberg/ChibiOS
THD_FUNCTION(test_support, arg) {
#if CH_CFG_USE_EVENTS == TRUE
  thread_t *tp = (thread_t *)arg;
#else
  (void)arg;
#endif

  /* Initializing global resources.*/
  chSemObjectInit(&gsem1, 0);
  chSemObjectInit(&gsem2, 0);

  while (true) {
    chSysLock();
    if (chSemGetCounterI(&gsem1) < 0)
      chSemSignalI(&gsem1);
    chSemResetI(&gsem2, 0);
    chThdResumeI(&gtr1, MSG_OK);
#if CH_CFG_USE_EVENTS == TRUE
    chEvtSignalI(tp, 0x55);
#endif
    chSchRescheduleS();
    chSysUnlock();

    chThdSleepMilliseconds(250);
  }
}
コード例 #2
0
ファイル: usb_lld.c プロジェクト: DTFUHF/TauLabs
/**
 * @brief   Wakes up the pump thread.
 *
 * @param[in] usbp      pointer to the @p USBDriver object
 *
 * @notapi
 */
static void usb_lld_wakeup_pump(USBDriver *usbp) {

  if (usbp->thd_wait != NULL) {
    chThdResumeI(usbp->thd_wait);
    usbp->thd_wait = NULL;
  }
}
コード例 #3
0
ファイル: kl_lib.cpp プロジェクト: Kreyl/UsbHost
void i2cDmaIrqHandler(void *p, uint32_t flags) {
    chSysLockFromISR();
    i2c_t *pi2c = (i2c_t*)p;
//    Uart.PrintfNow("\r===T===");
    chThdResumeI(&pi2c->ThdRef, (msg_t)0);
    chSysUnlockFromISR();
}
コード例 #4
0
static THD_FUNCTION(thread1, p) {

  chSysLock();
  chThdResumeI(&tr1, MSG_OK);
  chSchRescheduleS();
  chSysUnlock();
  test_emit_token(*(char *)p);
}
コード例 #5
0
ファイル: kl_usb.cpp プロジェクト: Kreyl/nute
void Usb_t::IEpInHandler(uint8_t EpN) {
    uint32_t epint = OTG_FS->ie[EpN].DIEPINT;
    OTG_FS->ie[EpN].DIEPINT = 0xFFFFFFFF;   // Reset IRQs
    Uart.Printf("in %X i%X\r\n", EpN, epint);
    // Transmit transfer complete
    if(epint & DIEPINT_XFRC) {
        Uart.Printf("###########\r\n");
//        Ep[0].ClearOutNAK();
//        Ep[0].EnableOut();
//        Ep[EpN].IsTransmitting = false;
        if(EpN == 0) Ep0InCallback();
//        if(Ep[EpN].cbIn != NULL) Ep[EpN].cbIn();
    }
    // TX FIFO empty
    if((epint & DIEPINT_TXFE) and Ep[EpN].FifoEmtyIRQEnabled()) {
        Uart.Printf("TXFE\r\n");
        chSysLockFromIsr();
        Ep[EpN].DisableInFifoEmptyIRQ();
        Ep[EpN].IsTxPending = true;
        if(PThread->p_state == THD_STATE_SUSPENDED) chThdResumeI(PThread);
        chSysUnlockFromIsr();
    } // if txfe
}
コード例 #6
0
ファイル: ch.cpp プロジェクト: sdalu/ChibiOS
  void ThreadStayPoint::resumeI(msg_t msg) {

    chThdResumeI(&thread_ref, msg);
  }
コード例 #7
0
ファイル: i2cL476.cpp プロジェクト: Kreyl/Oven
void i2c_t::IWakeup() {
    chSysLockFromISR();
    chThdResumeI(&PThd, MSG_OK);
    chSysUnlockFromISR();
}