// This provides a YAFFS nand emulation on a file for emulating 2kB pages.
// THis is only intended as test code to test persistence etc.
-const char *yaffs_flashif_c_version = "$Id: yaffs_fileem2k.c,v 1.1 2004-11-03 08:29:28 charles Exp $";
+const char *yaffs_flashif_c_version = "$Id: yaffs_fileem2k.c,v 1.4 2005-07-18 23:12:00 charles Exp $";
#include "yportenv.h"
#include <unistd.h>
#include "yaffs_fileem2k.h"
-#include "yaffs_packedtags.h"
+#include "yaffs_packedtags2.h"
static yflash_Device filedisk;
-static int CheckInit(yaffs_Device *dev)
+static int CheckInit(void)
{
static int initialised = 0;
}
}
}
+ else
+ {
+ filedisk.nBlocks = fSize/(BLOCK_SIZE);
+ }
return 1;
}
+
+int yflash_GetNumberOfBlocks(void)
+{
+ CheckInit();
+
+ return filedisk.nBlocks;
+}
+
int yflash_WriteChunkWithTagsToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, yaffs_ExtendedTags *tags)
{
int written;
int pos;
- CheckInit(dev);
+ CheckInit();
{
pos = chunkInNAND * PAGE_SIZE + PAGE_DATA_SIZE;
lseek(filedisk.handle,pos,SEEK_SET);
- if(dev->isYaffs2)
+ if( 0 && dev->isYaffs2)
{
written = write(filedisk.handle,tags,sizeof(yaffs_ExtendedTags));
}
else
{
- yaffs_PackedTags pt;
- yaffs_PackTags(&pt,tags);
+ yaffs_PackedTags2 pt;
+ yaffs_PackTags2(&pt,tags);
written = write(filedisk.handle,&pt,sizeof(pt));
if(written != sizeof(pt)) return YAFFS_FAIL;
{
int written;
- yaffs_PackedTags pt;
+ yaffs_PackedTags2 pt;
- CheckInit(dev);
+ CheckInit();
memset(&pt,0,sizeof(pt));
lseek(filedisk.handle,(blockNo * dev->nChunksPerBlock) * PAGE_SIZE + PAGE_DATA_SIZE,SEEK_SET);
int nread;
int pos;
- CheckInit(dev);
+ CheckInit();
{
pos = chunkInNAND * PAGE_SIZE + PAGE_DATA_SIZE;
lseek(filedisk.handle,pos,SEEK_SET);
- if(dev->isYaffs2)
+ if(0 && dev->isYaffs2)
{
nread= read(filedisk.handle,tags,sizeof(yaffs_ExtendedTags));
if(nread != sizeof(yaffs_ExtendedTags)) return YAFFS_FAIL;
}
else
{
- yaffs_PackedTags pt;
+ yaffs_PackedTags2 pt;
nread= read(filedisk.handle,&pt,sizeof(pt));
- yaffs_UnpackTags(tags,&pt);
+ yaffs_UnpackTags2(tags,&pt);
if(nread != sizeof(pt)) return YAFFS_FAIL;
}
}
int i;
- CheckInit(dev);
+ CheckInit();
if(blockNumber < 0 || blockNumber >= filedisk.nBlocks)
{
int yflash_InitialiseNAND(yaffs_Device *dev)
{
- CheckInit(dev);
+ CheckInit();
return YAFFS_OK;
}