approved tecs_dlog, added sys_util.c
This commit is contained in:
138
tecs/tecs_cli.c
138
tecs/tecs_cli.c
@@ -1,5 +1,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "sys_util.h"
|
||||
#include "err_handling.h"
|
||||
#include "str_util.h"
|
||||
#include "tecs_cli.h"
|
||||
@@ -105,124 +106,93 @@ void TeccClose(pTecsClient conn) {
|
||||
}
|
||||
}
|
||||
|
||||
/* fortran interface ---------------- */
|
||||
/* fortran wrappers --------------------------------------------------
|
||||
|
||||
int tecc_set_par_(pTecsClient *conn, char *name, char *par, int namelen, int parlen) {
|
||||
reduced functionality:
|
||||
connection is static, so only one connection at a time may be opened
|
||||
|
||||
*/
|
||||
|
||||
#ifdef __VMS
|
||||
#define tecs_get_par_ tecs_get_par
|
||||
#define tecs_set_par_ tecs_set_par
|
||||
#define tecs_send_ tecs_send
|
||||
#define tecs_init_ tecs_init
|
||||
#define tecs_get3_ tecs_get3
|
||||
#define tecs_set_ tecs_set
|
||||
#define tecs_wait_ tecs_wait
|
||||
#define tecs_is_open_ tecs_is_open
|
||||
#define tecs_close_ tecs_close
|
||||
#define tecs_quit_server_ tecs_quit_server
|
||||
#endif
|
||||
|
||||
static pTecsClient conn=NULL;
|
||||
|
||||
int tecs_set_par_(F_CHAR(name), F_CHAR(par), int name_len, int par_len) {
|
||||
char nbuf[64], pbuf[256];
|
||||
|
||||
if (namelen>=sizeof(nbuf)) namelen=sizeof(nbuf)-1;
|
||||
strncpy(nbuf, name, namelen);
|
||||
while (namelen>0 && nbuf[namelen-1]==' ') namelen--; /* trim */
|
||||
nbuf[namelen]='\0';
|
||||
STR_TO_C(nbuf, name);
|
||||
STR_TO_C(pbuf, par);
|
||||
|
||||
if (parlen>=sizeof(pbuf)) parlen=sizeof(pbuf)-1;
|
||||
strncpy(pbuf, par, parlen);
|
||||
while (parlen>0 && pbuf[parlen-1]==' ') parlen--; /* trim */
|
||||
pbuf[parlen]='\0';
|
||||
|
||||
ERR_I(CocSet(*conn, nbuf, pbuf));
|
||||
ERR_I(CocSet(conn, nbuf, pbuf));
|
||||
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int tecc_get_par_(pTecsClient *conn, char *name, char *par, int namelen, int parlen) {
|
||||
int l;
|
||||
int tecs_get_par_(F_CHAR(name), F_CHAR(par), int name_len, int par_len) {
|
||||
char nbuf[64], pbuf[256];
|
||||
|
||||
if (namelen>=sizeof(nbuf)) namelen=sizeof(nbuf)-1;
|
||||
strncpy(nbuf, name, namelen);
|
||||
while (namelen>0 && nbuf[namelen-1]==' ') namelen--; /* trim */
|
||||
nbuf[namelen]='\0';
|
||||
|
||||
ERR_I(CocGet(*conn, nbuf, pbuf));
|
||||
|
||||
l=strlen(pbuf);
|
||||
if (l>parlen) l=parlen;
|
||||
strncpy(par, pbuf, l);
|
||||
return(l);
|
||||
STR_TO_C(nbuf, name);
|
||||
ERR_I(CocGet(conn, nbuf, pbuf));
|
||||
return(STR_TO_F(par, pbuf));
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
int tecc_send_(pTecsClient *conn, char *cmd, char *reply, int cmdlen, int replylen) {
|
||||
int l;
|
||||
int tecs_send_(F_CHAR(cmd), F_CHAR(reply), int cmd_len, int reply_len) {
|
||||
char cbuf[80], rbuf[80];
|
||||
|
||||
if (cmdlen>=sizeof(cbuf)) cmdlen=sizeof(cbuf)-1;
|
||||
strncpy(cbuf, cmd, cmdlen);
|
||||
while (cmdlen>0 && cbuf[cmdlen-1]==' ') cmdlen--; /* trim */
|
||||
cbuf[cmdlen]='\0';
|
||||
|
||||
ERR_I(TeccSend(*conn, cbuf, rbuf, sizeof(rbuf)));
|
||||
|
||||
l=strlen(rbuf);
|
||||
if (l>replylen) l=replylen;
|
||||
strncpy(reply, rbuf, l);
|
||||
return(l);
|
||||
STR_TO_C(cbuf, cmd);
|
||||
ERR_I(TeccSend(conn, cbuf, rbuf, sizeof(rbuf)));
|
||||
return(STR_TO_F(reply, rbuf));
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
pTecsClient tecc_init_(char *server, int *port, int serverlen) {
|
||||
int tecs_init_(F_CHAR(startcmd), int *port, int startcmd_len) {
|
||||
char sbuf[132];
|
||||
|
||||
if (serverlen>=sizeof(sbuf)) serverlen=sizeof(sbuf)-1;
|
||||
strncpy(sbuf, server, serverlen);
|
||||
while (serverlen>0 && sbuf[serverlen-1]==' ') serverlen--; /* trim */
|
||||
sbuf[serverlen]='\0';
|
||||
return(TeccInit(sbuf, *port));
|
||||
STR_TO_C(sbuf, startcmd);
|
||||
ERR_P(conn=TeccInit(sbuf, *port));
|
||||
return(0);
|
||||
OnError: return(-1);
|
||||
}
|
||||
|
||||
#ifdef __VMS
|
||||
#define tecc_get_ tecc_get
|
||||
#define tecc_get3_ tecc_get3
|
||||
#define tecc_set_ tecc_set
|
||||
#define tecc_wait_ tecc_wait
|
||||
#define tecc_close_ tecc_close
|
||||
#define tecc_quit_server_ tecc_quit_server
|
||||
#endif
|
||||
|
||||
int tecc_get_(pTecsClient *conn, float *temp) {
|
||||
return(TeccGet(*conn, temp));
|
||||
int tecs_get_(float *temp) {
|
||||
return(TeccGet(conn, temp));
|
||||
}
|
||||
|
||||
int tecc_get3_(pTecsClient *conn, float *t1, float *t2, float *t3) {
|
||||
return(TeccGet3(*conn, t1, t2, t3));
|
||||
int tecs_get3_(float *t1, float *t2, float *t3) {
|
||||
return(TeccGet3(conn, t1, t2, t3));
|
||||
}
|
||||
|
||||
int tecc_set_(pTecsClient *conn, float *temp) {
|
||||
return(TeccSet(*conn, *temp));
|
||||
int tecs_set_(float *temp) {
|
||||
return(TeccSet(conn, *temp));
|
||||
}
|
||||
|
||||
int tecc_wait_(pTecsClient *conn) {
|
||||
return(TeccWait(*conn));
|
||||
int tecs_wait_(void) {
|
||||
return(TeccWait(conn));
|
||||
}
|
||||
|
||||
void tecc_close_(pTecsClient *conn) {
|
||||
TeccClose(*conn);
|
||||
int tecs_is_open_() {
|
||||
return(conn!=NULL);
|
||||
}
|
||||
|
||||
int tecc_quit_server_(pTecsClient *conn) {
|
||||
return(TeccQuitServer(*conn));
|
||||
void tecs_close_(void) {
|
||||
TeccClose(conn);
|
||||
conn=NULL;
|
||||
}
|
||||
|
||||
#ifdef __VMS
|
||||
|
||||
typedef struct { short size, dummy; char *text; } Desc;
|
||||
|
||||
pTecsClient tecc_init(Desc *server, int *port, int serverlen) {
|
||||
return(tecc_init_(server->text, port, server->size));
|
||||
int tecs_quit_server_(void) {
|
||||
return(TeccQuitServer(conn));
|
||||
}
|
||||
|
||||
int tecc_set_par(pTecsClient *conn, Desc *name, Desc *par) {
|
||||
return(tecc_set_par_(conn, name->text, par->text, name->size, par->size));
|
||||
}
|
||||
|
||||
int tecc_get_par(pTecsClient *conn, Desc *name, Desc *par) {
|
||||
return(tecc_get_par_(conn, name->text, par->text, name->size, par->size));
|
||||
}
|
||||
|
||||
int tecc_send(pTecsClient *conn, Desc *cmd, Desc *reply) {
|
||||
return(tecc_send_(conn, cmd->text, reply->text, cmd->size, reply->size));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user