first commit

This commit is contained in:
pvvx 2016-11-09 03:56:41 +03:00
parent 2ee525362e
commit d108756e9b
792 changed files with 336059 additions and 0 deletions

View file

@ -0,0 +1,34 @@
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __FF_DRIVER_H
#define __FF_DRIVER_H
/* Includes ------------------------------------------------------------------*/
#include "diskio.h"
#include "ff.h"
#include "platform_opts.h"
typedef struct{
DSTATUS (*disk_initialize) (void); /*!< Initialize Disk Drive */
DSTATUS (*disk_status) (void); /*!< Get Disk Status */
DRESULT (*disk_read) (BYTE*, DWORD, UINT); /*!< Read Sector(s) */
#if _USE_WRITE == 1
DRESULT (*disk_write) (const BYTE*, DWORD, UINT); /*!< Write Sector(s) when _USE_WRITE = 0 */
#endif /* _USE_WRITE == 1 */
#if _USE_IOCTL == 1
DRESULT (*disk_ioctl) (BYTE, void*); /*!< I/O control operation when _USE_IOCTL = 1 */
#endif /* _USE_IOCTL == 1 */
unsigned char* TAG;
unsigned char drv_num;
}ll_diskio_drv;
typedef struct{
ll_diskio_drv *drv[_VOLUMES];
unsigned int nbr;
}ff_disk_drv;
extern ff_disk_drv disk;
int FATFS_RegisterDiskDriver(ll_diskio_drv *disk_drv);
int FATFS_UnRegisterDiskDriver(unsigned char drv_num);
int FATFS_getDrivernum(unsigned char* TAG);
#endif

View file

@ -0,0 +1,57 @@
#include <fatfs_ext/inc/ff_driver.h>
#include "rtl_lib.h"
#define strcmp(s1, s2) rtl_strcmp((const char *)s1, (const char *)s2)
ff_disk_drv disk = {0};
// return drv_num assigned
int FATFS_RegisterDiskDriver(ll_diskio_drv *drv){
unsigned char drv_num = -1;
if(disk.nbr < _VOLUMES)
{
drv->drv_num = disk.nbr; // record driver number for a specific disk
disk.drv[disk.nbr] = drv;
disk.nbr++;
drv_num = drv->drv_num;
}
return drv_num;
}
int FATFS_UnRegisterDiskDriver(unsigned char drv_num){
int index;
if(disk.nbr >= 1)
{
for(index=0;index<disk.nbr;index++){
if(disk.drv[index]->drv_num == drv_num){
disk.drv[index] = 0;
disk.nbr--;
return 0;
}
}
return -1; // fail
}
return -1; // no disk driver registered
}
/**
* @brief Gets number of linked drivers to the FatFs module.
* @param None
* @retval Number of attached drivers.
*/
int FATFS_getDrivernum(unsigned char* TAG)
{
ll_diskio_drv *drv;
int index;
for(index=0;index<disk.nbr;index++){
drv = disk.drv[index];
if(!strcmp(drv->TAG, TAG)){
return drv->drv_num;
}
}
return -1;
}