##// END OF EJS Templates
Removed error on fat32 library, seems now to be able navigate among sectors in...
Removed error on fat32 library, seems now to be able navigate among sectors in both directions. Improved SDLCD drawing performances by almost 1000x.

File last commit:

r68:104125d87b89 dev_alexis
r68:104125d87b89 dev_alexis
Show More
fakesdcard.c
116 lines | 2.3 KiB | text/x-c | CLexer
#include <stdio.h>
#include <sdcard.h>
#include <sdcard-spi.h>
FILE* sdcardimg=NULL;
void sdcardmake(sdcardDev* sdcard,UHANDLE phy,void (*rcvr_mmc) (UHANDLE,char *,unsigned int ),void (*xmit_mmc) (UHANDLE,const char *,unsigned int ),void (*setspeed) (UHANDLE phy,unsigned int speed),unsigned int (*getspeed) (UHANDLE phy))
{
}
int sdcardselect (blkdevice* _this)
{
return 1;
}
void sdcarddeselect (blkdevice* _this)
{
}
int sdcardwait_ready (sdcardDev* sdcard)
{
return 1;
}
void sdcardpower (blkdevice* _this)
{
}
char sdcarddetect (blkdevice* _this)
{
return 1;
}
char sdcardwriteprotected (blkdevice* _this)
{
return 0;
}
int sdcardxmit_datablock (sdcardDev* sdcard,const char *buff,char token)
{
return 1;
}
int sdcardrcvr_datablock (sdcardDev* sdcard,char *buff,unsigned int btr)
{
return 1;
}
char sdcardsend_cmd (blkdevice* _this,char cmd,unsigned int arg)
{
return 1;
}
DSTATUS sdcarddisk_status (blkdevice* _this)
{}
DSTATUS sdcarddisk_initialize (blkdevice* _this)
{}
DRESULT sdcarddisk_read (blkdevice* _this,char *buff,unsigned long sector,char count)
{
if(sdcardimg==NULL)return RES_ERROR;
int res = fseek(sdcardimg, sector*(unsigned long)512, SEEK_SET);
if(count*512== fread(buff,1,count*512,sdcardimg))
return RES_OK;
return RES_ERROR;
}
DRESULT sdcarddisk_write (blkdevice* _this,const char *buff,unsigned long sector,char count)
{
if(sdcardimg==NULL)return RES_ERROR;
fseek(sdcardimg, sector*(unsigned long)512, SEEK_SET);
fwrite(buff,1,count*512,sdcardimg);
return RES_OK;
}
DRESULT sdcarddisk_ioctl (blkdevice* _this,char ctrl,void *buff)
{}
void sdcardspimakeblkdev(blkdevice* dev,sdcardDev* sdcard, blkdevselect_t select,blkdevpower_t power,blkdevdetect_t detect,blkdevwriteprotected_t writeprotected)
{
sdcardimg=fopen("/dev/sdc","rb");
// sdcardimg=fopen("usbkey.bin","rb");
if(sdcardimg!=NULL)printf("ok sdcard openned\n");
else printf("Nok sdcard not openned\n");
dev->phy=NULL;
dev->select= (blkdevselect_t)select;
dev->power = (blkdevpower_t)power;
dev->detect = (blkdevdetect_t)detect;
dev->writeprotected = (blkdevwriteprotected_t)writeprotected;
dev->write = sdcarddisk_write;
dev->read = sdcarddisk_read;
dev->ioctl = sdcarddisk_ioctl;
dev->initialize = sdcarddisk_initialize;
dev->status = sdcarddisk_status;
}