Eli Hughes
/
RobotPowerLogger-V2
For Terrance
DataTypes.h
- Committer:
- emh203
- Date:
- 2012-06-13
- Revision:
- 0:085749c8446f
File content as of revision 0:085749c8446f:
#include <stdio.h> #include <stdarg.h> #include "ff.h" #define INLINE_BITPLANE_PUT #define INLINE_BITPLANE_GET #ifndef DATATYPES_H_ #define DATATYPES_H_ //#define BYTE unsigned char #define WORD unsigned short #define DWORD unsigned long #define SIGNED_BYTE signed char #define SIGNED_WORD signed short #define SIGNED_DWORD signed int //#define CHAR char #define BOOL BYTE #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #ifndef YEP #define YEP TRUE #endif #ifndef NOPE #define NOPE FALSE #endif #define STACK_FULL -1 #define STACK_EMPTY -2 #define STACK_PUSH_OK 0 #define QUEUE_FULL -1 #define QUEUE_EMPTY -2 #define QUEUE_OK 0 typedef struct{ BYTE *StackSpace; WORD Ptr; WORD Size; } ByteStack; typedef struct{ BYTE *StackSpace; BYTE Ptr; BYTE Size; } BitStack; typedef struct { BYTE *BitPlaneSpace; WORD SizeX; // must be a BYTE aligned WORD SizeY; } BitPlane; typedef struct { WORD ReadPtr; WORD WritePtr; WORD QueueSize; BYTE *QueueStorage; } ByteQueue; #ifdef INLINE_BITPLANE_PUT inline void BitPlane_Put(BitPlane * BP, WORD X,WORD Y, BOOL Value) { WORD Offset; BYTE Mask; Offset = (Y * ((BP->SizeX)>>3)) + (X>>3); Mask = 0x01 << (X & 0x07); if(Value) { BP->BitPlaneSpace[Offset] |= Mask; } else { BP->BitPlaneSpace[Offset] &= ~Mask; } } #else void BitPlane_Put(BitPlane * BP, WORD X,WORD Y, BOOL Value); #endif #ifdef INLINE_BITPLANE_GET inline BOOL BitPlane_Get(BitPlane * BP, WORD X,WORD Y) { WORD Offset; BYTE Mask; Offset = (Y * ((BP->SizeX)>>3)) + (X>>3); Mask = 0x01 << (X & 0x07); if((BP->BitPlaneSpace[Offset])&Mask) { return TRUE; } else { return FALSE; } } #else BOOL BitPlane_Get(BitPlane * BP, WORD X,WORD Y); #endif void BitPlane_Clear(BitPlane * BP); void InitByteQueue(ByteQueue *BQ,WORD Size,BYTE * Storage); WORD BytesInQueue(ByteQueue *BQ); SIGNED_WORD ByteDequeue(ByteQueue *BQ,BYTE *Val); SIGNED_WORD ByteEnqueue(ByteQueue *BQ,BYTE Val); SIGNED_WORD ByteArrayEnqueue(ByteQueue *BQ,BYTE *Buf,WORD Len); SIGNED_WORD PrintfEnqueue(ByteQueue *BQ, const char *FormatString,...); #endif /*DATATYPES_H_*/