/* Reflow Oven Controller * * Copyright (C) 2022 Mario Hüttel * * This file is part of the Reflow Oven Controller Project. * * The reflow oven controller is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * GDSII-Converter is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the reflow oven controller project. * If not, see . */ #include #include "fatfs/ff.h" #include "fatfs/shimatta_sdio_driver/shimatta_sdio.h" #include #include #include #include static bool sd_card_mounted_state = false; bool mount_sd_card_if_avail(FATFS *fs) { FRESULT res; static uint8_t IN_SECTION(.ccm.bss) inserted_counter = 0; if (sdio_check_inserted() && sd_card_mounted_state) { memset(fs, 0, sizeof(FATFS)); sdio_stop_clk(); inserted_counter = 0; sd_card_mounted_state = false; goto ret; } if (!sdio_check_inserted() && inserted_counter < 255) inserted_counter++; if (!sdio_check_inserted() && !sd_card_mounted_state && inserted_counter > 4) { inserted_counter = 0; res = f_mount(fs, "0:/", 1); if (res == FR_OK) { led_set(1, 1); sd_card_mounted_state = true; } else { sd_card_mounted_state = false; } } ret: return sd_card_mounted_state; } bool sd_card_is_mounted(void) { return sd_card_mounted_state; }