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 <stdio.h>
emh203 1:dc171f34db9b 2 #include <stdarg.h>
emh203 1:dc171f34db9b 3 #include "ff.h"
emh203 1:dc171f34db9b 4
emh203 1:dc171f34db9b 5 #define INLINE_BITPLANE_PUT
emh203 1:dc171f34db9b 6 #define INLINE_BITPLANE_GET
emh203 1:dc171f34db9b 7
emh203 1:dc171f34db9b 8 #ifndef DATATYPES_H_
emh203 1:dc171f34db9b 9 #define DATATYPES_H_
emh203 1:dc171f34db9b 10
emh203 1:dc171f34db9b 11 //#define BYTE unsigned char
emh203 1:dc171f34db9b 12 #define WORD unsigned short
emh203 1:dc171f34db9b 13 #define DWORD unsigned long
emh203 1:dc171f34db9b 14
emh203 1:dc171f34db9b 15 #define SIGNED_BYTE signed char
emh203 1:dc171f34db9b 16 #define SIGNED_WORD signed short
emh203 1:dc171f34db9b 17 #define SIGNED_DWORD signed int
emh203 1:dc171f34db9b 18
emh203 1:dc171f34db9b 19 //#define CHAR char
emh203 1:dc171f34db9b 20
emh203 1:dc171f34db9b 21 #define BOOL BYTE
emh203 1:dc171f34db9b 22
emh203 1:dc171f34db9b 23 #ifndef TRUE
emh203 1:dc171f34db9b 24 #define TRUE 1
emh203 1:dc171f34db9b 25 #endif
emh203 1:dc171f34db9b 26
emh203 1:dc171f34db9b 27
emh203 1:dc171f34db9b 28 #ifndef FALSE
emh203 1:dc171f34db9b 29 #define FALSE 0
emh203 1:dc171f34db9b 30 #endif
emh203 1:dc171f34db9b 31
emh203 1:dc171f34db9b 32 #ifndef YEP
emh203 1:dc171f34db9b 33 #define YEP TRUE
emh203 1:dc171f34db9b 34 #endif
emh203 1:dc171f34db9b 35
emh203 1:dc171f34db9b 36
emh203 1:dc171f34db9b 37 #ifndef NOPE
emh203 1:dc171f34db9b 38 #define NOPE FALSE
emh203 1:dc171f34db9b 39 #endif
emh203 1:dc171f34db9b 40
emh203 1:dc171f34db9b 41
emh203 1:dc171f34db9b 42 #define STACK_FULL -1
emh203 1:dc171f34db9b 43 #define STACK_EMPTY -2
emh203 1:dc171f34db9b 44 #define STACK_PUSH_OK 0
emh203 1:dc171f34db9b 45
emh203 1:dc171f34db9b 46 #define QUEUE_FULL -1
emh203 1:dc171f34db9b 47 #define QUEUE_EMPTY -2
emh203 1:dc171f34db9b 48 #define QUEUE_OK 0
emh203 1:dc171f34db9b 49
emh203 1:dc171f34db9b 50
emh203 1:dc171f34db9b 51 typedef struct{
emh203 1:dc171f34db9b 52
emh203 1:dc171f34db9b 53 BYTE *StackSpace;
emh203 1:dc171f34db9b 54 WORD Ptr;
emh203 1:dc171f34db9b 55 WORD Size;
emh203 1:dc171f34db9b 56 } ByteStack;
emh203 1:dc171f34db9b 57
emh203 1:dc171f34db9b 58 typedef struct{
emh203 1:dc171f34db9b 59 BYTE *StackSpace;
emh203 1:dc171f34db9b 60 BYTE Ptr;
emh203 1:dc171f34db9b 61 BYTE Size;
emh203 1:dc171f34db9b 62 } BitStack;
emh203 1:dc171f34db9b 63
emh203 1:dc171f34db9b 64 typedef struct {
emh203 1:dc171f34db9b 65
emh203 1:dc171f34db9b 66 BYTE *BitPlaneSpace;
emh203 1:dc171f34db9b 67
emh203 1:dc171f34db9b 68 WORD SizeX; // must be a BYTE aligned
emh203 1:dc171f34db9b 69 WORD SizeY;
emh203 1:dc171f34db9b 70
emh203 1:dc171f34db9b 71 } BitPlane;
emh203 1:dc171f34db9b 72
emh203 1:dc171f34db9b 73
emh203 1:dc171f34db9b 74 typedef struct {
emh203 1:dc171f34db9b 75
emh203 1:dc171f34db9b 76 WORD ReadPtr;
emh203 1:dc171f34db9b 77 WORD WritePtr;
emh203 1:dc171f34db9b 78 WORD QueueSize;
emh203 1:dc171f34db9b 79 BYTE *QueueStorage;
emh203 1:dc171f34db9b 80
emh203 1:dc171f34db9b 81 } ByteQueue;
emh203 1:dc171f34db9b 82
emh203 1:dc171f34db9b 83
emh203 1:dc171f34db9b 84
emh203 1:dc171f34db9b 85 #ifdef INLINE_BITPLANE_PUT
emh203 1:dc171f34db9b 86 inline void BitPlane_Put(BitPlane * BP, WORD X,WORD Y, BOOL Value)
emh203 1:dc171f34db9b 87 {
emh203 1:dc171f34db9b 88 WORD Offset;
emh203 1:dc171f34db9b 89 BYTE Mask;
emh203 1:dc171f34db9b 90
emh203 1:dc171f34db9b 91 Offset = (Y * ((BP->SizeX)>>3)) + (X>>3);
emh203 1:dc171f34db9b 92 Mask = 0x01 << (X & 0x07);
emh203 1:dc171f34db9b 93
emh203 1:dc171f34db9b 94 if(Value)
emh203 1:dc171f34db9b 95 {
emh203 1:dc171f34db9b 96 BP->BitPlaneSpace[Offset] |= Mask;
emh203 1:dc171f34db9b 97 }
emh203 1:dc171f34db9b 98 else
emh203 1:dc171f34db9b 99 {
emh203 1:dc171f34db9b 100 BP->BitPlaneSpace[Offset] &= ~Mask;
emh203 1:dc171f34db9b 101 }
emh203 1:dc171f34db9b 102 }
emh203 1:dc171f34db9b 103 #else
emh203 1:dc171f34db9b 104 void BitPlane_Put(BitPlane * BP, WORD X,WORD Y, BOOL Value);
emh203 1:dc171f34db9b 105 #endif
emh203 1:dc171f34db9b 106
emh203 1:dc171f34db9b 107 #ifdef INLINE_BITPLANE_GET
emh203 1:dc171f34db9b 108 inline BOOL BitPlane_Get(BitPlane * BP, WORD X,WORD Y)
emh203 1:dc171f34db9b 109 {
emh203 1:dc171f34db9b 110 WORD Offset;
emh203 1:dc171f34db9b 111 BYTE Mask;
emh203 1:dc171f34db9b 112
emh203 1:dc171f34db9b 113 Offset = (Y * ((BP->SizeX)>>3)) + (X>>3);
emh203 1:dc171f34db9b 114 Mask = 0x01 << (X & 0x07);
emh203 1:dc171f34db9b 115
emh203 1:dc171f34db9b 116 if((BP->BitPlaneSpace[Offset])&Mask)
emh203 1:dc171f34db9b 117 {
emh203 1:dc171f34db9b 118 return TRUE;
emh203 1:dc171f34db9b 119 }
emh203 1:dc171f34db9b 120 else
emh203 1:dc171f34db9b 121 {
emh203 1:dc171f34db9b 122 return FALSE;
emh203 1:dc171f34db9b 123 }
emh203 1:dc171f34db9b 124 }
emh203 1:dc171f34db9b 125 #else
emh203 1:dc171f34db9b 126 BOOL BitPlane_Get(BitPlane * BP, WORD X,WORD Y);
emh203 1:dc171f34db9b 127 #endif
emh203 1:dc171f34db9b 128
emh203 1:dc171f34db9b 129
emh203 1:dc171f34db9b 130 void BitPlane_Clear(BitPlane * BP);
emh203 1:dc171f34db9b 131
emh203 1:dc171f34db9b 132 void InitByteQueue(ByteQueue *BQ,WORD Size,BYTE * Storage);
emh203 1:dc171f34db9b 133 WORD BytesInQueue(ByteQueue *BQ);
emh203 1:dc171f34db9b 134 SIGNED_WORD ByteDequeue(ByteQueue *BQ,BYTE *Val);
emh203 1:dc171f34db9b 135 SIGNED_WORD ByteEnqueue(ByteQueue *BQ,BYTE Val);
emh203 1:dc171f34db9b 136 SIGNED_WORD ByteArrayEnqueue(ByteQueue *BQ,BYTE *Buf,WORD Len);
emh203 1:dc171f34db9b 137 SIGNED_WORD PrintfEnqueue(ByteQueue *BQ, const char *FormatString,...);
emh203 1:dc171f34db9b 138
emh203 1:dc171f34db9b 139 #endif /*DATATYPES_H_*/