For Terrance

Dependencies:   mbed

Committer:
emh203
Date:
Wed Jun 13 15:10:06 2012 +0000
Revision:
0:085749c8446f

        

Who changed what in which revision?

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