[TPG] Fixes to bugs exposed during move
authorJohn Hodge <[email protected]>
Sun, 10 Apr 2011 09:38:48 +0000 (17:38 +0800)
committerroot <[email protected]>
Sun, 10 Apr 2011 09:40:54 +0000 (17:40 +0800)
- Serial Input/Output flags were left unset
- Coke debug enabled
- Empty line detection added to slot status reads.
- Fixed compile issues in client (OpenSSL is no longer needed)

src/client/Makefile
src/client/main.c
src/server/handler_coke.c
src/server/main.c

index fa56d77..748819d 100644 (file)
@@ -1,6 +1,7 @@
 
 CFLAGS := -Wall -Werror -g
-LDFLAGS := -g -lncurses -lssl
+LDFLAGS := -g -lncurses
+# -lssl
 
 BIN := ../../dispense
 OBJ := main.o
index 2c2fb1a..d7a8e49 100644 (file)
@@ -23,7 +23,7 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-#include <openssl/sha.h>       // SHA1
+//#include <openssl/sha.h>     // SHA1
 
 #define        USE_NCURSES_INTERFACE   0
 #define DEBUG_TRACE_SERVER     0
index 58e3b79..79d0a46 100644 (file)
@@ -21,7 +21,7 @@
 #include <pthread.h>
 
 #define READ_TIMEOUT   2       // 2 seconds for ReadChar
-#define TRACE_COKE     0
+#define TRACE_COKE     1
 
 #if TRACE_COKE
 # define TRACE(v...) do{printf("%s: ",__func__);printf(v);}while(0)
@@ -60,7 +60,7 @@ int Coke_InitHandler()
 {
        CompileRegex(&gCoke_StatusRegex, "^slot\\s+([0-9]+)\\s+([^:]+):([a-zA-Z]+)\\s*", REG_EXTENDED);
        
-       printf("connecting to coke machine...\n");
+       printf("Connecting to coke machine on '%s'\n", gsCoke_SerialPort);
        
        giCoke_SerialFD = InitSerial(gsCoke_SerialPort, 9600);
        if( giCoke_SerialFD == -1 ) {
@@ -90,6 +90,8 @@ int Coke_InitHandler()
                        
                        Coke_int_UpdateSlotStatuses();
                }
+               else
+                       fprintf(stderr, "Coke machine timed out.\n");
        }
        
        AddPeriodicFunction(Coke_int_UpdateSlotStatuses);
@@ -154,7 +156,8 @@ void Coke_int_UpdateSlotStatuses(void)
        
        for( i = 0; i <= 6; i ++ )
        {
-               len = ReadLine(sizeof tmp, tmp);
+               // Read until non-blank line
+               while( (len = ReadLine(sizeof tmp, tmp)) == 0 ) ;
                if( len == -1 ) {
                        TRACE("Read failed on slot %i\n", i);
                        goto ret;       // I give up :(
index a8d8d32..18c02dc 100644 (file)
@@ -250,6 +250,8 @@ int InitSerial(const char *File, int BaudRate)
        
        info.c_lflag = 0;       // Non-Canoical, No Echo
        info.c_cflag = baud | CS8 | CLOCAL | CREAD;     // baud, 8N1
+       info.c_iflag = IGNCR;   // Ignore \r
+       info.c_oflag = 0;       // ???
        cfsetspeed(&info, baud);
        info.c_cc[VTIME] = 0;   // No time limit
        info.c_cc[VMIN] = 1;    // Block until 1 char

UCC git Repository :: git.ucc.asn.au