summaryrefslogtreecommitdiff
path: root/yaffs_packedtags2.c
diff options
context:
space:
mode:
authorcharles <charles>2004-11-22 03:22:25 +0000
committercharles <charles>2004-11-22 03:22:25 +0000
commitf216bcabdaf791aa93ad2e58c1d747d2d8bd6617 (patch)
tree4ca3552100a13613ef61da8314466fa204eb7fa6 /yaffs_packedtags2.c
parenta095ce00d3a3102807fe540f77e7ec17daba967f (diff)
*** empty log message ***
Diffstat (limited to 'yaffs_packedtags2.c')
-rw-r--r--yaffs_packedtags2.c42
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;
+ }
+}
+