X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fserver%2Fmain.c;h=b23cee4d1d2e6f9a2cd53be075642ab02190c2fa;hb=e1fdf2ccb6a7b5301e44aaf7927fdb49f511a30d;hp=17397c118e84132291ba1321289b70d189ce3e26;hpb=3e7700e1b9b652bb3ed7daaff76cf891907a63b3;p=tpg%2Fopendispense2.git diff --git a/src/server/main.c b/src/server/main.c index 17397c1..b23cee4 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -16,6 +16,8 @@ #include #include #include +#include +#include // === IMPORTS === extern void Init_Cokebank(const char *Argument); // cokebank.c @@ -81,6 +83,8 @@ int main(int argc, char *argv[]) signal(SIGINT, sigint_handler); + openlog("odispense2", 0, LOG_LOCAL4); + Init_Cokebank(gsCokebankPath); Init_Handlers(); @@ -129,22 +133,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; +} +