STM32F746NG fatfs library
Dependents: DISCO-F746NG_uSD Active-WolfMan_V2-5-All-Frank-Board-Functions_copy DISCO-F746NG_uSD DISCO-F746NG_uSD
ff_gen_drv.c
- Committer:
- buyukesmeli
- Date:
- 2018-02-03
- Revision:
- 0:3a2f06aeceaf
File content as of revision 0:3a2f06aeceaf:
/** ****************************************************************************** * @file ff_gen_drv.c * @author MCD Application Team * @version V1.4.0 * @date 23-December-2016 * @brief FatFs generic low level driver. ****************************************************************************** * @attention * * <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2> * * Redistribution and use in source and binary forms, with or without * modification, are permitted, provided that the following conditions are met: * * 1. Redistribution of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of other * contributors to this software may be used to endorse or promote products * derived from this software without specific written permission. * 4. This software, including modifications and/or derivative works of this * software, must execute solely and exclusively on microcontroller or * microprocessor devices manufactured by or for STMicroelectronics. * 5. Redistribution and use of this software other than as permitted under * this license is void and will automatically terminate your rights under * this license. * * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "ff_gen_drv.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ Disk_drvTypeDef disk = {{0},{0},{0},0}; /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /** * @brief Links a compatible diskio driver/lun id and increments the number of active * linked drivers. * @note The number of linked drivers (volumes) is up to 10 due to FatFs limits. * @param drv: pointer to the disk IO Driver structure * @param path: pointer to the logical drive path * @param lun : only used for USB Key Disk to add multi-lun management else the paramter must be equal to 0 * @retval Returns 0 in case of success, otherwise 1. */ uint8_t FATFS_LinkDriverEx(Diskio_drvTypeDef *drv, char *path, uint8_t lun) { uint8_t ret = 1; uint8_t DiskNum = 0; if(disk.nbr <= _VOLUMES) { disk.is_initialized[disk.nbr] = 0; disk.drv[disk.nbr] = drv; disk.lun[disk.nbr] = lun; DiskNum = disk.nbr++; path[0] = DiskNum + '0'; path[1] = ':'; path[2] = '/'; path[3] = 0; ret = 0; } return ret; } /** * @brief Links a compatible diskio driver and increments the number of active * linked drivers. * @note The number of linked drivers (volumes) is up to 10 due to FatFs limits * @param drv: pointer to the disk IO Driver structure * @param path: pointer to the logical drive path * @retval Returns 0 in case of success, otherwise 1. */ uint8_t FATFS_LinkDriver(Diskio_drvTypeDef *drv, char *path) { return FATFS_LinkDriverEx(drv, path, 0); } /** * @brief Unlinks a diskio driver and decrements the number of active linked * drivers. * @param path: pointer to the logical drive path * @param lun : not used * @retval Returns 0 in case of success, otherwise 1. */ uint8_t FATFS_UnLinkDriverEx(char *path, uint8_t lun) { uint8_t DiskNum = 0; uint8_t ret = 1; if(disk.nbr >= 1) { DiskNum = path[0] - '0'; if(disk.drv[DiskNum] != 0) { disk.drv[DiskNum] = 0; disk.lun[DiskNum] = 0; disk.nbr--; ret = 0; } } return ret; } /** * @brief Unlinks a diskio driver and decrements the number of active linked * drivers. * @param path: pointer to the logical drive path * @retval Returns 0 in case of success, otherwise 1. */ uint8_t FATFS_UnLinkDriver(char *path) { return FATFS_UnLinkDriverEx(path, 0); } /** * @brief Gets number of linked drivers to the FatFs module. * @param None * @retval Number of attached drivers. */ uint8_t FATFS_GetAttachedDriversNbr(void) { return disk.nbr; } /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/