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