diff options
author | Christian Pointner <equinox@mur.at> | 2012-06-13 18:48:31 +0000 |
---|---|---|
committer | Christian Pointner <equinox@mur.at> | 2012-06-13 18:48:31 +0000 |
commit | 53a1db7f56552857f598898da00f5fabc35743f7 (patch) | |
tree | 5aca2e55deb478df43b3fac8107412f50ee45e3c /tools/idm-ringbuffer/ringbuffer.c | |
parent | added coypright header (diff) |
cleanup
git-svn-id: https://svn.spreadspace.org/mur.sat@525 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'tools/idm-ringbuffer/ringbuffer.c')
-rw-r--r-- | tools/idm-ringbuffer/ringbuffer.c | 78 |
1 files changed, 34 insertions, 44 deletions
diff --git a/tools/idm-ringbuffer/ringbuffer.c b/tools/idm-ringbuffer/ringbuffer.c index 0d4d118..5468074 100644 --- a/tools/idm-ringbuffer/ringbuffer.c +++ b/tools/idm-ringbuffer/ringbuffer.c @@ -37,52 +37,28 @@ #define BUFFER_START 0x2000u //#define BUFFER_SIZE 960u -#define BUFFER_SIZE 10 +#define BUFFER_SIZE 10u #define BUFFER_END (BUFFER_START + BUFFER_SIZE) #define RAM_SIZE (BUFFER_END + 1) #define BOOL int #define FALSE 0 #define TRUE 1 -BOOL overrun = FALSE; -BOOL overrunForReader = FALSE; -BOOL underrun = TRUE; char picRam[RAM_SIZE] = { 0 }; char* bufferStart = &(picRam[BUFFER_START]); char* bufferEnd = &(picRam[BUFFER_END - 1]); + + +/* ##### Code under Test ##### */ + char* writePtr = 0; char* readPtr = 0; +BOOL overrun = FALSE; +BOOL overrunForReader = FALSE; +BOOL underrun = TRUE; BOOL currentByteLoaded = FALSE; char spiData = 0; -void debugPrint() { - printf("wPtr: %d, rPtr: %d, cbl: %d, ovr: %d, udr: %d\n", - (int) (writePtr - bufferStart), - (int) (readPtr - bufferStart), - (int) currentByteLoaded, - (int) overrun, - (int) underrun); - int i; - for(i = 0; i < BUFFER_SIZE; ++i) { - printf("%02x ", bufferStart[i]); - } - printf("\n"); -} - -int getch(void) -{ - int ch; - struct termios oldt; - struct termios newt; - tcgetattr(STDIN_FILENO, &oldt); /*store old settings */ - newt = oldt; /* copy old settings to new settings */ - newt.c_lflag &= ~(ICANON | ECHO); /* make one change to old settings in new settings */ - tcsetattr(STDIN_FILENO, TCSANOW, &newt); /*apply the new settings immediatly */ - ch = getchar(); /* standard getchar call */ - tcsetattr(STDIN_FILENO, TCSANOW, &oldt); /*reapply the old settings */ - return ch; /*return received char */ -} - void incrementWriteIdx() { if (!underrun && (writePtr == readPtr)) { overrun = TRUE; @@ -127,10 +103,9 @@ void endRead() { void storeSample() { static char value = 0; - value++; incrementWriteIdx(); if (!overrun) { - *writePtr = value; + *writePtr = ++value; } } @@ -141,31 +116,46 @@ void triggerByteTransferred() { } else if (spiData == 'r') { beginRead(); } else { - printf("%s", "I don't like you!"); + printf("%s\n", "I don't like you!"); + } +} + + +/* ##### test environment ##### */ + +void debugPrint() { + printf("wPtr: %d, rPtr: %d, cbl: %d, ovr: %d, udr: %d\n", + (int) (writePtr - bufferStart), + (int) (readPtr - bufferStart), + (int) currentByteLoaded, + (int) overrun, + (int) underrun); + int i; + for(i = 0; i < BUFFER_SIZE; ++i) { + printf("%02x ", bufferStart[i]); } + printf("\n"); } int main() { writePtr = bufferStart; readPtr = bufferStart; + + struct termios t; + tcgetattr(STDIN_FILENO, &t); + t.c_lflag &= ~(ICANON | ECHO); + tcsetattr(STDIN_FILENO, TCSANOW, &t); char key; for(;;) { - /*ssize_t len = read(0, &key, 1); - if (len < 0 && (errno == EINTR || errno == EAGAIN)) { - continue; - } else if (len == 0) { - return 0; - } else if (len != 1) { abort(); }*/ - debugPrint(); - key = getch(); + key = getchar(); switch(key) { + case 'q': return 0; case '+': storeSample(); break; case '0': spiData = 0; triggerByteTransferred(); break; - case 'q': return 0; default: spiData = key; triggerByteTransferred(); break; } } |