Esempio n. 1
0
void sdcardInit(void) {
  /*
   static const evhandler_t evhndl[] = {
   InsertHandler,
   RemoveHandler
   };
   struct EventListener el0, el1;
   */
  palSetPadMode(GPIOC, 8, PAL_MODE_ALTERNATE(12) | PAL_STM32_OSPEED_HIGHEST);
  palSetPadMode(GPIOC, 9, PAL_MODE_ALTERNATE(12) | PAL_STM32_OSPEED_HIGHEST);
  palSetPadMode(GPIOC, 10, PAL_MODE_ALTERNATE(12) | PAL_STM32_OSPEED_HIGHEST);
  palSetPadMode(GPIOC, 11, PAL_MODE_ALTERNATE(12) | PAL_STM32_OSPEED_HIGHEST);
  palSetPadMode(GPIOC, 12, PAL_MODE_ALTERNATE(12) | PAL_STM32_OSPEED_HIGHEST);
  palSetPadMode(GPIOD, 2, PAL_MODE_ALTERNATE(12) | PAL_STM32_OSPEED_HIGHEST);
  chThdSleepMilliseconds(50);
  sdcStart(&SDCD1, NULL);
  chThdSleepMilliseconds(50);

  InsertHandler(0);

  FRESULT err;
  uint32_t clusters;
  FATFS *fsp;

  err = f_getfree("/", &clusters, &fsp);
  int retries = 3;
  while (err != FR_OK) {
    InsertHandler(0);
    chThdSleepMilliseconds(20);
    err = f_getfree("/", &clusters, &fsp);
    chThdSleepMilliseconds(50);
    retries--;
    if (!retries)
      break;
  }
}
Esempio n. 2
0
void BProcess::ScheduleHandler(BHandler *handler)
{
//	bout << "BProcess::ScheduleHandler: (" << SysCurrentThread() << ")@" << SysGetRunTime() << endl;
    m_lock.LockQuick();
    const BHandler::scheduling s = handler->start_schedule();
    if (s != BHandler::CANCEL_SCHEDULE) {
        handler->IncRefs(this);
        UnscheduleHandler(handler,false);
        InsertHandler(&m_pendingHandlers,handler);
        handler->done_schedule();
    } else {
        UnscheduleHandler(handler,false);
    }

    ScheduleNextHandler();		//  releases the lock
}
Esempio n. 3
0
void sdAttemptMountIfUnmounted() {
  if (fs_ready)
    return;
  InsertHandler(0);
}