Skip to content
Snippets Groups Projects
Commit 4343d1b1 authored by John Hodge's avatar John Hodge
Browse files

Cleaning up client, cleaning coke code

parent c306be01
Branches
No related merge requests found
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
ARGS="--itemsfile items.cfg -p 11020" ARGS="--itemsfile items.cfg -p 11020"
ARGS=$ARGS" --cokeport /dev/ttyUSB0" ARGS=$ARGS" --cokeport /dev/ttyUSB0"
if [ "x$1" == "xdbg" ]; then #if [ "x$1" == "xdbg" ]; then
LD_LIBRARY_PATH=. gdb --args ./dispsrv $ARGS # LD_LIBRARY_PATH=. gdb --args ./dispsrv $ARGS
else #else
LD_LIBRARY_PATH=. ./dispsrv $ARGS LD_LIBRARY_PATH=. ./dispsrv $ARGS
fi #fi
...@@ -179,6 +179,7 @@ int ShowNCursesUI(void) ...@@ -179,6 +179,7 @@ int ShowNCursesUI(void)
int itemCount = displayMinItems; int itemCount = displayMinItems;
int itemBase = 0; int itemBase = 0;
int currentItem = 0; int currentItem = 0;
int ret = -2; // -2: Used for marking "no return yet"
int height, width; int height, width;
...@@ -186,6 +187,8 @@ int ShowNCursesUI(void) ...@@ -186,6 +187,8 @@ int ShowNCursesUI(void)
initscr(); initscr();
raw(); noecho(); raw(); noecho();
// Get item count
// - 6: randomly chosen (Need at least 3)
itemCount = LINES - 6; itemCount = LINES - 6;
if( itemCount > giNumItems ) if( itemCount > giNumItems )
itemCount = giNumItems; itemCount = giNumItems;
...@@ -292,7 +295,18 @@ int ShowNCursesUI(void) ...@@ -292,7 +295,18 @@ int ShowNCursesUI(void)
} }
} }
else { else {
break; switch(ch)
{
case '\n':
ret = currentItem;
break;
case 'q':
ret = -1; // -1: Return with no dispense
break;
}
// Check if the return value was changed
if( ret != -2 ) break;
} }
} }
...@@ -300,7 +314,7 @@ int ShowNCursesUI(void) ...@@ -300,7 +314,7 @@ int ShowNCursesUI(void)
// Leave // Leave
endwin(); endwin();
return -1; return ret;
} }
/** /**
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
int Coke_InitHandler(); int Coke_InitHandler();
int Coke_CanDispense(int User, int Item); int Coke_CanDispense(int User, int Item);
int Coke_DoDispense(int User, int Item); int Coke_DoDispense(int User, int Item);
void WaitForColon(); int WaitForColon();
int ReadLine(int len, char *output); int ReadLine(int len, char *output);
// === GLOBALS === // === GLOBALS ===
...@@ -58,11 +58,14 @@ int Coke_CanDispense(int User, int Item) ...@@ -58,11 +58,14 @@ int Coke_CanDispense(int User, int Item)
// Sanity please // Sanity please
if( Item < 0 || Item > 6 ) return -1; // -EYOURBAD if( Item < 0 || Item > 6 ) return -1; // -EYOURBAD
write(giCoke_SerialFD, "\r\n", 2); write(giCoke_SerialFD, "d7\r\n", 4);
write(giCoke_SerialFD, "\r\n", 2); write(giCoke_SerialFD, "d7\r\n", 4);
write(giCoke_SerialFD, "\r\n", 2); write(giCoke_SerialFD, "d7\r\n", 4);
WaitForColon(); if( WaitForColon() ) {
fprintf(stderr, "Coke machine timed out\n");
return -2; // -EMYBAD
}
// Ask the coke machine // Ask the coke machine
sprintf(tmp, "s%i\r\n", Item); sprintf(tmp, "s%i\r\n", Item);
...@@ -131,11 +134,16 @@ char ReadChar() ...@@ -131,11 +134,16 @@ char ReadChar()
fd_set readfs; fd_set readfs;
char ch = 0; char ch = 0;
int ret; int ret;
struct timeval timeout;
timeout.tv_sec = 5; // 5 second timeout
timeout.tv_usec = 0;
FD_ZERO(&readfs); FD_ZERO(&readfs);
FD_SET(giCoke_SerialFD, &readfs); FD_SET(giCoke_SerialFD, &readfs);
ret = select(giCoke_SerialFD+1, &readfs, NULL, NULL, NULL); ret = select(giCoke_SerialFD+1, &readfs, NULL, NULL, &timeout);
if( ret == 0 ) return 0; // Timeout
if( ret != 1 ) { if( ret != 1 ) {
printf("readchar return %i\n", ret); printf("readchar return %i\n", ret);
return 0; return 0;
...@@ -150,7 +158,7 @@ char ReadChar() ...@@ -150,7 +158,7 @@ char ReadChar()
return ch; return ch;
} }
void WaitForColon() int WaitForColon()
{ {
fd_set readfs; fd_set readfs;
char ch = 0; char ch = 0;
...@@ -158,6 +166,10 @@ void WaitForColon() ...@@ -158,6 +166,10 @@ void WaitForColon()
FD_SET(giCoke_SerialFD, &readfs); FD_SET(giCoke_SerialFD, &readfs);
while( (ch = ReadChar()) != ':' && ch != 0); while( (ch = ReadChar()) != ':' && ch != 0);
if( ch == 0 ) return -1; // Timeout
return 0;
} }
int ReadLine(int len, char *output) int ReadLine(int len, char *output)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment