Improved ebus device handling to use tcp based device too
This commit is contained in:
@@ -3,6 +3,8 @@ ebus Daemon (ebusd) - ChangeLog
|
|||||||
|
|
||||||
2014-02-20:
|
2014-02-20:
|
||||||
* Missing void declarations in various function parameter added.
|
* 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:
|
2014-01-22:
|
||||||
* autogen.sh modified.
|
* autogen.sh modified.
|
||||||
|
|||||||
+203
-150
@@ -40,6 +40,10 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "ebus-decode.h"
|
#include "ebus-decode.h"
|
||||||
@@ -68,15 +72,14 @@ static unsigned char ack = EBUS_ACK;
|
|||||||
static unsigned char nak = EBUS_NAK;
|
static unsigned char nak = EBUS_NAK;
|
||||||
static unsigned char syn = EBUS_SYN;
|
static unsigned char syn = EBUS_SYN;
|
||||||
|
|
||||||
static int sfd;
|
static int bfd;
|
||||||
|
static int devicetype = BUS_DEVICE_SERIAL;
|
||||||
static struct termios oldtio;
|
static struct termios oldtio;
|
||||||
|
|
||||||
static FILE *rawfp = NULL;
|
static FILE *rawfp = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
eb_set_nodevicecheck(int check)
|
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
|
void
|
||||||
eb_print_result(void)
|
eb_print_result(void)
|
||||||
{
|
{
|
||||||
@@ -364,7 +242,7 @@ eb_recv_data_get(unsigned char *buf, int *buflen)
|
|||||||
void
|
void
|
||||||
eb_recv_data_prepare(const unsigned char *buf, int buflen)
|
eb_recv_data_prepare(const unsigned char *buf, int buflen)
|
||||||
{
|
{
|
||||||
unsigned char tmp[SERIAL_BUFSIZE];
|
unsigned char tmp[BUS_DEVICE_BUFSIZE];
|
||||||
int tmplen, crc;
|
int tmplen, crc;
|
||||||
|
|
||||||
memset(tmp, '\0', sizeof(tmp));
|
memset(tmp, '\0', sizeof(tmp));
|
||||||
@@ -407,7 +285,7 @@ eb_recv_data_prepare(const unsigned char *buf, int buflen)
|
|||||||
int
|
int
|
||||||
eb_recv_data(unsigned char *buf, int *buflen)
|
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;
|
int tmplen, msglen, ret, i, esc, found;
|
||||||
|
|
||||||
memset(msg, '\0', sizeof(msg));
|
memset(msg, '\0', sizeof(msg));
|
||||||
@@ -421,7 +299,7 @@ eb_recv_data(unsigned char *buf, int *buflen)
|
|||||||
memset(tmp, '\0', sizeof(tmp));
|
memset(tmp, '\0', sizeof(tmp));
|
||||||
tmplen = sizeof(tmp);
|
tmplen = sizeof(tmp);
|
||||||
|
|
||||||
ret = eb_serial_recv(tmp, &tmplen);
|
ret = eb_bus_recv(tmp, &tmplen);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -506,7 +384,7 @@ eb_recv_data(unsigned char *buf, int *buflen)
|
|||||||
int
|
int
|
||||||
eb_bus_wait_syn(int *skip)
|
eb_bus_wait_syn(int *skip)
|
||||||
{
|
{
|
||||||
unsigned char buf[SERIAL_BUFSIZE];
|
unsigned char buf[BUS_DEVICE_BUFSIZE];
|
||||||
int buflen, ret, i, found;
|
int buflen, ret, i, found;
|
||||||
|
|
||||||
found = 99;
|
found = 99;
|
||||||
@@ -516,7 +394,7 @@ eb_bus_wait_syn(int *skip)
|
|||||||
memset(buf, '\0', sizeof(buf));
|
memset(buf, '\0', sizeof(buf));
|
||||||
buflen = sizeof(buf);
|
buflen = sizeof(buf);
|
||||||
|
|
||||||
ret = eb_serial_recv(buf, &buflen);
|
ret = eb_bus_recv(buf, &buflen);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -543,7 +421,7 @@ eb_bus_wait_syn(int *skip)
|
|||||||
int
|
int
|
||||||
eb_bus_wait(void)
|
eb_bus_wait(void)
|
||||||
{
|
{
|
||||||
unsigned char buf[SERIAL_BUFSIZE];
|
unsigned char buf[BUS_DEVICE_BUFSIZE];
|
||||||
int buflen, ret, skip, retry;
|
int buflen, ret, skip, retry;
|
||||||
struct timeval tact, tlast, tdiff;
|
struct timeval tact, tlast, tdiff;
|
||||||
|
|
||||||
@@ -559,7 +437,7 @@ eb_bus_wait(void)
|
|||||||
gettimeofday(&tlast, NULL);
|
gettimeofday(&tlast, NULL);
|
||||||
|
|
||||||
/* send QQ */
|
/* send QQ */
|
||||||
ret = eb_serial_send(&qq, 1);
|
ret = eb_bus_send(&qq, 1);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -576,7 +454,7 @@ eb_bus_wait(void)
|
|||||||
/* receive 1 byte - must be QQ */
|
/* receive 1 byte - must be QQ */
|
||||||
memset(buf, '\0', sizeof(buf));
|
memset(buf, '\0', sizeof(buf));
|
||||||
buflen = sizeof(buf);
|
buflen = sizeof(buf);
|
||||||
ret = eb_serial_recv(buf, &buflen);
|
ret = eb_bus_recv(buf, &buflen);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -600,7 +478,7 @@ eb_bus_free(void)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
skip = 0;
|
skip = 0;
|
||||||
|
|
||||||
ret = eb_serial_send(&syn, 1);
|
ret = eb_bus_send(&syn, 1);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -611,12 +489,187 @@ eb_bus_free(void)
|
|||||||
return 0;
|
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
|
int
|
||||||
eb_send_data_get_ack(unsigned char *buf, int *buflen)
|
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;
|
int tmplen, ret, i, j, found;
|
||||||
|
|
||||||
j = 0;
|
j = 0;
|
||||||
@@ -627,7 +680,7 @@ eb_send_data_get_ack(unsigned char *buf, int *buflen)
|
|||||||
memset(tmp, '\0', sizeof(tmp));
|
memset(tmp, '\0', sizeof(tmp));
|
||||||
tmplen = sizeof(tmp);
|
tmplen = sizeof(tmp);
|
||||||
|
|
||||||
ret = eb_serial_recv(tmp, &tmplen);
|
ret = eb_bus_recv(tmp, &tmplen);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -679,7 +732,7 @@ eb_send_data_get_ack(unsigned char *buf, int *buflen)
|
|||||||
void
|
void
|
||||||
eb_send_data_prepare(const unsigned char *buf, int buflen)
|
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;
|
int tmplen, crclen;
|
||||||
|
|
||||||
/* reset struct */
|
/* reset struct */
|
||||||
@@ -725,7 +778,7 @@ eb_send_data_prepare(const unsigned char *buf, int buflen)
|
|||||||
int
|
int
|
||||||
eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus, int *buslen)
|
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;
|
int tmplen, ret, val;
|
||||||
|
|
||||||
ret = 0;
|
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;
|
*buslen = send_data.len_esc;
|
||||||
|
|
||||||
/* send message to slave */
|
/* 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)
|
if (ret < 0)
|
||||||
return -1;
|
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;
|
*buslen += send_data.len_esc;
|
||||||
|
|
||||||
/* send message to slave */
|
/* 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)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -837,7 +890,7 @@ eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus,
|
|||||||
*buslen += 1;
|
*buslen += 1;
|
||||||
|
|
||||||
/* send message to slave */
|
/* send message to slave */
|
||||||
ret = eb_serial_send(&nak, 1);
|
ret = eb_bus_send(&nak, 1);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
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);
|
memcpy(&bus[*buslen], &nak, 1);
|
||||||
*buslen += 1;
|
*buslen += 1;
|
||||||
|
|
||||||
ret = eb_serial_send(&nak, 1);
|
ret = eb_bus_send(&nak, 1);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
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);
|
memcpy(&bus[*buslen], &ack, 1);
|
||||||
*buslen += 1;
|
*buslen += 1;
|
||||||
|
|
||||||
ret = eb_serial_send(&ack, 1);
|
ret = eb_bus_send(&ack, 1);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -904,7 +957,7 @@ eb_send_data(const unsigned char *buf, int buflen, int type, unsigned char *bus,
|
|||||||
void
|
void
|
||||||
eb_execute(int id, char *data, char *buf, int *buflen)
|
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];
|
char tmp[TMP_BUFSIZE];
|
||||||
int ret, msglen, buslen, msgtype, retry, cycdata, pos, len;
|
int ret, msglen, buslen, msgtype, retry, cycdata, pos, len;
|
||||||
|
|
||||||
@@ -1166,10 +1219,10 @@ eb_cyc_data_process(const unsigned char *buf, int buflen)
|
|||||||
int
|
int
|
||||||
eb_cyc_data_recv(void)
|
eb_cyc_data_recv(void)
|
||||||
{
|
{
|
||||||
static unsigned char msg[SERIAL_BUFSIZE];
|
static unsigned char msg[BUS_DEVICE_BUFSIZE];
|
||||||
static int msglen = 0;
|
static int msglen = 0;
|
||||||
|
|
||||||
unsigned char buf[SERIAL_BUFSIZE];
|
unsigned char buf[BUS_DEVICE_BUFSIZE];
|
||||||
int ret, i, buflen;
|
int ret, i, buflen;
|
||||||
|
|
||||||
char tmp[TMP_BUFSIZE];
|
char tmp[TMP_BUFSIZE];
|
||||||
@@ -1182,7 +1235,7 @@ eb_cyc_data_recv(void)
|
|||||||
memset(msg, '\0', sizeof(msg));
|
memset(msg, '\0', sizeof(msg));
|
||||||
|
|
||||||
/* get new data */
|
/* get new data */
|
||||||
ret = eb_serial_recv(buf, &buflen);
|
ret = eb_bus_recv(buf, &buflen);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
|||||||
+47
-42
@@ -44,9 +44,9 @@
|
|||||||
*/
|
*/
|
||||||
struct send_data {
|
struct send_data {
|
||||||
unsigned char crc; /**< crc of escaped message */
|
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 */
|
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 */
|
int len_esc; /**< length of esacaped message */
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -56,9 +56,9 @@ struct send_data {
|
|||||||
struct recv_data {
|
struct recv_data {
|
||||||
unsigned char crc_recv; /**< received crc */
|
unsigned char crc_recv; /**< received crc */
|
||||||
unsigned char crc_calc; /**< calculated 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 */
|
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 */
|
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
|
* @brief print received results in a specific format
|
||||||
* @return none
|
* @return none
|
||||||
@@ -267,6 +229,49 @@ int eb_bus_wait(void);
|
|||||||
*/
|
*/
|
||||||
int eb_bus_free(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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+1
-1
@@ -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 str[CMD_SIZE_S_ZZ + CMD_SIZE_S_CMD + 2 + CMD_SIZE_S_MSG + 1];
|
||||||
char byte;
|
char byte;
|
||||||
int ret, i, j, k;
|
int ret, i, j, k;
|
||||||
int in[SERIAL_BUFSIZE];
|
int in[BUS_DEVICE_BUFSIZE];
|
||||||
|
|
||||||
/* encode msg */
|
/* encode msg */
|
||||||
memset(tmp, '\0', sizeof(tmp));
|
memset(tmp, '\0', sizeof(tmp));
|
||||||
|
|||||||
+5
-1
@@ -58,9 +58,13 @@
|
|||||||
#define EBUS_MSG_MASTER_MAX_DB_LEN 12
|
#define EBUS_MSG_MASTER_MAX_DB_LEN 12
|
||||||
#define EBUS_MSG_SLAVE_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_DEVICE "/dev/ttyUSB0"
|
||||||
#define SERIAL_BAUDRATE B2400
|
#define SERIAL_BAUDRATE B2400
|
||||||
#define SERIAL_BUFSIZE 100
|
|
||||||
|
|
||||||
#define CMD_DATA_SIZE 50 /* 5+16+3+16+2 = 42 || 256 */
|
#define CMD_DATA_SIZE 50 /* 5+16+3+16+2 = 42 || 256 */
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -64,7 +64,7 @@ eb_htoi(const char *buf)
|
|||||||
void
|
void
|
||||||
eb_esc(unsigned char *buf, int *buflen)
|
eb_esc(unsigned char *buf, int *buflen)
|
||||||
{
|
{
|
||||||
unsigned char tmp[SERIAL_BUFSIZE];
|
unsigned char tmp[BUS_DEVICE_BUFSIZE];
|
||||||
int tmplen, i;
|
int tmplen, i;
|
||||||
|
|
||||||
memset(tmp, '\0', sizeof(tmp));
|
memset(tmp, '\0', sizeof(tmp));
|
||||||
@@ -101,7 +101,7 @@ eb_esc(unsigned char *buf, int *buflen)
|
|||||||
void
|
void
|
||||||
eb_unesc(unsigned char *buf, int *buflen)
|
eb_unesc(unsigned char *buf, int *buflen)
|
||||||
{
|
{
|
||||||
unsigned char tmp[SERIAL_BUFSIZE];
|
unsigned char tmp[BUS_DEVICE_BUFSIZE];
|
||||||
int tmplen, i, found;
|
int tmplen, i, found;
|
||||||
|
|
||||||
memset(tmp, '\0', sizeof(tmp));
|
memset(tmp, '\0', sizeof(tmp));
|
||||||
|
|||||||
+23
-23
@@ -48,7 +48,7 @@ static int pidfile_locked = NO;
|
|||||||
static int msg_queue_on = NO;
|
static int msg_queue_on = NO;
|
||||||
|
|
||||||
static int pidfd = UNSET; /* pidfile file descriptor */
|
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 */
|
static int socketfd = UNSET; /* socket file descriptor */
|
||||||
|
|
||||||
|
|
||||||
@@ -105,12 +105,12 @@ static struct config cfg[] = {
|
|||||||
{"address", STR, &address, "\tbus address (" NUMSTR(EBUS_QQ) ")"},
|
{"address", STR, &address, "\tbus address (" NUMSTR(EBUS_QQ) ")"},
|
||||||
{"cfgdir", STR, &cfgdir, "\tconfiguration directory of command files (" DAEMON_CFGDIR ")"},
|
{"cfgdir", STR, &cfgdir, "\tconfiguration directory of command files (" DAEMON_CFGDIR ")"},
|
||||||
{"cfgfile", STR, &cfgfile, "\tdaemon configuration file (" DAEMON_CFGFILE ")"},
|
{"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 ")"},
|
{"extension", STR, &extension, "extension of command files (" DAEMON_EXTENSION ")"},
|
||||||
{"foreground", BOL, &foreground, "run in foreground"},
|
{"foreground", BOL, &foreground, "run in foreground"},
|
||||||
{"loglevel", STR, &loglevel, "\tlog level (INF | " LOGTXT ")"},
|
{"loglevel", STR, &loglevel, "\tlog level (INF | " LOGTXT ")"},
|
||||||
{"logfile", STR, &logfile, "\tlog file (" DAEMON_LOGFILE ")"},
|
{"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 ")"},
|
{"pidfile", STR, &pidfile, "\tpid file (" DAEMON_PIDFILE ")"},
|
||||||
{"port", NUM, &port, "\tport (" NUMSTR(SOCKET_PORT) ")"},
|
{"port", NUM, &port, "\tport (" NUMSTR(SOCKET_PORT) ")"},
|
||||||
{"rawdump", BOL, &rawdump, "\tdump raw ebus data to file"},
|
{"rawdump", BOL, &rawdump, "\tdump raw ebus data to file"},
|
||||||
@@ -408,9 +408,9 @@ cleanup(int state)
|
|||||||
log_print(L_INF, "port %d closed", port);
|
log_print(L_INF, "port %d closed", port);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* close serial device */
|
/* close bus device */
|
||||||
if (serialfd > 0) {
|
if (busfd > 0) {
|
||||||
if (eb_serial_close() == -1)
|
if (eb_bus_close() == -1)
|
||||||
log_print(L_ERR, "can't close device: %s", device);
|
log_print(L_ERR, "can't close device: %s", device);
|
||||||
else
|
else
|
||||||
log_print(L_INF, "%s closed", device);
|
log_print(L_INF, "%s closed", device);
|
||||||
@@ -467,14 +467,14 @@ main_loop(void)
|
|||||||
timeout_reached = NO;
|
timeout_reached = NO;
|
||||||
|
|
||||||
FD_ZERO(&listenfds);
|
FD_ZERO(&listenfds);
|
||||||
FD_SET(serialfd, &listenfds);
|
FD_SET(busfd, &listenfds);
|
||||||
FD_SET(socketfd, &listenfds);
|
FD_SET(socketfd, &listenfds);
|
||||||
|
|
||||||
maxfd = socketfd;
|
maxfd = socketfd;
|
||||||
|
|
||||||
/* serialfd should be always lower then socketfd */
|
/* busfd should be always lower then socketfd */
|
||||||
if (serialfd > socketfd) {
|
if (busfd > socketfd) {
|
||||||
log_print(L_ERR, "serialfd %d > %d socketfd", serialfd, socketfd);
|
log_print(L_ERR, "busfd %d > %d socketfd", busfd, socketfd);
|
||||||
cleanup(EXIT_FAILURE);
|
cleanup(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -490,12 +490,12 @@ main_loop(void)
|
|||||||
/* set readfds to inital listenfds */
|
/* set readfds to inital listenfds */
|
||||||
readfds = listenfds;
|
readfds = listenfds;
|
||||||
|
|
||||||
/* check if the usb device is working */
|
/* check if the bus device is working */
|
||||||
if (eb_serial_valid() < 0 || timeout_reached == YES) {
|
if (eb_bus_valid() < 0 || timeout_reached == YES) {
|
||||||
timeout_reached = NO;
|
timeout_reached = NO;
|
||||||
|
|
||||||
if (serialfd > 0 && sfd_closed == NO) {
|
if (busfd > 0 && sfd_closed == NO) {
|
||||||
log_print(L_ERR, "serial device is invalid");
|
log_print(L_ERR, "bus device is invalid");
|
||||||
sfd_closed = YES;
|
sfd_closed = YES;
|
||||||
|
|
||||||
/* close listing tcp socket */
|
/* close listing tcp socket */
|
||||||
@@ -506,8 +506,8 @@ main_loop(void)
|
|||||||
log_print(L_INF, "port %d closed", port);
|
log_print(L_INF, "port %d closed", port);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* close serial device */
|
/* close bus device */
|
||||||
if (eb_serial_close() == -1)
|
if (eb_bus_close() == -1)
|
||||||
log_print(L_ERR, "can't close device: %s", device);
|
log_print(L_ERR, "can't close device: %s", device);
|
||||||
else
|
else
|
||||||
log_print(L_INF, "%s closed", device);
|
log_print(L_INF, "%s closed", device);
|
||||||
@@ -517,8 +517,8 @@ main_loop(void)
|
|||||||
/* need sleep to prevent high cpu consumption */
|
/* need sleep to prevent high cpu consumption */
|
||||||
sleep(1);
|
sleep(1);
|
||||||
|
|
||||||
/* open serial device */
|
/* open bus device */
|
||||||
if (eb_serial_open(device, &serialfd) == 0) {
|
if (eb_bus_open(device, &busfd) == 0) {
|
||||||
log_print(L_INF, "%s opened", device);
|
log_print(L_INF, "%s opened", device);
|
||||||
sfd_closed = NO;
|
sfd_closed = NO;
|
||||||
}
|
}
|
||||||
@@ -533,7 +533,7 @@ main_loop(void)
|
|||||||
ret = select(maxfd + 1, &readfds, NULL, NULL, &timeout);
|
ret = select(maxfd + 1, &readfds, NULL, NULL, &timeout);
|
||||||
|
|
||||||
/* timeout after 10 secs means that ebus is probably
|
/* timeout after 10 secs means that ebus is probably
|
||||||
disconnected or USB device is dead */
|
disconnected or BUS device is dead */
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
log_print(L_WAR, "select timeout (%d) reached", timeout.tv_sec);
|
log_print(L_WAR, "select timeout (%d) reached", timeout.tv_sec);
|
||||||
timeout_reached = YES;
|
timeout_reached = YES;
|
||||||
@@ -550,8 +550,8 @@ main_loop(void)
|
|||||||
cleanup(EXIT_FAILURE);
|
cleanup(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* new data from serial port? */
|
/* new data from bus device? */
|
||||||
if (FD_ISSET(serialfd, &readfds)) {
|
if (FD_ISSET(busfd, &readfds)) {
|
||||||
|
|
||||||
/* get cycle message from bus */
|
/* get cycle message from bus */
|
||||||
ret = eb_cyc_data_recv();
|
ret = eb_cyc_data_recv();
|
||||||
@@ -717,8 +717,8 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* open serial device */
|
/* open bus device */
|
||||||
if (eb_serial_open(device, &serialfd) == -1) {
|
if (eb_bus_open(device, &busfd) == -1) {
|
||||||
log_print(L_ALL, "can't open device: %s", device);
|
log_print(L_ALL, "can't open device: %s", device);
|
||||||
cleanup(EXIT_FAILURE);
|
cleanup(EXIT_FAILURE);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+1
-1
@@ -316,7 +316,7 @@ sock_open(int *fd, int port, int localhost)
|
|||||||
int ret, opt;
|
int ret, opt;
|
||||||
struct sockaddr_in sock;
|
struct sockaddr_in sock;
|
||||||
|
|
||||||
*fd = socket(PF_INET, SOCK_STREAM, 0);
|
*fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
err_ret_if(*fd < 0, -1);
|
err_ret_if(*fd < 0, -1);
|
||||||
|
|
||||||
/* todo: verify if this realy work */
|
/* todo: verify if this realy work */
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ int main(void) {
|
|||||||
|
|
||||||
int i, j, end, ret;
|
int i, j, end, ret;
|
||||||
|
|
||||||
int bcd, d1b, data[SERIAL_BUFSIZE + 1];
|
int bcd, d1b, data[BUS_DEVICE_BUFSIZE + 1];
|
||||||
float d1c, d2b, d2c;
|
float d1c, d2b, d2c;
|
||||||
|
|
||||||
char byte;
|
char byte;
|
||||||
|
|||||||
+6
-6
@@ -151,9 +151,9 @@ int
|
|||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int i, j, k, end, ret, val, max_argc, buslen;
|
int i, j, k, end, ret, val, max_argc, buslen;
|
||||||
int in[SERIAL_BUFSIZE + 1];
|
int in[BUS_DEVICE_BUFSIZE + 1];
|
||||||
char byte;
|
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 = (const char *)strrchr(argv[0], '/');
|
||||||
progname = progname ? (progname + 1) : argv[0];
|
progname = progname ? (progname + 1) : argv[0];
|
||||||
@@ -202,7 +202,7 @@ main(int argc, char *argv[])
|
|||||||
msg[k] = (unsigned char)
|
msg[k] = (unsigned char)
|
||||||
(in[j]*16 + in[j+1]);
|
(in[j]*16 + in[j+1]);
|
||||||
|
|
||||||
ret = eb_serial_open(device, &serialfd);
|
ret = eb_bus_open(device, &serialfd);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
fprintf(stdout, "Error open %s.\n", device);
|
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)
|
if (ret < 0)
|
||||||
fprintf(stdout, "Error close %s.\n", device);
|
fprintf(stdout, "Error close %s.\n", device);
|
||||||
|
|
||||||
@@ -250,7 +250,7 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (k > 0) {
|
if (k > 0) {
|
||||||
|
|
||||||
ret = eb_serial_open(device, &serialfd);
|
ret = eb_bus_open(device, &serialfd);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
fprintf(stdout, "Error open %s.\n", device);
|
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)
|
if (ret < 0)
|
||||||
fprintf(stdout, "Error close %s.\n", device);
|
fprintf(stdout, "Error close %s.\n", device);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user