improved tecs driver M.Z.
This commit is contained in:
@@ -35,6 +35,8 @@ int CocConnect(CocConn *conn) { /* connect, but do not start */
|
||||
ERR_SI(setsockopt(conn->fd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(int))); /* allow quick port reuse */
|
||||
i=connect(conn->fd, (struct sockaddr *)&sadr, sizeof(sadr));
|
||||
if (i<0) {
|
||||
close(conn->fd);
|
||||
conn->fd=-1;
|
||||
if (errno==ECONNREFUSED) return(1);
|
||||
ERR_COD(errno);
|
||||
}
|
||||
@@ -132,7 +134,7 @@ int CocCheck(CocConn *conn) {
|
||||
|
||||
int CocTryCmd(CocConn *conn) {
|
||||
int iret=-1, siz;
|
||||
|
||||
int j;
|
||||
signal(SIGPIPE, SIG_IGN);
|
||||
if (conn->fd<0) {
|
||||
ERR_I(iret=CocConnect(conn)); /* was CocOpen earlier */
|
||||
@@ -290,10 +292,12 @@ int CocGetArray(CocConn *conn, const char *name, float *value, int value_size) {
|
||||
int CocDoIt(CocConn *conn, char *res, int res_len) {
|
||||
StrBuf *buf;
|
||||
int i, pending;
|
||||
float *arr;
|
||||
CocArg *a;
|
||||
char *resp, *t, tag;
|
||||
int iret=0;
|
||||
|
||||
int siz;
|
||||
|
||||
assert(conn!=NULL);
|
||||
ERR_I(CocCmdWithRetry(conn));
|
||||
buf=&conn->resbuf;
|
||||
@@ -341,7 +345,11 @@ int CocDoIt(CocConn *conn, char *res, int res_len) {
|
||||
} else if (a->type==ARG_FLT) {
|
||||
ERR_I(StrGetFloat(buf, (float *)a->adr, COC_SEP));
|
||||
} else if (a->type==ARG_ARR) {
|
||||
ERR_I(StrGetArray(buf, (float *)a->adr, a->size));
|
||||
arr=(float *)a->adr;
|
||||
ERR_I(siz=StrGetArray(buf, arr, a->size));
|
||||
while (siz < a->size) { /* fill with zeroes */
|
||||
arr[siz++]=0.0;
|
||||
}
|
||||
resp="<array>";
|
||||
} else if (a->type==ARG_CHAR) {
|
||||
ERR_P(StrNGet(buf, (char *)a->adr, a->size, COC_SEP));
|
||||
|
||||
Reference in New Issue
Block a user