Compact Flash I/O test

Dependencies:   mbed

Committer:
emh203
Date:
Fri Dec 30 21:02:16 2011 +0000
Revision:
1:dc171f34db9b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emh203 1:dc171f34db9b 1 #include "mbed.h"
emh203 1:dc171f34db9b 2 #include "DataTypes.h"
emh203 1:dc171f34db9b 3
emh203 1:dc171f34db9b 4 CHAR StringBuffer[256];
emh203 1:dc171f34db9b 5
emh203 1:dc171f34db9b 6 SIGNED_WORD ByteStackPush(ByteStack * Stack,BYTE Val) {
emh203 1:dc171f34db9b 7 if (Stack->Ptr == Stack->Size-1) {
emh203 1:dc171f34db9b 8 return STACK_FULL;
emh203 1:dc171f34db9b 9 } else {
emh203 1:dc171f34db9b 10 Stack->Ptr++;
emh203 1:dc171f34db9b 11 Stack->StackSpace[Stack->Ptr] = Val;
emh203 1:dc171f34db9b 12 return STACK_PUSH_OK;
emh203 1:dc171f34db9b 13 }
emh203 1:dc171f34db9b 14 }
emh203 1:dc171f34db9b 15
emh203 1:dc171f34db9b 16 SIGNED_WORD ByteStackPOP(ByteStack * Stack) {
emh203 1:dc171f34db9b 17 if (Stack->Ptr == 0) {
emh203 1:dc171f34db9b 18 return STACK_EMPTY;
emh203 1:dc171f34db9b 19 } else {
emh203 1:dc171f34db9b 20 Stack->Ptr--;
emh203 1:dc171f34db9b 21 return Stack->StackSpace[Stack->Ptr];
emh203 1:dc171f34db9b 22 }
emh203 1:dc171f34db9b 23 }
emh203 1:dc171f34db9b 24
emh203 1:dc171f34db9b 25 SIGNED_BYTE BitStackPush(BitStack * Stack,BOOL Val) {
emh203 1:dc171f34db9b 26 WORD Offset;
emh203 1:dc171f34db9b 27 BYTE Mask;
emh203 1:dc171f34db9b 28
emh203 1:dc171f34db9b 29 if (Stack->Ptr == Stack->Size-1) {
emh203 1:dc171f34db9b 30 return STACK_FULL;
emh203 1:dc171f34db9b 31 } else {
emh203 1:dc171f34db9b 32
emh203 1:dc171f34db9b 33 Stack->Ptr++;
emh203 1:dc171f34db9b 34 Offset = (Stack->Ptr)>>3;
emh203 1:dc171f34db9b 35 Mask = 0x01<<(Stack->Ptr&0x07);
emh203 1:dc171f34db9b 36
emh203 1:dc171f34db9b 37 if (Val) {
emh203 1:dc171f34db9b 38 Stack->StackSpace[Offset] |= Mask;
emh203 1:dc171f34db9b 39 } else {
emh203 1:dc171f34db9b 40 Stack->StackSpace[Offset] &= ~Mask;
emh203 1:dc171f34db9b 41 }
emh203 1:dc171f34db9b 42
emh203 1:dc171f34db9b 43 return STACK_PUSH_OK;
emh203 1:dc171f34db9b 44 }
emh203 1:dc171f34db9b 45 }
emh203 1:dc171f34db9b 46
emh203 1:dc171f34db9b 47 SIGNED_BYTE BitStackPop(BitStack * Stack) {
emh203 1:dc171f34db9b 48 WORD Offset;
emh203 1:dc171f34db9b 49 BYTE Mask;
emh203 1:dc171f34db9b 50
emh203 1:dc171f34db9b 51 if (Stack->Ptr == 0) {
emh203 1:dc171f34db9b 52 return STACK_EMPTY;
emh203 1:dc171f34db9b 53 } else {
emh203 1:dc171f34db9b 54
emh203 1:dc171f34db9b 55 Stack->Ptr++;
emh203 1:dc171f34db9b 56 Offset = (Stack->Ptr)>>3;
emh203 1:dc171f34db9b 57 Mask = 0x01<<(Stack->Ptr&0x07);
emh203 1:dc171f34db9b 58
emh203 1:dc171f34db9b 59 if (Stack->StackSpace[Offset] | Mask) {
emh203 1:dc171f34db9b 60 return TRUE;
emh203 1:dc171f34db9b 61 } else {
emh203 1:dc171f34db9b 62 return FALSE;
emh203 1:dc171f34db9b 63 }
emh203 1:dc171f34db9b 64 }
emh203 1:dc171f34db9b 65 }
emh203 1:dc171f34db9b 66
emh203 1:dc171f34db9b 67 #ifndef INLINE_BITPLANE_PUT
emh203 1:dc171f34db9b 68 void BitPlane_Put(BitPlane * BP, WORD X,WORD Y, BOOL Value)
emh203 1:dc171f34db9b 69 {
emh203 1:dc171f34db9b 70 WORD Offset;
emh203 1:dc171f34db9b 71 BYTE Mask;
emh203 1:dc171f34db9b 72
emh203 1:dc171f34db9b 73 Offset = (Y * ((BP->SizeX)>>3)) + (X>>3);
emh203 1:dc171f34db9b 74 Mask = 0x01 << (X & 0x07);
emh203 1:dc171f34db9b 75
emh203 1:dc171f34db9b 76 if(Value)
emh203 1:dc171f34db9b 77 {
emh203 1:dc171f34db9b 78 BP->BitPlaneSpace[Offset] |= Mask;
emh203 1:dc171f34db9b 79 }
emh203 1:dc171f34db9b 80 else
emh203 1:dc171f34db9b 81 {
emh203 1:dc171f34db9b 82 BP->BitPlaneSpace[Offset] &= ~Mask;
emh203 1:dc171f34db9b 83 }
emh203 1:dc171f34db9b 84 }
emh203 1:dc171f34db9b 85 #endif
emh203 1:dc171f34db9b 86
emh203 1:dc171f34db9b 87 #ifndef INLINE_BITPLANE_GET
emh203 1:dc171f34db9b 88 BOOL BitPlane_Get(BitPlane * BP, WORD X,WORD Y)
emh203 1:dc171f34db9b 89 {
emh203 1:dc171f34db9b 90 WORD Offset;
emh203 1:dc171f34db9b 91 BYTE Mask;
emh203 1:dc171f34db9b 92
emh203 1:dc171f34db9b 93 Offset = (Y * ((BP->SizeX)>>3)) + (X>>3);
emh203 1:dc171f34db9b 94 Mask = 0x01 << (X & 0x07);
emh203 1:dc171f34db9b 95
emh203 1:dc171f34db9b 96 if((BP->BitPlaneSpace[Offset])&Mask)
emh203 1:dc171f34db9b 97 {
emh203 1:dc171f34db9b 98 return TRUE;
emh203 1:dc171f34db9b 99 }
emh203 1:dc171f34db9b 100 else
emh203 1:dc171f34db9b 101 {
emh203 1:dc171f34db9b 102 return FALSE;
emh203 1:dc171f34db9b 103 }
emh203 1:dc171f34db9b 104 }
emh203 1:dc171f34db9b 105 #endif
emh203 1:dc171f34db9b 106 void BitPlane_Clear(BitPlane * BP) {
emh203 1:dc171f34db9b 107 WORD PlaneSpaceSize;
emh203 1:dc171f34db9b 108 WORD i;
emh203 1:dc171f34db9b 109
emh203 1:dc171f34db9b 110 PlaneSpaceSize = ((BP->SizeX)>>3) * BP->SizeY;
emh203 1:dc171f34db9b 111
emh203 1:dc171f34db9b 112 for (i=0;i<PlaneSpaceSize;i++) {
emh203 1:dc171f34db9b 113 BP->BitPlaneSpace[i] = 0;
emh203 1:dc171f34db9b 114 }
emh203 1:dc171f34db9b 115 }
emh203 1:dc171f34db9b 116
emh203 1:dc171f34db9b 117
emh203 1:dc171f34db9b 118
emh203 1:dc171f34db9b 119 void InitByteQueue(ByteQueue *BQ,WORD Size,BYTE * Storage) {
emh203 1:dc171f34db9b 120 WORD i;
emh203 1:dc171f34db9b 121
emh203 1:dc171f34db9b 122 BQ->QueueSize = Size;
emh203 1:dc171f34db9b 123 BQ->ReadPtr=0;
emh203 1:dc171f34db9b 124 BQ->WritePtr=0;
emh203 1:dc171f34db9b 125 BQ->QueueStorage = Storage;
emh203 1:dc171f34db9b 126
emh203 1:dc171f34db9b 127 for (i=0;i<BQ->QueueSize;i++) {
emh203 1:dc171f34db9b 128 BQ->QueueStorage[i] = 0;
emh203 1:dc171f34db9b 129 }
emh203 1:dc171f34db9b 130 }
emh203 1:dc171f34db9b 131
emh203 1:dc171f34db9b 132 WORD BytesInQueue(ByteQueue *BQ) {
emh203 1:dc171f34db9b 133 if (BQ->ReadPtr > BQ->WritePtr) {
emh203 1:dc171f34db9b 134 return (BQ->QueueSize - BQ->ReadPtr + BQ->WritePtr);
emh203 1:dc171f34db9b 135 } else if (BQ->WritePtr > BQ->ReadPtr) {
emh203 1:dc171f34db9b 136 return (BQ->WritePtr - BQ->ReadPtr);
emh203 1:dc171f34db9b 137 } else {
emh203 1:dc171f34db9b 138 return 0;
emh203 1:dc171f34db9b 139 }
emh203 1:dc171f34db9b 140 }
emh203 1:dc171f34db9b 141
emh203 1:dc171f34db9b 142 SIGNED_WORD ByteEnqueue(ByteQueue *BQ,BYTE Val) {
emh203 1:dc171f34db9b 143 if (BytesInQueue(BQ) == BQ->QueueSize) {
emh203 1:dc171f34db9b 144 return QUEUE_FULL;
emh203 1:dc171f34db9b 145 } else {
emh203 1:dc171f34db9b 146 BQ->QueueStorage[BQ->WritePtr] = Val;
emh203 1:dc171f34db9b 147 BQ->WritePtr++;
emh203 1:dc171f34db9b 148
emh203 1:dc171f34db9b 149 if (BQ->WritePtr >= BQ->QueueSize) {
emh203 1:dc171f34db9b 150 BQ->WritePtr = 0;
emh203 1:dc171f34db9b 151 }
emh203 1:dc171f34db9b 152 return QUEUE_OK;
emh203 1:dc171f34db9b 153 }
emh203 1:dc171f34db9b 154 }
emh203 1:dc171f34db9b 155
emh203 1:dc171f34db9b 156 SIGNED_WORD ByteArrayEnqueue(ByteQueue *BQ,BYTE *Buf,WORD Len) {
emh203 1:dc171f34db9b 157 WORD i;
emh203 1:dc171f34db9b 158 for (i=0;i<Len;i++) {
emh203 1:dc171f34db9b 159 ByteEnqueue(BQ,Buf[i]);
emh203 1:dc171f34db9b 160 }
emh203 1:dc171f34db9b 161 return QUEUE_OK;
emh203 1:dc171f34db9b 162 }
emh203 1:dc171f34db9b 163
emh203 1:dc171f34db9b 164 SIGNED_WORD PrintfEnqueue(ByteQueue *BQ, const char *FormatString,...)
emh203 1:dc171f34db9b 165 {
emh203 1:dc171f34db9b 166
emh203 1:dc171f34db9b 167 va_list argptr;
emh203 1:dc171f34db9b 168 va_start(argptr,FormatString);
emh203 1:dc171f34db9b 169 vsprintf((CHAR *)StringBuffer,FormatString,argptr);
emh203 1:dc171f34db9b 170 va_end(argptr);
emh203 1:dc171f34db9b 171
emh203 1:dc171f34db9b 172 ByteArrayEnqueue(BQ,(BYTE *)StringBuffer,strlen(StringBuffer));
emh203 1:dc171f34db9b 173
emh203 1:dc171f34db9b 174 return QUEUE_OK;
emh203 1:dc171f34db9b 175 }
emh203 1:dc171f34db9b 176
emh203 1:dc171f34db9b 177
emh203 1:dc171f34db9b 178
emh203 1:dc171f34db9b 179
emh203 1:dc171f34db9b 180 SIGNED_WORD ByteDequeue(ByteQueue *BQ,BYTE *Val) {
emh203 1:dc171f34db9b 181
emh203 1:dc171f34db9b 182 if (BytesInQueue(BQ) == 0) {
emh203 1:dc171f34db9b 183 return QUEUE_EMPTY;
emh203 1:dc171f34db9b 184 } else {
emh203 1:dc171f34db9b 185 *Val = BQ->QueueStorage[BQ->ReadPtr];
emh203 1:dc171f34db9b 186
emh203 1:dc171f34db9b 187 BQ->ReadPtr++;
emh203 1:dc171f34db9b 188
emh203 1:dc171f34db9b 189 if (BQ->ReadPtr >= BQ->QueueSize) {
emh203 1:dc171f34db9b 190 BQ->ReadPtr = 0;
emh203 1:dc171f34db9b 191 }
emh203 1:dc171f34db9b 192 return QUEUE_OK;
emh203 1:dc171f34db9b 193 }
emh203 1:dc171f34db9b 194 }