From 3ec0712bc4089bf40dedee4aa216bd6e3d806424 Mon Sep 17 00:00:00 2001 From: Roland Jax Date: Thu, 20 Feb 2014 23:11:31 +0100 Subject: [PATCH] Improved ebus device handling to use tcp based device too --- ChangeLog | 2 + lib/ebus-bus.c | 353 ++++++++++++++++++++++++++-------------------- lib/ebus-bus.h | 89 ++++++------ lib/ebus-cmd.c | 2 +- lib/ebus-common.h | 6 +- lib/ebus-decode.c | 4 +- src/ebusd.c | 46 +++--- src/utils.c | 2 +- tools/check.c | 2 +- tools/ebus_send.c | 12 +- 10 files changed, 291 insertions(+), 227 deletions(-) diff --git a/ChangeLog b/ChangeLog index beebe6ad..de650a11 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,8 @@ ebus Daemon (ebusd) - ChangeLog 2014-02-20: * Missing void declarations in various function parameter added. +* New branch "socket" created. +* Improved ebus device handling to use tcp based device too. 2014-01-22: * autogen.sh modified. diff --git a/lib/ebus-bus.c b/lib/ebus-bus.c index b907af4a..e87cc41c 100644 --- a/lib/ebus-bus.c +++ b/lib/ebus-bus.c @@ -40,6 +40,10 @@ #include #include #include +#include +#include +#include +#include #include "log.h" #include "ebus-decode.h" @@ -68,15 +72,14 @@ static unsigned char ack = EBUS_ACK; static unsigned char nak = EBUS_NAK; static unsigned char syn = EBUS_SYN; -static int sfd; +static int bfd; +static int devicetype = BUS_DEVICE_SERIAL; static struct termios oldtio; static FILE *rawfp = NULL; - - void eb_set_nodevicecheck(int check) { @@ -189,131 +192,6 @@ eb_raw_file_write(const unsigned char *buf, int buflen) -int -eb_serial_valid(void) -{ - int serial; - - if (ioctl(sfd, TIOCMGET, &serial) < 0 && nodevicecheck == NO) - return -1; - else - return 0; -} - -int -eb_serial_open(const char *dev, int *fd) -{ - int ret; - struct termios newtio; - - sfd = open(dev, O_RDWR | O_NOCTTY | O_NDELAY); - //~ err_ret_if(sfd < 0, -1); - if (sfd < 0) - return -1; - - ret = fcntl(sfd, F_SETFL, 0); - err_ret_if(ret < 0, -1); - - /* check if the usb device is working */ - ret = eb_serial_valid(); - err_ret_if(ret < 0, -2); - - /* save current settings of serial port */ - ret = tcgetattr(sfd, &oldtio); - err_ret_if(ret < 0, -1); - - memset(&newtio, '\0', sizeof(newtio)); - - newtio.c_cflag = SERIAL_BAUDRATE | CS8 | CLOCAL | CREAD; - newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); - newtio.c_iflag = IGNPAR; - newtio.c_oflag &= ~OPOST; - - newtio.c_cc[VMIN] = 1; - newtio.c_cc[VTIME] = 0; - - ret = tcflush(sfd, TCIFLUSH); - err_ret_if(ret < 0, -1); - - /* activate new settings of serial port */ - ret = tcsetattr(sfd, TCSANOW, &newtio); - err_ret_if(ret < 0, -1); - - *fd = sfd; - - return 0; -} - -int -eb_serial_close(void) -{ - int ret; - - /* activate old settings of serial port */ - ret = tcsetattr(sfd, TCSANOW, &oldtio); - /* Ignore this error otherwise USB port may stay unclosed */ - /* err_ret_if(ret < 0, -1); */ - - /* Close file descriptor from serial device */ - ret = close(sfd); - err_ret_if(ret < 0, -1); - - return 0; -} - -int -eb_serial_send(const unsigned char *buf, int buflen) -{ - int ret, val; - - /* write msg to ebus device */ - val = write(sfd, buf, buflen); - err_ret_if(val < 0, -1); - - ret = tcflush(sfd, TCIOFLUSH); - err_ret_if(ret < 0, -1); - - return val; -} - -int -eb_serial_recv(unsigned char *buf, int *buflen) -{ - int ret; - - /* flush deactivated - brings us an error */ - /* tcflush(sfd, TCIOFLUSH); */ - - /* read msg from ebus device */ - *buflen = read(sfd, buf, *buflen); - err_if(*buflen < 0); - - if (*buflen < 0) { - log_print(L_WAR, "error read serial device"); - return -1; - } - - if (*buflen > SERIAL_BUFSIZE) { - log_print(L_WAR, "read data len > %d", SERIAL_BUFSIZE); - return -3; - } - - /* print bus */ - if (showraw == YES) - eb_print_hex(buf, *buflen); - - /* dump raw data*/ - if (rawdump == YES) { - ret = eb_raw_file_write(buf, *buflen); - if (ret < 0) - log_print(L_WAR, "can't write rawdata"); - } - - return 0; -} - - - void eb_print_result(void) { @@ -364,7 +242,7 @@ eb_recv_data_get(unsigned char *buf, int *buflen) void eb_recv_data_prepare(const unsigned char *buf, int buflen) { - unsigned char tmp[SERIAL_BUFSIZE]; + unsigned char tmp[BUS_DEVICE_BUFSIZE]; int tmplen, crc; memset(tmp, '\0', sizeof(tmp)); @@ -407,7 +285,7 @@ eb_recv_data_prepare(const unsigned char *buf, int buflen) int eb_recv_data(unsigned char *buf, int *buflen) { - unsigned char tmp[SERIAL_BUFSIZE], msg[SERIAL_BUFSIZE]; + unsigned char tmp[BUS_DEVICE_BUFSIZE], msg[BUS_DEVICE_BUFSIZE]; int tmplen, msglen, ret, i, esc, found; memset(msg, '\0', sizeof(msg)); @@ -421,7 +299,7 @@ eb_recv_data(unsigned char *buf, int *buflen) memset(tmp, '\0', sizeof(tmp)); tmplen = sizeof(tmp); - ret = eb_serial_recv(tmp, &tmplen); + ret = eb_bus_recv(tmp, &tmplen); if (ret < 0) return -1; @@ -506,7 +384,7 @@ eb_recv_data(unsigned char *buf, int *buflen) int eb_bus_wait_syn(int *skip) { - unsigned char buf[SERIAL_BUFSIZE]; + unsigned char buf[BUS_DEVICE_BUFSIZE]; int buflen, ret, i, found; found = 99; @@ -516,7 +394,7 @@ eb_bus_wait_syn(int *skip) memset(buf, '\0', sizeof(buf)); buflen = sizeof(buf); - ret = eb_serial_recv(buf, &buflen); + ret = eb_bus_recv(buf, &buflen); if (ret < 0) return -1; @@ -543,7 +421,7 @@ eb_bus_wait_syn(int *skip) int eb_bus_wait(void) { - unsigned char buf[SERIAL_BUFSIZE]; + unsigned char buf[BUS_DEVICE_BUFSIZE]; int buflen, ret, skip, retry; struct timeval tact, tlast, tdiff; @@ -559,7 +437,7 @@ eb_bus_wait(void) gettimeofday(&tlast, NULL); /* send QQ */ - ret = eb_serial_send(&qq, 1); + ret = eb_bus_send(&qq, 1); if (ret < 0) return -1; @@ -576,7 +454,7 @@ eb_bus_wait(void) /* receive 1 byte - must be QQ */ memset(buf, '\0', sizeof(buf)); buflen = sizeof(buf); - ret = eb_serial_recv(buf, &buflen); + ret = eb_bus_recv(buf, &buflen); if (ret < 0) return -1; @@ -600,7 +478,7 @@ eb_bus_free(void) ret = 0; skip = 0; - ret = eb_serial_send(&syn, 1); + ret = eb_bus_send(&syn, 1); if (ret < 0) return -1; @@ -611,12 +489,187 @@ eb_bus_free(void) return 0; } +int +eb_bus_valid(void) +{ + int busdevice; + + if (ioctl(bfd, TIOCMGET, &busdevice) < 0 && nodevicecheck == NO) + return -1; + else + return 0; +} + +void +eb_bus_devicetype(const char *dev) +{ + if (strchr(dev, '/') == NULL && strchr(dev, ':') != NULL) { + + devicetype = BUS_DEVICE_SOCKET; + } +} + +int +eb_bus_open(const char *dev, int *fd) +{ + int ret; + + eb_bus_devicetype(dev); + + if (devicetype == BUS_DEVICE_SERIAL) { + struct termios newtio; + + bfd = open(dev, O_RDWR | O_NOCTTY | O_NDELAY); + //~ err_ret_if(bfd < 0, -1); + if (bfd < 0) + return -1; + + ret = fcntl(bfd, F_SETFL, 0); + err_ret_if(ret < 0, -1); + + /* check if the serial device is working */ + ret = eb_bus_valid(); + err_ret_if(ret < 0, -2); + + /* save current settings of serial device */ + ret = tcgetattr(bfd, &oldtio); + err_ret_if(ret < 0, -1); + + memset(&newtio, '\0', sizeof(newtio)); + + newtio.c_cflag = SERIAL_BAUDRATE | CS8 | CLOCAL | CREAD; + newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); + newtio.c_iflag = IGNPAR; + newtio.c_oflag &= ~OPOST; + + newtio.c_cc[VMIN] = 1; + newtio.c_cc[VTIME] = 0; + + ret = tcflush(bfd, TCIFLUSH); + err_ret_if(ret < 0, -1); + + /* activate new settings of serial device */ + ret = tcsetattr(bfd, TCSANOW, &newtio); + err_ret_if(ret < 0, -1); + + *fd = bfd; + } + + if (devicetype == BUS_DEVICE_SOCKET) { + struct sockaddr_in sock; + + memset((char *) &sock, 0, sizeof(sock)); + + char *host = strtok((char *) dev, ":"); + char *port = strtok(NULL, ":"); + + if (inet_addr(host) == INADDR_NONE) { + struct hostent *he; + + he = gethostbyname(host); + err_ret_if(he == NULL, -1); + + memcpy(&sock.sin_addr, he->h_addr_list[0], he->h_length); + } else { + ret = inet_aton(host, &sock.sin_addr); + err_ret_if(ret == 0, -1); + } + + sock.sin_family = AF_INET; + sock.sin_port = htons(atoi(port)); + + bfd = socket(AF_INET, SOCK_STREAM, 0); + err_ret_if(bfd < 0, -1); + + ret = connect(bfd, (struct sockaddr *)&sock, sizeof(sock)); + err_ret_if(ret < 0, -1); + + *fd = bfd; + } + + return 0; +} + +int +eb_bus_close(void) +{ + int ret; + + if (devicetype == BUS_DEVICE_SERIAL) { + /* activate old settings of serial device */ + ret = tcsetattr(bfd, TCSANOW, &oldtio); + /* Ignore this error otherwise USB port may stay unclosed */ + /* err_ret_if(ret < 0, -1); */ + } + + /* Close file descriptor from bus device */ + ret = close(bfd); + err_ret_if(ret < 0, -1); + + return 0; +} + +int +eb_bus_send(const unsigned char *buf, int buflen) +{ + int ret, val; + + /* write msg to bus device */ + val = write(bfd, buf, buflen); + err_ret_if(val < 0, -1); + + if (devicetype == BUS_DEVICE_SERIAL) { + ret = tcflush(bfd, TCIOFLUSH); + err_ret_if(ret < 0, -1); + } + + return val; +} + +int +eb_bus_recv(unsigned char *buf, int *buflen) +{ + int ret; + + /* if (devicetype == BUS_DEVICE_SERIAL) { */ + /* flush deactivated - brings us an error */ + /* tcflush(bfd, TCIOFLUSH); */ + /* } */ + + /* read msg from bus device */ + *buflen = read(bfd, buf, *buflen); + err_if(*buflen < 0); + + if (*buflen < 0) { + log_print(L_WAR, "error read bus device"); + return -1; + } + + if (*buflen > BUS_DEVICE_BUFSIZE) { + log_print(L_WAR, "read data len > %d", BUS_DEVICE_BUFSIZE); + return -3; + } + + /* print bus */ + if (showraw == YES) + eb_print_hex(buf, *buflen); + + /* dump raw data*/ + if (rawdump == YES) { + ret = eb_raw_file_write(buf, *buflen); + if (ret < 0) + log_print(L_WAR, "can't write rawdata"); + } + + return 0; +} + int eb_send_data_get_ack(unsigned char *buf, int *buflen) { - unsigned char tmp[SERIAL_BUFSIZE]; + unsigned char tmp[BUS_DEVICE_BUFSIZE]; int tmplen, ret, i, j, found; j = 0; @@ -627,7 +680,7 @@ eb_send_data_get_ack(unsigned char *buf, int *buflen) memset(tmp, '\0', sizeof(tmp)); tmplen = sizeof(tmp); - ret = eb_serial_recv(tmp, &tmplen); + ret = eb_bus_recv(tmp, &tmplen); if (ret < 0) return -1; @@ -679,7 +732,7 @@ eb_send_data_get_ack(unsigned char *buf, int *buflen) void eb_send_data_prepare(const unsigned char *buf, int buflen) { - unsigned char crc[2], tmp[SERIAL_BUFSIZE]; + unsigned char crc[2], tmp[BUS_DEVICE_BUFSIZE]; int tmplen, crclen; /* reset struct */ @@ -725,7 +778,7 @@ eb_send_data_prepare(const unsigned char *buf, int buflen) int eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus, int *buslen) { - unsigned char tmp[SERIAL_BUFSIZE]; + unsigned char tmp[BUS_DEVICE_BUFSIZE]; int tmplen, ret, val; ret = 0; @@ -741,7 +794,7 @@ eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus, *buslen = send_data.len_esc; /* send message to slave */ - ret = eb_serial_send(&send_data.msg_esc[1], send_data.len_esc - 1); + ret = eb_bus_send(&send_data.msg_esc[1], send_data.len_esc - 1); if (ret < 0) return -1; @@ -780,7 +833,7 @@ eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus, *buslen += send_data.len_esc; /* send message to slave */ - ret = eb_serial_send(&send_data.msg_esc[0], send_data.len_esc); + ret = eb_bus_send(&send_data.msg_esc[0], send_data.len_esc); if (ret < 0) return -1; @@ -837,7 +890,7 @@ eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus, *buslen += 1; /* send message to slave */ - ret = eb_serial_send(&nak, 1); + ret = eb_bus_send(&nak, 1); if (ret < 0) return -1; @@ -874,7 +927,7 @@ eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus, memcpy(&bus[*buslen], &nak, 1); *buslen += 1; - ret = eb_serial_send(&nak, 1); + ret = eb_bus_send(&nak, 1); if (ret < 0) return -1; @@ -884,7 +937,7 @@ eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus, memcpy(&bus[*buslen], &ack, 1); *buslen += 1; - ret = eb_serial_send(&ack, 1); + ret = eb_bus_send(&ack, 1); if (ret < 0) return -1; @@ -904,7 +957,7 @@ eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus, void eb_execute(int id, char *data, char *buf, int *buflen) { - unsigned char msg[SERIAL_BUFSIZE], hlp[CMD_DATA_SIZE], bus[TMP_BUFSIZE]; + unsigned char msg[BUS_DEVICE_BUFSIZE], hlp[CMD_DATA_SIZE], bus[TMP_BUFSIZE]; char tmp[TMP_BUFSIZE]; int ret, msglen, buslen, msgtype, retry, cycdata, pos, len; @@ -1166,10 +1219,10 @@ eb_cyc_data_process(const unsigned char *buf, int buflen) int eb_cyc_data_recv(void) { - static unsigned char msg[SERIAL_BUFSIZE]; + static unsigned char msg[BUS_DEVICE_BUFSIZE]; static int msglen = 0; - unsigned char buf[SERIAL_BUFSIZE]; + unsigned char buf[BUS_DEVICE_BUFSIZE]; int ret, i, buflen; char tmp[TMP_BUFSIZE]; @@ -1182,7 +1235,7 @@ eb_cyc_data_recv(void) memset(msg, '\0', sizeof(msg)); /* get new data */ - ret = eb_serial_recv(buf, &buflen); + ret = eb_bus_recv(buf, &buflen); if (ret < 0) return -1; diff --git a/lib/ebus-bus.h b/lib/ebus-bus.h index d3216c97..2f37bc1e 100644 --- a/lib/ebus-bus.h +++ b/lib/ebus-bus.h @@ -44,9 +44,9 @@ */ struct send_data { unsigned char crc; /**< crc of escaped message */ - unsigned char msg[SERIAL_BUFSIZE + 1]; /**< original message */ + unsigned char msg[BUS_DEVICE_BUFSIZE + 1]; /**< original message */ int len; /**< length of original message */ - unsigned char msg_esc[SERIAL_BUFSIZE + 1]; /**< esacaped message */ + unsigned char msg_esc[BUS_DEVICE_BUFSIZE + 1]; /**< esacaped message */ int len_esc; /**< length of esacaped message */ }; @@ -56,9 +56,9 @@ struct send_data { struct recv_data { unsigned char crc_recv; /**< received crc */ unsigned char crc_calc; /**< calculated crc */ - unsigned char msg[SERIAL_BUFSIZE + 1]; /**< unescaped message */ + unsigned char msg[BUS_DEVICE_BUFSIZE + 1]; /**< unescaped message */ int len; /**< length of unescaped message */ - unsigned char msg_esc[SERIAL_BUFSIZE + 1]; /**< received message */ + unsigned char msg_esc[BUS_DEVICE_BUFSIZE + 1]; /**< received message */ int len_esc; /**< length of received message */ }; @@ -165,44 +165,6 @@ int eb_raw_file_write(const unsigned char *buf, int buflen); -/** - * @brief Check if serial FD is vaild. - * @return 0 ok | -1 error - */ -int eb_serial_valid(void); - -/** - * @brief Open serial device in raw mode. 1 Byte is then minimum input length. - * @param [in] *dev serial device - * @param [out] *fd file descriptor from opened serial device - * @return 0 ok | -1 error - */ -int eb_serial_open(const char *dev, int *fd); - -/** - * @brief close serial device and set settings to default. - * @return 0 ok | -1 error | -2 bad file descriptor - */ -int eb_serial_close(void); - -/** - * @brief send bytes to serial device - * @param [in] *buf pointer to a byte array - * @param [in] buflen length of byte array - * @return 0 ok | -1 error | -2 bad file descriptor - */ -int eb_serial_send(const unsigned char *buf, int buflen); - -/** - * @brief receive bytes from serial device - * @param [out] *buf pointer to a byte array received bytes - * @param [out] *buflen length of received bytes - * @return 0 ok | -1 error | -2 bad file descriptor | -3 received data > BUFFER - */ -int eb_serial_recv(unsigned char *buf, int *buflen); - - - /** * @brief print received results in a specific format * @return none @@ -267,6 +229,49 @@ int eb_bus_wait(void); */ int eb_bus_free(void); +/** + * @brief check device type + * @param [in] *dev bus device + * @return none + */ +void eb_bus_devicetype(const char *dev); + +/** + * @brief Check if bus FD is vaild. + * @return 0 ok | -1 error + */ +int eb_bus_valid(void); + +/** + * @brief Open bus device in raw mode. 1 Byte is then minimum input length. + * @param [in] *dev bus device + * @param [out] *fd file descriptor from opened bus device + * @return 0 ok | -1 error + */ +int eb_bus_open(const char *dev, int *fd); + +/** + * @brief close bus device (and reset settings) + * @return 0 ok | -1 error | -2 bad file descriptor + */ +int eb_bus_close(void); + +/** + * @brief send bytes to bus device + * @param [in] *buf pointer to a byte array + * @param [in] buflen length of byte array + * @return 0 ok | -1 error | -2 bad file descriptor + */ +int eb_bus_send(const unsigned char *buf, int buflen); + +/** + * @brief receive bytes from bus device + * @param [out] *buf pointer to a byte array received bytes + * @param [out] *buflen length of received bytes + * @return 0 ok | -1 error | -2 bad file descriptor | -3 received data > BUFFER + */ +int eb_bus_recv(unsigned char *buf, int *buflen); + /** diff --git a/lib/ebus-cmd.c b/lib/ebus-cmd.c index ed387322..44bf0177 100644 --- a/lib/ebus-cmd.c +++ b/lib/ebus-cmd.c @@ -685,7 +685,7 @@ eb_cmd_prepare(int id, char *data, unsigned char *msg, int *msglen, char *buf) char str[CMD_SIZE_S_ZZ + CMD_SIZE_S_CMD + 2 + CMD_SIZE_S_MSG + 1]; char byte; int ret, i, j, k; - int in[SERIAL_BUFSIZE]; + int in[BUS_DEVICE_BUFSIZE]; /* encode msg */ memset(tmp, '\0', sizeof(tmp)); diff --git a/lib/ebus-common.h b/lib/ebus-common.h index 6eb06c72..d190ca7e 100644 --- a/lib/ebus-common.h +++ b/lib/ebus-common.h @@ -58,9 +58,13 @@ #define EBUS_MSG_MASTER_MAX_DB_LEN 12 #define EBUS_MSG_SLAVE_MAX_DB_LEN 12 +#define BUS_DEVICE_SERIAL 0 +#define BUS_DEVICE_SOCKET 1 +#define BUS_DEVICE_BUFSIZE 100 + #define SERIAL_DEVICE "/dev/ttyUSB0" #define SERIAL_BAUDRATE B2400 -#define SERIAL_BUFSIZE 100 + #define CMD_DATA_SIZE 50 /* 5+16+3+16+2 = 42 || 256 */ diff --git a/lib/ebus-decode.c b/lib/ebus-decode.c index 921877e6..2098150c 100644 --- a/lib/ebus-decode.c +++ b/lib/ebus-decode.c @@ -64,7 +64,7 @@ eb_htoi(const char *buf) void eb_esc(unsigned char *buf, int *buflen) { - unsigned char tmp[SERIAL_BUFSIZE]; + unsigned char tmp[BUS_DEVICE_BUFSIZE]; int tmplen, i; memset(tmp, '\0', sizeof(tmp)); @@ -101,7 +101,7 @@ eb_esc(unsigned char *buf, int *buflen) void eb_unesc(unsigned char *buf, int *buflen) { - unsigned char tmp[SERIAL_BUFSIZE]; + unsigned char tmp[BUS_DEVICE_BUFSIZE]; int tmplen, i, found; memset(tmp, '\0', sizeof(tmp)); diff --git a/src/ebusd.c b/src/ebusd.c index 5e43ed0a..29ce2a5f 100644 --- a/src/ebusd.c +++ b/src/ebusd.c @@ -48,7 +48,7 @@ static int pidfile_locked = NO; static int msg_queue_on = NO; static int pidfd = UNSET; /* pidfile file descriptor */ -static int serialfd = UNSET; /* serial file descriptor */ +static int busfd = UNSET; /* bus file descriptor */ static int socketfd = UNSET; /* socket file descriptor */ @@ -105,12 +105,12 @@ static struct config cfg[] = { {"address", STR, &address, "\tbus address (" NUMSTR(EBUS_QQ) ")"}, {"cfgdir", STR, &cfgdir, "\tconfiguration directory of command files (" DAEMON_CFGDIR ")"}, {"cfgfile", STR, &cfgfile, "\tdaemon configuration file (" DAEMON_CFGFILE ")"}, -{"device", STR, &device, "\tserial device (" SERIAL_DEVICE ")"}, +{"device", STR, &device, "\tbus device (" SERIAL_DEVICE ")"}, {"extension", STR, &extension, "extension of command files (" DAEMON_EXTENSION ")"}, {"foreground", BOL, &foreground, "run in foreground"}, {"loglevel", STR, &loglevel, "\tlog level (INF | " LOGTXT ")"}, {"logfile", STR, &logfile, "\tlog file (" DAEMON_LOGFILE ")"}, -{"nodevicecheck", BOL, &nodevicecheck, "don't check serial device"}, +{"nodevicecheck", BOL, &nodevicecheck, "don't check bus device"}, {"pidfile", STR, &pidfile, "\tpid file (" DAEMON_PIDFILE ")"}, {"port", NUM, &port, "\tport (" NUMSTR(SOCKET_PORT) ")"}, {"rawdump", BOL, &rawdump, "\tdump raw ebus data to file"}, @@ -408,9 +408,9 @@ cleanup(int state) log_print(L_INF, "port %d closed", port); } - /* close serial device */ - if (serialfd > 0) { - if (eb_serial_close() == -1) + /* close bus device */ + if (busfd > 0) { + if (eb_bus_close() == -1) log_print(L_ERR, "can't close device: %s", device); else log_print(L_INF, "%s closed", device); @@ -467,14 +467,14 @@ main_loop(void) timeout_reached = NO; FD_ZERO(&listenfds); - FD_SET(serialfd, &listenfds); + FD_SET(busfd, &listenfds); FD_SET(socketfd, &listenfds); maxfd = socketfd; - /* serialfd should be always lower then socketfd */ - if (serialfd > socketfd) { - log_print(L_ERR, "serialfd %d > %d socketfd", serialfd, socketfd); + /* busfd should be always lower then socketfd */ + if (busfd > socketfd) { + log_print(L_ERR, "busfd %d > %d socketfd", busfd, socketfd); cleanup(EXIT_FAILURE); } @@ -490,12 +490,12 @@ main_loop(void) /* set readfds to inital listenfds */ readfds = listenfds; - /* check if the usb device is working */ - if (eb_serial_valid() < 0 || timeout_reached == YES) { + /* check if the bus device is working */ + if (eb_bus_valid() < 0 || timeout_reached == YES) { timeout_reached = NO; - if (serialfd > 0 && sfd_closed == NO) { - log_print(L_ERR, "serial device is invalid"); + if (busfd > 0 && sfd_closed == NO) { + log_print(L_ERR, "bus device is invalid"); sfd_closed = YES; /* close listing tcp socket */ @@ -506,8 +506,8 @@ main_loop(void) log_print(L_INF, "port %d closed", port); } - /* close serial device */ - if (eb_serial_close() == -1) + /* close bus device */ + if (eb_bus_close() == -1) log_print(L_ERR, "can't close device: %s", device); else log_print(L_INF, "%s closed", device); @@ -517,8 +517,8 @@ main_loop(void) /* need sleep to prevent high cpu consumption */ sleep(1); - /* open serial device */ - if (eb_serial_open(device, &serialfd) == 0) { + /* open bus device */ + if (eb_bus_open(device, &busfd) == 0) { log_print(L_INF, "%s opened", device); sfd_closed = NO; } @@ -533,7 +533,7 @@ main_loop(void) ret = select(maxfd + 1, &readfds, NULL, NULL, &timeout); /* timeout after 10 secs means that ebus is probably - disconnected or USB device is dead */ + disconnected or BUS device is dead */ if (ret == 0) { log_print(L_WAR, "select timeout (%d) reached", timeout.tv_sec); timeout_reached = YES; @@ -550,8 +550,8 @@ main_loop(void) cleanup(EXIT_FAILURE); } - /* new data from serial port? */ - if (FD_ISSET(serialfd, &readfds)) { + /* new data from bus device? */ + if (FD_ISSET(busfd, &readfds)) { /* get cycle message from bus */ ret = eb_cyc_data_recv(); @@ -717,8 +717,8 @@ main(int argc, char *argv[]) } - /* open serial device */ - if (eb_serial_open(device, &serialfd) == -1) { + /* open bus device */ + if (eb_bus_open(device, &busfd) == -1) { log_print(L_ALL, "can't open device: %s", device); cleanup(EXIT_FAILURE); } else { diff --git a/src/utils.c b/src/utils.c index 4de56e16..39c8de44 100644 --- a/src/utils.c +++ b/src/utils.c @@ -316,7 +316,7 @@ sock_open(int *fd, int port, int localhost) int ret, opt; struct sockaddr_in sock; - *fd = socket(PF_INET, SOCK_STREAM, 0); + *fd = socket(AF_INET, SOCK_STREAM, 0); err_ret_if(*fd < 0, -1); /* todo: verify if this realy work */ diff --git a/tools/check.c b/tools/check.c index bb87ecfe..45d3e740 100644 --- a/tools/check.c +++ b/tools/check.c @@ -30,7 +30,7 @@ int main(void) { int i, j, end, ret; - int bcd, d1b, data[SERIAL_BUFSIZE + 1]; + int bcd, d1b, data[BUS_DEVICE_BUFSIZE + 1]; float d1c, d2b, d2c; char byte; diff --git a/tools/ebus_send.c b/tools/ebus_send.c index 224092a4..106dc2c2 100644 --- a/tools/ebus_send.c +++ b/tools/ebus_send.c @@ -151,9 +151,9 @@ int main(int argc, char *argv[]) { int i, j, k, end, ret, val, max_argc, buslen; - int in[SERIAL_BUFSIZE + 1]; + int in[BUS_DEVICE_BUFSIZE + 1]; char byte; - unsigned char msg[SERIAL_BUFSIZE + 1], bus[TMP_BUFSIZE]; + unsigned char msg[BUS_DEVICE_BUFSIZE + 1], bus[TMP_BUFSIZE]; progname = (const char *)strrchr(argv[0], '/'); progname = progname ? (progname + 1) : argv[0]; @@ -202,7 +202,7 @@ main(int argc, char *argv[]) msg[k] = (unsigned char) (in[j]*16 + in[j+1]); - ret = eb_serial_open(device, &serialfd); + ret = eb_bus_open(device, &serialfd); if (ret < 0) fprintf(stdout, "Error open %s.\n", device); @@ -215,7 +215,7 @@ main(int argc, char *argv[]) } - ret = eb_serial_close(); + ret = eb_bus_close(); if (ret < 0) fprintf(stdout, "Error close %s.\n", device); @@ -250,7 +250,7 @@ main(int argc, char *argv[]) if (k > 0) { - ret = eb_serial_open(device, &serialfd); + ret = eb_bus_open(device, &serialfd); if (ret < 0) fprintf(stdout, "Error open %s.\n", device); @@ -267,7 +267,7 @@ main(int argc, char *argv[]) } - ret = eb_serial_close(); + ret = eb_bus_close(); if (ret < 0) fprintf(stdout, "Error close %s.\n", device); }