X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fserver%2Fmain.c;h=8abb9847cc1c89a3863afab9ab11e6df6f4821e2;hb=1e3c14b4fe54108b8bebbc000a93f7eb30284c67;hp=17397c118e84132291ba1321289b70d189ce3e26;hpb=3e7700e1b9b652bb3ed7daaff76cf891907a63b3;p=tpg%2Fopendispense2.git diff --git a/src/server/main.c b/src/server/main.c index 17397c1..8abb984 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -16,6 +16,7 @@ #include #include #include +#include // === IMPORTS === extern void Init_Cokebank(const char *Argument); // cokebank.c @@ -129,22 +130,48 @@ int InitSerial(const char *File, int BaudRate) int baud; int fd; - - fd = open(File, O_RDWR | O_NOCTTY); + fd = open(File, O_RDWR | O_NOCTTY | O_NONBLOCK); if( fd == -1 ) return -1; switch(BaudRate) { case 9600: baud = B9600; break; - default: return ; + default: close(fd); return -1; } - cfmakeraw(&info); // Sets 8N1 + info.c_lflag = 0; // Non-Canoical, No Echo + info.c_cflag = baud | CS8 | CLOCAL | CREAD; // baud, 8N1 cfsetspeed(&info, baud); + info.c_cc[VTIME] = 0; // No time limit + info.c_cc[VMIN] = 1; // Block until 1 char + tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &info); return fd; } +/** + * \brief Create a formatted heap string + */ +char *mkstr(const char *Format, ...) +{ + va_list args; + int len; + char *ret; + + va_start(args, Format); + len = vsnprintf(NULL, 0, Format, args); + va_end(args); + + ret = malloc( len + 1 ); + if(!ret) return NULL; + + va_start(args, Format); + vsprintf(ret, Format, args); + va_end(args); + + return ret; +} +