Eli Hughes
/
RobotPowerLogger-V2
For Terrance
DataTypes.h@0:085749c8446f, 2012-06-13 (annotated)
- Committer:
- emh203
- Date:
- Wed Jun 13 15:10:06 2012 +0000
- Revision:
- 0:085749c8446f
Who changed what in which revision?
User | Revision | Line number | New 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_*/ |