diff options
author | charles <charles> | 2004-11-22 03:22:25 +0000 |
---|---|---|
committer | charles <charles> | 2004-11-22 03:22:25 +0000 |
commit | f216bcabdaf791aa93ad2e58c1d747d2d8bd6617 (patch) | |
tree | 4ca3552100a13613ef61da8314466fa204eb7fa6 /yaffs_packedtags2.c | |
parent | a095ce00d3a3102807fe540f77e7ec17daba967f (diff) |
*** empty log message ***
Diffstat (limited to 'yaffs_packedtags2.c')
-rw-r--r-- | yaffs_packedtags2.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/yaffs_packedtags2.c b/yaffs_packedtags2.c new file mode 100644 index 0000000..f734882 --- /dev/null +++ b/yaffs_packedtags2.c @@ -0,0 +1,42 @@ +#include "yaffs_packedtags2.h" +#include "yportenv.h" + + + +void yaffs_PackTags2(yaffs_PackedTags2 *pt, yaffs_ExtendedTags *t) +{ + pt->t.chunkId = t->chunkId; + pt->t.sequenceNumber = t->sequenceNumber; + pt->t.byteCount = t->byteCount; + pt->t.objectId = t->objectId; + + yaffs_ECCCalculateOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&pt->ecc); + +} + +void yaffs_UnpackTags2(yaffs_ExtendedTags *t, yaffs_PackedTags2 *pt) +{ + + + if(pt->t.sequenceNumber == 0xFFFFFFFF) + { + memset(t,0,sizeof(yaffs_ExtendedTags)); + + } + else + { + // Page is in use + yaffs_ECCOther ecc; + yaffs_ECCCalculateOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&ecc); + t->eccResult = yaffs_ECCCorrectOther((unsigned char *)&pt->t,sizeof(yaffs_PackedTags2TagsPart),&pt->ecc,&ecc); + t->blockBad = 0; + t->chunkUsed = 1; + t->objectId = pt->t.objectId; + t->chunkId = pt->t.chunkId; + t->byteCount = pt->t.byteCount; + t->chunkDeleted = 0; + t->serialNumber = 0; + t->sequenceNumber = pt->t.sequenceNumber; + } +} + |