Dependencies:   mbed

Committer:
emh203
Date:
Thu Feb 16 00:41:26 2012 +0000
Revision:
0:76427232f435

        

Who changed what in which revision?

UserRevisionLine numberNew 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_*/