int sdcard_initialize_sync (uint32_t* block_size, uint32_t* size_in_kB) { int err; sdcard_data_t result; result.fired = false; result.error = TOCK_SUCCESS; err = sdcard_set_callback(sdcard_cb, (void*) &result); if (err < 0) return err; err = sdcard_initialize(); if (err < 0) return err; // wait for callback yield_for(&result.fired); // copy args if (block_size != NULL) { *block_size = result.block_size; } if (size_in_kB != NULL) { *size_in_kB = result.size_in_kB; } return result.error; }
DSTATUS disk_initialize(BYTE drv /* Physical drive number (0..) */ ) { if (drv) return STA_NOINIT; if (sdcard_initialize() == 0) Stat &= ~STA_NOINIT; return Stat; }