summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChristian Pointner <equinox@mur.at>2012-06-13 18:48:31 +0000
committerChristian Pointner <equinox@mur.at>2012-06-13 18:48:31 +0000
commit53a1db7f56552857f598898da00f5fabc35743f7 (patch)
tree5aca2e55deb478df43b3fac8107412f50ee45e3c /tools
parentadded coypright header (diff)
cleanup
git-svn-id: https://svn.spreadspace.org/mur.sat@525 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'tools')
-rw-r--r--tools/idm-ringbuffer/ringbuffer.c78
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;
}
}