Eli Hughes
/
COMPACT_FLASH
Compact Flash I/O test
DataTypes.h@1:dc171f34db9b, 2011-12-30 (annotated)
- Committer:
- emh203
- Date:
- Fri Dec 30 21:02:16 2011 +0000
- Revision:
- 1:dc171f34db9b
Who changed what in which revision?
User | Revision | Line number | New 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_*/ |