From d512198753eee30adc1a7a7f0558bc49d73fc2ec Mon Sep 17 00:00:00 2001 From: hadaq Date: Fri, 16 Jul 2010 16:04:50 +0000 Subject: [PATCH] initial release --- trbnetd/server/Makefile | 102 +++++++++++ trbnetd/server/server.c | 331 ++++++++++++++++++++++++++++++++++++ trbnetd/server/trbnetd.c | 268 +++++++++++++++++++++++++++++ trbnetd/server/trbrpc.h | 246 +++++++++++++++++++++++++++ trbnetd/server/trbrpc_xdr.c | 179 +++++++++++++++++++ 5 files changed, 1126 insertions(+) create mode 100644 trbnetd/server/Makefile create mode 100644 trbnetd/server/server.c create mode 100644 trbnetd/server/trbnetd.c create mode 100644 trbnetd/server/trbrpc.h create mode 100644 trbnetd/server/trbrpc_xdr.c diff --git a/trbnetd/server/Makefile b/trbnetd/server/Makefile new file mode 100644 index 0000000..d3c88ee --- /dev/null +++ b/trbnetd/server/Makefile @@ -0,0 +1,102 @@ +# ------------ Compiler / Linker Options ------------------------------- + +AXIS_USABLE_LIBS = UCLIBC GLIBC +include $(AXIS_TOP_DIR)/tools/build/Rules.axis + +INCDIR = -I../../libtrbnet +CPPFLAGS = + +CFLAGS = -pipe -g -Wall -Winline -O3 -fPIC -finline-functions -finline-limit=600000 + +CXX = g++ +CXXFLAGS = -pipe -g -Wall + +LD = $(CC) +#LD = $(CXX) + +LDFLAGS = +LIBDIR = -L../../libtrbnet +LOADLIBES = -ltrbnet + +# ------------ TARGETS ------------------------------------------------- + +TARGETS = trbnetd + +LIB_TARGETS = + +# ------------ Libaries ------------------------------------------------ + +AR = ar +ARFLAGS = -srv + +# ------------ Pattern Rules ------------------------------------------- + +# C Code: +%.o: %.c + $(CC) $< -c $(CFLAGS) $(CPPFLAGS) $(INCDIR) -o $@ + +# C++ Code: +%.o: %.cpp + $(CXX) $< -c $(CXXFLAGS) $(CPPFLAGS) $(INCDIR) -o $@ + +%.o: %.cc + $(CXX) $< -c $(CXXFLAGS) $(CPPFLAGS) $(INCDIR) -o $@ + +%.o: %.C + $(CXX) $< -c $(CXXFLAGS) $(CPPFLAGS) $(INCDIR) -o $@ + +# C/C++ Objects (set LD accordingly) +%: %.o + @echo LINKING $@ + $(LD) $^ $(LDFLAGS) $(LIBDIR) $(LOADLIBES) -o $@ + @echo DONE! + +# Libaries +%.a: $% + @echo CREATING library $@ + $(AR) $(ARFLAGS) $@ $^ + @echo DONE! + +%.so: $% + @echo CREATING shared library $@ + $(LD) -shared -O $^ -o $@ + @echo DONE! + +# RPCGEN +%.h: %.x + rpcgen -N -M $^ + +# ------------ Targets ------------------------------------------------- + +.PHONY: all +all: $(LIB_TARGETS) $(TARGETS) + +.PHONY: clean +clean: + rm -f *.o core core.* + rcsclean + +.PHONY: distclean +distclean: clean + rm -f $(TARGETS) $(LIB_TARGETS) + rcsclean -u + +.PHONY: cleanrpc +cleanrpc: + rm -f trbrpc_clnt.c trbrpc_svc.c trbrpc.h trbrpc_xdr.c + +.PHONY: depend +depend: + $(CC) -MM $(CFLAGS) $(CPPFLAGS) $(INCDIR) *.c + +# ------------ Dependencies -------------------------------------------- + +trbnetd: trbnetd.o server.o trbrpc_xdr.o + +trbnetd: server.o trbnetd.o trbrpc_xdr.o + +trbnetd.o: trbnetd.c trbrpc.h + +server.o: server.c + +trbrpc_xdr.o: trbrpc_xdr.c trbrpc.h diff --git a/trbnetd/server/server.c b/trbnetd/server/server.c new file mode 100644 index 0000000..cdec464 --- /dev/null +++ b/trbnetd/server/server.c @@ -0,0 +1,331 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "trbrpc.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#ifndef SIG_PF +#define SIG_PF void(*)(int) +#endif + +int +_register_read_1(register_read_1_argument * argp, void *result, + struct svc_req *rqstp) +{ + return (register_read_1_svc + (argp->arg1, argp->arg2, argp->arg3, result, rqstp)); +} + +int +_register_read_mem_1(register_read_mem_1_argument * argp, void *result, + struct svc_req *rqstp) +{ + return (register_read_mem_1_svc + (argp->arg1, argp->arg2, argp->arg3, argp->arg4, argp->arg5, result, + rqstp)); +} + +int +_register_write_1(register_write_1_argument * argp, void *result, + struct svc_req *rqstp) +{ + return (register_write_1_svc + (argp->arg1, argp->arg2, argp->arg3, result, rqstp)); +} + +int +_register_write_mem_1(register_write_mem_1_argument * argp, void *result, + struct svc_req *rqstp) +{ + return (register_write_mem_1_svc + (argp->arg1, argp->arg2, argp->arg3, argp->arg4, result, rqstp)); +} + +int +_read_uid_1(read_uid_1_argument * argp, void *result, struct svc_req *rqstp) +{ + return (read_uid_1_svc(argp->arg1, argp->arg2, result, rqstp)); +} + +int +_set_address_1(set_address_1_argument * argp, void *result, + struct svc_req *rqstp) +{ + return (set_address_1_svc + (argp->arg1, argp->arg2, argp->arg3, result, rqstp)); +} + +int +_send_trigger_1(send_trigger_1_argument * argp, void *result, + struct svc_req *rqstp) +{ + return (send_trigger_1_svc + (argp->arg1, argp->arg2, argp->arg3, argp->arg4, result, rqstp)); +} + +int +_ipu_data_read_1(ipu_data_read_1_argument * argp, void *result, + struct svc_req *rqstp) +{ + return (ipu_data_read_1_svc + (argp->arg1, argp->arg2, argp->arg3, argp->arg4, argp->arg5, result, + rqstp)); +} + +int +_fpga_register_read_1(uint16_t * argp, void *result, struct svc_req *rqstp) +{ + return (fpga_register_read_1_svc(*argp, result, rqstp)); +} + +int +_fpga_register_write_1(fpga_register_write_1_argument * argp, void *result, + struct svc_req *rqstp) +{ + return (fpga_register_write_1_svc(argp->arg1, argp->arg2, result, rqstp)); +} + +int _trb_fifo_flush_1(uint8_t * argp, void *result, struct svc_req *rqstp) +{ + return (trb_fifo_flush_1_svc(*argp, result, rqstp)); +} + +int _network_reset_1(void *argp, void *result, struct svc_req *rqstp) +{ + return (network_reset_1_svc(result, rqstp)); +} + +int _com_reset_1(void *argp, void *result, struct svc_req *rqstp) +{ + return (com_reset_1_svc(result, rqstp)); +} + +static void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp) +{ + union + { + register_read_1_argument register_read_1_arg; + register_read_mem_1_argument register_read_mem_1_arg; + register_write_1_argument register_write_1_arg; + register_write_mem_1_argument register_write_mem_1_arg; + read_uid_1_argument read_uid_1_arg; + set_address_1_argument set_address_1_arg; + send_trigger_1_argument send_trigger_1_arg; + ipu_data_read_1_argument ipu_data_read_1_arg; + uint16_t fpga_register_read_1_arg; + fpga_register_write_1_argument fpga_register_write_1_arg; + uint8_t trb_fifo_flush_1_arg; + } argument; + union + { + RetVal register_read_1_res; + RetVal register_read_mem_1_res; + Status register_write_1_res; + Status register_write_mem_1_res; + RetVal read_uid_1_res; + Status set_address_1_res; + Status send_trigger_1_res; + RetVal ipu_data_read_1_res; + RetVal fpga_register_read_1_res; + Status fpga_register_write_1_res; + Status trb_fifo_flush_1_res; + Status network_reset_1_res; + Status com_reset_1_res; + } result; + bool_t retval; + xdrproc_t _xdr_argument, _xdr_result; + bool_t(*local) (char *, void *, struct svc_req *); + + switch (rqstp->rq_proc) { + case NULLPROC: + (void)svc_sendreply(transp, (xdrproc_t) xdr_void, (char *)NULL); + return; + + case REGISTER_READ: + _xdr_argument = (xdrproc_t) xdr_register_read_1_argument; + _xdr_result = (xdrproc_t) xdr_RetVal; + local = (bool_t(*)(char *, void *, struct svc_req *))_register_read_1; + break; + + case REGISTER_READ_MEM: + _xdr_argument = (xdrproc_t) xdr_register_read_mem_1_argument; + _xdr_result = (xdrproc_t) xdr_RetVal; + local = (bool_t(*)(char *, void *, struct svc_req *))_register_read_mem_1; + break; + + case REGISTER_WRITE: + _xdr_argument = (xdrproc_t) xdr_register_write_1_argument; + _xdr_result = (xdrproc_t) xdr_Status; + local = (bool_t(*)(char *, void *, struct svc_req *))_register_write_1; + break; + + case REGISTER_WRITE_MEM: + _xdr_argument = (xdrproc_t) xdr_register_write_mem_1_argument; + _xdr_result = (xdrproc_t) xdr_Status; + local = + (bool_t(*)(char *, void *, struct svc_req *))_register_write_mem_1; + break; + + case READ_UID: + _xdr_argument = (xdrproc_t) xdr_read_uid_1_argument; + _xdr_result = (xdrproc_t) xdr_RetVal; + local = (bool_t(*)(char *, void *, struct svc_req *))_read_uid_1; + break; + + case SET_ADDRESS: + _xdr_argument = (xdrproc_t) xdr_set_address_1_argument; + _xdr_result = (xdrproc_t) xdr_Status; + local = (bool_t(*)(char *, void *, struct svc_req *))_set_address_1; + break; + + case SEND_TRIGGER: + _xdr_argument = (xdrproc_t) xdr_send_trigger_1_argument; + _xdr_result = (xdrproc_t) xdr_Status; + local = (bool_t(*)(char *, void *, struct svc_req *))_send_trigger_1; + break; + + case IPU_DATA_READ: + _xdr_argument = (xdrproc_t) xdr_ipu_data_read_1_argument; + _xdr_result = (xdrproc_t) xdr_RetVal; + local = (bool_t(*)(char *, void *, struct svc_req *))_ipu_data_read_1; + break; + + case FPGA_REGISTER_READ: + _xdr_argument = (xdrproc_t) xdr_uint16_t; + _xdr_result = (xdrproc_t) xdr_RetVal; + local = + (bool_t(*)(char *, void *, struct svc_req *))_fpga_register_read_1; + break; + + case FPGA_REGISTER_WRITE: + _xdr_argument = (xdrproc_t) xdr_fpga_register_write_1_argument; + _xdr_result = (xdrproc_t) xdr_Status; + local = + (bool_t(*)(char *, void *, struct svc_req *))_fpga_register_write_1; + break; + + case TRB_FIFO_FLUSH: + _xdr_argument = (xdrproc_t) xdr_uint8_t; + _xdr_result = (xdrproc_t) xdr_Status; + local = (bool_t(*)(char *, void *, struct svc_req *))_trb_fifo_flush_1; + break; + + case NETWORK_RESET: + _xdr_argument = (xdrproc_t) xdr_void; + _xdr_result = (xdrproc_t) xdr_Status; + local = (bool_t(*)(char *, void *, struct svc_req *))_network_reset_1; + break; + + case COM_RESET: + _xdr_argument = (xdrproc_t) xdr_void; + _xdr_result = (xdrproc_t) xdr_Status; + local = (bool_t(*)(char *, void *, struct svc_req *))_com_reset_1; + break; + + default: + svcerr_noproc(transp); + return; + } + memset((char *)&argument, 0, sizeof(argument)); + if (!svc_getargs(transp, (xdrproc_t) _xdr_argument, (caddr_t) & argument)) { + svcerr_decode(transp); + return; + } + retval = (bool_t) (*local) ((char *)&argument, (void *)&result, rqstp); + if (retval > 0 + && !svc_sendreply(transp, (xdrproc_t) _xdr_result, (char *)&result)) { + svcerr_systemerr(transp); + } + if (!svc_freeargs(transp, (xdrproc_t) _xdr_argument, (caddr_t) & argument)) { + fprintf(stderr, "%s", "unable to free arguments"); + exit(1); + } + if (!trbnetrpcprog_1_freeresult(transp, _xdr_result, (caddr_t) & result)) + fprintf(stderr, "%s", "unable to free results"); + + return; +} + +static pid_t myPid = -1; + +int main(int argc, char **argv) +{ + int daemonMode = 1; + register SVCXPRT *transp; + + if ((argc >= 2) && (strcmp(argv[1], "-f") == 0)) + daemonMode = 0; + + pmap_unset(TRBNETRPCPROG, TRBNETRPCVERS); + + transp = svcudp_create(RPC_ANYSOCK); + if (transp == NULL) { + fprintf(stderr, "%s", "cannot create udp service."); + exit(1); + } + if (!svc_register + (transp, TRBNETRPCPROG, TRBNETRPCVERS, trbnetrpcprog_1, IPPROTO_UDP)) { + fprintf(stderr, "%s", + "unable to register (TRBNETRPCPROG, TRBNETRPCVERS, udp)."); + exit(1); + } + + transp = svctcp_create(RPC_ANYSOCK, 0, 0); + if (transp == NULL) { + fprintf(stderr, "%s", "cannot create tcp service."); + exit(1); + } + if (!svc_register + (transp, TRBNETRPCPROG, TRBNETRPCVERS, trbnetrpcprog_1, IPPROTO_TCP)) { + fprintf(stderr, "%s", + "unable to register (TRBNETRPCPROG, TRBNETRPCVERS, tcp)."); + exit(1); + } + + /* initialize FPGA */ + init_ports(); + + + if (daemonMode == 1) { + /* fork the first time */ + if ((myPid = fork()) == -1) { /* Error fork, Mother exit, no child */ + perror(argv[0]); + exit(EXIT_FAILURE); + } + if (myPid > 0) { + exit(EXIT_SUCCESS); /* Mother exit */ + } + /* fork the second time */ + setsid(); + if ((myPid = fork()) == -1) { /* Error fork, Mother exit, no child */ + perror(argv[0]); + exit(EXIT_FAILURE); + } + if (myPid > 0) { + exit(EXIT_SUCCESS); /* Mother exit */ + } + /* close stdin, stdout, stderr, change dir */ + chdir("/"); + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "a", stdout); + freopen("/dev/console", "a", stderr); + } + svc_run(); + + /* NOTREACHED */ + fprintf(stderr, "%s", "svc_run returned"); + exit(EXIT_FAILURE); +} diff --git a/trbnetd/server/trbnetd.c b/trbnetd/server/trbnetd.c new file mode 100644 index 0000000..11a64a6 --- /dev/null +++ b/trbnetd/server/trbnetd.c @@ -0,0 +1,268 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "trbrpc.h" + +int trbnetrpcprog_1_freeresult(SVCXPRT * transp, + xdrproc_t xdr_result, caddr_t result) +{ + xdr_free(xdr_result, result); + + /* + * Insert additional freeing code here, if needed + */ + + return 1; +} + +static void copyStatus(Status* status) +{ + status->trb_errno = trb_errno; + status->status_common = trb_term.status_common; + status->status_channel = trb_term.status_channel; + status->sequence = trb_term.sequence; + status->channel = trb_term.channel; +} + +bool_t register_read_1_svc(uint16_t trb_address, + uint16_t reg_address, + u_int dsize, + RetVal * retVal, + struct svc_req * rqstp) +{ + int status; + + /* allocate buffer memory */ + retVal->data.Buffer_val = (uint32_t *) malloc(sizeof(uint32_t) * dsize); + if (retVal->data.Buffer_val == NULL) { + return FALSE; + } + + status = trb_register_read(trb_address, reg_address, + (uint32_t *) retVal->data.Buffer_val, dsize); + + copyStatus(&retVal->status); + retVal->data.Buffer_len = status == -1 ? 0 : status; + + return TRUE; +} + +bool_t register_read_mem_1_svc(uint16_t trb_address, + uint16_t reg_address, + uint8_t option, + uint16_t size, + u_int dsize, + RetVal* retVal, + struct svc_req * rqstp) +{ + int status; + + /* allocate buffer memory */ + retVal->data.Buffer_val = (uint32_t *) malloc(sizeof(uint32_t) * dsize); + if (retVal->data.Buffer_val == NULL) + return FALSE; + + status = trb_register_read_mem(trb_address, reg_address, option, size, + (uint32_t *) retVal->data.Buffer_val, dsize); + + copyStatus(&retVal->status); + retVal->data.Buffer_len = status == -1 ? 0 : status; + + return TRUE; +} + +bool_t register_write_1_svc(uint16_t trb_address, + uint16_t reg_address, + uint32_t value, + Status* retVal, + struct svc_req* rqstp) +{ + int status; + + status = trb_register_write(trb_address, reg_address, value); + + copyStatus(retVal); + + return TRUE; +} + +bool_t register_write_mem_1_svc(uint16_t trb_address, + uint16_t reg_address, + uint8_t option, + Buffer data, + Status* retVal, + struct svc_req* rqstp) +{ + int status; + + status = trb_register_write_mem(trb_address, + reg_address, + option, + (uint32_t*)data.Buffer_val, + data.Buffer_len); + + copyStatus(retVal); + + return TRUE; +} + +bool_t read_uid_1_svc(uint16_t trb_address, + u_int dsize, + RetVal* retVal, + struct svc_req* rqstp) +{ + int status; + + /* allocate buffer memory */ + retVal->data.Buffer_val = (uint32_t *) malloc(sizeof(uint32_t) * dsize); + if (retVal->data.Buffer_val == NULL) { + return FALSE; + } + + status = trb_read_uid(trb_address, + (uint32_t*)retVal->data.Buffer_val, + dsize); + + copyStatus(&retVal->status); + retVal->data.Buffer_len = status == -1 ? 0 : status; + + return TRUE; +} + +bool_t set_address_1_svc(uint64_t uid, + uint8_t endpoint, + uint16_t trb_address, + Status* retVal, + struct svc_req* rqstp) +{ + int status; + + status = trb_set_address(uid, endpoint, trb_address); + + copyStatus(retVal); + + return TRUE; +} + +bool_t network_reset_1_svc(Status* retVal, + struct svc_req* rqstp) +{ + int status; + + status = network_reset(); + + copyStatus(retVal); + + return TRUE; +} + +bool_t send_trigger_1_svc(uint8_t type, + uint32_t trg_info, + uint8_t trg_random, + uint16_t trg_number, + Status* retVal, + struct svc_req* rqstp) +{ + int status; + + status = trb_send_trigger(type, trg_info, trg_random, trg_number); + + copyStatus(retVal); + + return TRUE; +} + +bool_t ipu_data_read_1_svc(uint8_t type, + uint32_t trg_info, + uint8_t trg_random, + uint16_t trg_number, + u_int dsize, + RetVal* retVal, + struct svc_req* rqstp) +{ + int status; + + /* allocate buffer memory */ + retVal->data.Buffer_val = (uint32_t *) malloc(sizeof(uint32_t) * dsize); + if (retVal->data.Buffer_val == NULL) + return FALSE; + + status = trb_ipu_data_read(type, trg_info, trg_random, trg_number, + (uint32_t *)retVal->data.Buffer_val, dsize); + + copyStatus(&retVal->status); + retVal->data.Buffer_len = status == -1 ? 0 : status; + + return TRUE; +} + +bool_t fpga_register_read_1_svc(uint16_t reg_address, + RetVal* retVal, + struct svc_req* rqstp) +{ + int status; + + /* allocate buffer memory */ + retVal->data.Buffer_val = (uint32_t *) malloc(sizeof(uint32_t) * 1); + if (retVal->data.Buffer_val == NULL) + return FALSE; + + status = fpga_register_read(reg_address, + (uint32_t *)retVal->data.Buffer_val); + + copyStatus(&retVal->status); + retVal->data.Buffer_len = status == -1 ? 0 : 1; + + return TRUE; +} + +bool_t fpga_register_write_1_svc(uint16_t reg_address, + uint32_t value, + Status* retVal, + struct svc_req* rqstp) +{ + int status; + + status = fpga_register_write(reg_address, value); + + copyStatus(retVal); + + return TRUE; +} + + + + +bool_t trb_fifo_flush_1_svc(uint8_t channel, + Status* retVal, + struct svc_req* rqstp) +{ + int status; + + status = trb_fifo_flush(channel); + + copyStatus(retVal); + + return TRUE; +} + + +bool_t com_reset_1_svc(Status* retVal, + struct svc_req* rqstp) +{ + int status; + + status = com_reset(); + + copyStatus(retVal); + + return TRUE; +} diff --git a/trbnetd/server/trbrpc.h b/trbnetd/server/trbrpc.h new file mode 100644 index 0000000..2525d85 --- /dev/null +++ b/trbnetd/server/trbrpc.h @@ -0,0 +1,246 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#ifndef _TRBRPC_H_RPCGEN +#define _TRBRPC_H_RPCGEN + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct { + u_int Buffer_len; + uint32_t *Buffer_val; +} Buffer; + +struct Status { + int trb_errno; + uint16_t status_common; + uint16_t status_channel; + uint16_t sequence; + uint8_t channel; +}; +typedef struct Status Status; + +struct RetVal { + Status status; + Buffer data; +}; +typedef struct RetVal RetVal; + +struct register_read_1_argument { + uint16_t arg1; + uint16_t arg2; + u_int arg3; +}; +typedef struct register_read_1_argument register_read_1_argument; + +struct register_read_mem_1_argument { + uint16_t arg1; + uint16_t arg2; + uint8_t arg3; + uint16_t arg4; + u_int arg5; +}; +typedef struct register_read_mem_1_argument register_read_mem_1_argument; + +struct register_write_1_argument { + uint16_t arg1; + uint16_t arg2; + uint32_t arg3; +}; +typedef struct register_write_1_argument register_write_1_argument; + +struct register_write_mem_1_argument { + uint16_t arg1; + uint16_t arg2; + uint8_t arg3; + Buffer arg4; +}; +typedef struct register_write_mem_1_argument register_write_mem_1_argument; + +struct read_uid_1_argument { + uint16_t arg1; + u_int arg2; +}; +typedef struct read_uid_1_argument read_uid_1_argument; + +struct set_address_1_argument { + uint64_t arg1; + uint8_t arg2; + uint16_t arg3; +}; +typedef struct set_address_1_argument set_address_1_argument; + +struct send_trigger_1_argument { + uint8_t arg1; + uint32_t arg2; + uint8_t arg3; + uint16_t arg4; +}; +typedef struct send_trigger_1_argument send_trigger_1_argument; + +struct ipu_data_read_1_argument { + uint8_t arg1; + uint32_t arg2; + uint8_t arg3; + uint16_t arg4; + u_int arg5; +}; +typedef struct ipu_data_read_1_argument ipu_data_read_1_argument; + +struct fpga_register_write_1_argument { + uint16_t arg1; + uint32_t arg2; +}; +typedef struct fpga_register_write_1_argument fpga_register_write_1_argument; + +struct register_modify_1_argument { + uint16_t arg1; + uint16_t arg2; + int arg3; + uint32_t arg4; + uint32_t arg5; +}; +typedef struct register_modify_1_argument register_modify_1_argument; + +#define TRBNETRPCPROG 0x20000099 +#define TRBNETRPCVERS 1 + +#if defined(__STDC__) || defined(__cplusplus) +#define REGISTER_READ 1 +extern enum clnt_stat register_read_1(uint16_t , uint16_t , u_int , RetVal *, CLIENT *); +extern bool_t register_read_1_svc(uint16_t , uint16_t , u_int , RetVal *, struct svc_req *); +#define REGISTER_READ_MEM 2 +extern enum clnt_stat register_read_mem_1(uint16_t , uint16_t , uint8_t , uint16_t , u_int , RetVal *, CLIENT *); +extern bool_t register_read_mem_1_svc(uint16_t , uint16_t , uint8_t , uint16_t , u_int , RetVal *, struct svc_req *); +#define REGISTER_WRITE 3 +extern enum clnt_stat register_write_1(uint16_t , uint16_t , uint32_t , Status *, CLIENT *); +extern bool_t register_write_1_svc(uint16_t , uint16_t , uint32_t , Status *, struct svc_req *); +#define REGISTER_WRITE_MEM 4 +extern enum clnt_stat register_write_mem_1(uint16_t , uint16_t , uint8_t , Buffer , Status *, CLIENT *); +extern bool_t register_write_mem_1_svc(uint16_t , uint16_t , uint8_t , Buffer , Status *, struct svc_req *); +#define READ_UID 5 +extern enum clnt_stat read_uid_1(uint16_t , u_int , RetVal *, CLIENT *); +extern bool_t read_uid_1_svc(uint16_t , u_int , RetVal *, struct svc_req *); +#define SET_ADDRESS 6 +extern enum clnt_stat set_address_1(uint64_t , uint8_t , uint16_t , Status *, CLIENT *); +extern bool_t set_address_1_svc(uint64_t , uint8_t , uint16_t , Status *, struct svc_req *); +#define SEND_TRIGGER 7 +extern enum clnt_stat send_trigger_1(uint8_t , uint32_t , uint8_t , uint16_t , Status *, CLIENT *); +extern bool_t send_trigger_1_svc(uint8_t , uint32_t , uint8_t , uint16_t , Status *, struct svc_req *); +#define IPU_DATA_READ 8 +extern enum clnt_stat ipu_data_read_1(uint8_t , uint32_t , uint8_t , uint16_t , u_int , RetVal *, CLIENT *); +extern bool_t ipu_data_read_1_svc(uint8_t , uint32_t , uint8_t , uint16_t , u_int , RetVal *, struct svc_req *); +#define FPGA_REGISTER_READ 9 +extern enum clnt_stat fpga_register_read_1(uint16_t , RetVal *, CLIENT *); +extern bool_t fpga_register_read_1_svc(uint16_t , RetVal *, struct svc_req *); +#define FPGA_REGISTER_WRITE 10 +extern enum clnt_stat fpga_register_write_1(uint16_t , uint32_t , Status *, CLIENT *); +extern bool_t fpga_register_write_1_svc(uint16_t , uint32_t , Status *, struct svc_req *); +#define TRB_FIFO_FLUSH 11 +extern enum clnt_stat trb_fifo_flush_1(uint8_t , Status *, CLIENT *); +extern bool_t trb_fifo_flush_1_svc(uint8_t , Status *, struct svc_req *); +#define NETWORK_RESET 12 +extern enum clnt_stat network_reset_1(Status *, CLIENT *); +extern bool_t network_reset_1_svc(Status *, struct svc_req *); +#define COM_RESET 13 +extern enum clnt_stat com_reset_1(Status *, CLIENT *); +extern bool_t com_reset_1_svc(Status *, struct svc_req *); +#define REGISTER_MODIFY 14 +extern enum clnt_stat register_modify_1(uint16_t , uint16_t , int , uint32_t , uint32_t , Status *, CLIENT *); +extern bool_t register_modify_1_svc(uint16_t , uint16_t , int , uint32_t , uint32_t , Status *, struct svc_req *); +extern int trbnetrpcprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); + +#else /* K&R C */ +#define REGISTER_READ 1 +extern enum clnt_stat register_read_1(); +extern bool_t register_read_1_svc(); +#define REGISTER_READ_MEM 2 +extern enum clnt_stat register_read_mem_1(); +extern bool_t register_read_mem_1_svc(); +#define REGISTER_WRITE 3 +extern enum clnt_stat register_write_1(); +extern bool_t register_write_1_svc(); +#define REGISTER_WRITE_MEM 4 +extern enum clnt_stat register_write_mem_1(); +extern bool_t register_write_mem_1_svc(); +#define READ_UID 5 +extern enum clnt_stat read_uid_1(); +extern bool_t read_uid_1_svc(); +#define SET_ADDRESS 6 +extern enum clnt_stat set_address_1(); +extern bool_t set_address_1_svc(); +#define SEND_TRIGGER 7 +extern enum clnt_stat send_trigger_1(); +extern bool_t send_trigger_1_svc(); +#define IPU_DATA_READ 8 +extern enum clnt_stat ipu_data_read_1(); +extern bool_t ipu_data_read_1_svc(); +#define FPGA_REGISTER_READ 9 +extern enum clnt_stat fpga_register_read_1(); +extern bool_t fpga_register_read_1_svc(); +#define FPGA_REGISTER_WRITE 10 +extern enum clnt_stat fpga_register_write_1(); +extern bool_t fpga_register_write_1_svc(); +#define TRB_FIFO_FLUSH 11 +extern enum clnt_stat trb_fifo_flush_1(); +extern bool_t trb_fifo_flush_1_svc(); +#define NETWORK_RESET 12 +extern enum clnt_stat network_reset_1(); +extern bool_t network_reset_1_svc(); +#define COM_RESET 13 +extern enum clnt_stat com_reset_1(); +extern bool_t com_reset_1_svc(); +#define REGISTER_MODIFY 14 +extern enum clnt_stat register_modify_1(); +extern bool_t register_modify_1_svc(); +extern int trbnetrpcprog_1_freeresult (); +#endif /* K&R C */ + +/* the xdr functions */ + +#if defined(__STDC__) || defined(__cplusplus) +extern bool_t xdr_Buffer (XDR *, Buffer*); +extern bool_t xdr_Status (XDR *, Status*); +extern bool_t xdr_RetVal (XDR *, RetVal*); +extern bool_t xdr_register_read_1_argument (XDR *, register_read_1_argument*); +extern bool_t xdr_register_read_mem_1_argument (XDR *, register_read_mem_1_argument*); +extern bool_t xdr_register_write_1_argument (XDR *, register_write_1_argument*); +extern bool_t xdr_register_write_mem_1_argument (XDR *, register_write_mem_1_argument*); +extern bool_t xdr_read_uid_1_argument (XDR *, read_uid_1_argument*); +extern bool_t xdr_set_address_1_argument (XDR *, set_address_1_argument*); +extern bool_t xdr_send_trigger_1_argument (XDR *, send_trigger_1_argument*); +extern bool_t xdr_ipu_data_read_1_argument (XDR *, ipu_data_read_1_argument*); +extern bool_t xdr_fpga_register_write_1_argument (XDR *, fpga_register_write_1_argument*); +extern bool_t xdr_register_modify_1_argument (XDR *, register_modify_1_argument*); + +#else /* K&R C */ +extern bool_t xdr_Buffer (); +extern bool_t xdr_Status (); +extern bool_t xdr_RetVal (); +extern bool_t xdr_register_read_1_argument (); +extern bool_t xdr_register_read_mem_1_argument (); +extern bool_t xdr_register_write_1_argument (); +extern bool_t xdr_register_write_mem_1_argument (); +extern bool_t xdr_read_uid_1_argument (); +extern bool_t xdr_set_address_1_argument (); +extern bool_t xdr_send_trigger_1_argument (); +extern bool_t xdr_ipu_data_read_1_argument (); +extern bool_t xdr_fpga_register_write_1_argument (); +extern bool_t xdr_register_modify_1_argument (); + +#endif /* K&R C */ + +#ifdef __cplusplus +} +#endif + +#endif /* !_TRBRPC_H_RPCGEN */ diff --git a/trbnetd/server/trbrpc_xdr.c b/trbnetd/server/trbrpc_xdr.c new file mode 100644 index 0000000..715e24a --- /dev/null +++ b/trbnetd/server/trbrpc_xdr.c @@ -0,0 +1,179 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#include "trbrpc.h" + +bool_t +xdr_Buffer (XDR *xdrs, Buffer *objp) +{ + register int32_t *buf; + + if (!xdr_array (xdrs, (char **)&objp->Buffer_val, (u_int *) &objp->Buffer_len, ~0, + sizeof (uint32_t), (xdrproc_t) xdr_uint32_t)) + return FALSE; + return TRUE; +} + +bool_t +xdr_Status (XDR *xdrs, Status *objp) +{ + register int32_t *buf; + + if (!xdr_int (xdrs, &objp->trb_errno)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->status_common)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->status_channel)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->sequence)) + return FALSE; + if (!xdr_uint8_t (xdrs, &objp->channel)) + return FALSE; + return TRUE; +} + +bool_t +xdr_RetVal (XDR *xdrs, RetVal *objp) +{ + register int32_t *buf; + + if (!xdr_Status (xdrs, &objp->status)) + return FALSE; + if (!xdr_Buffer (xdrs, &objp->data)) + return FALSE; + return TRUE; +} + +bool_t +xdr_register_read_1_argument (XDR *xdrs, register_read_1_argument *objp) +{ + if (!xdr_uint16_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg2)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->arg3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_register_read_mem_1_argument (XDR *xdrs, register_read_mem_1_argument *objp) +{ + if (!xdr_uint16_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg2)) + return FALSE; + if (!xdr_uint8_t (xdrs, &objp->arg3)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg4)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->arg5)) + return FALSE; + return TRUE; +} + +bool_t +xdr_register_write_1_argument (XDR *xdrs, register_write_1_argument *objp) +{ + if (!xdr_uint16_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg2)) + return FALSE; + if (!xdr_uint32_t (xdrs, &objp->arg3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_register_write_mem_1_argument (XDR *xdrs, register_write_mem_1_argument *objp) +{ + if (!xdr_uint16_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg2)) + return FALSE; + if (!xdr_uint8_t (xdrs, &objp->arg3)) + return FALSE; + if (!xdr_Buffer (xdrs, &objp->arg4)) + return FALSE; + return TRUE; +} + +bool_t +xdr_read_uid_1_argument (XDR *xdrs, read_uid_1_argument *objp) +{ + if (!xdr_uint16_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->arg2)) + return FALSE; + return TRUE; +} + +bool_t +xdr_set_address_1_argument (XDR *xdrs, set_address_1_argument *objp) +{ + if (!xdr_uint64_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint8_t (xdrs, &objp->arg2)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg3)) + return FALSE; + return TRUE; +} + +bool_t +xdr_send_trigger_1_argument (XDR *xdrs, send_trigger_1_argument *objp) +{ + if (!xdr_uint8_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint32_t (xdrs, &objp->arg2)) + return FALSE; + if (!xdr_uint8_t (xdrs, &objp->arg3)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg4)) + return FALSE; + return TRUE; +} + +bool_t +xdr_ipu_data_read_1_argument (XDR *xdrs, ipu_data_read_1_argument *objp) +{ + if (!xdr_uint8_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint32_t (xdrs, &objp->arg2)) + return FALSE; + if (!xdr_uint8_t (xdrs, &objp->arg3)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg4)) + return FALSE; + if (!xdr_u_int (xdrs, &objp->arg5)) + return FALSE; + return TRUE; +} + +bool_t +xdr_fpga_register_write_1_argument (XDR *xdrs, fpga_register_write_1_argument *objp) +{ + if (!xdr_uint16_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint32_t (xdrs, &objp->arg2)) + return FALSE; + return TRUE; +} + +bool_t +xdr_register_modify_1_argument (XDR *xdrs, register_modify_1_argument *objp) +{ + if (!xdr_uint16_t (xdrs, &objp->arg1)) + return FALSE; + if (!xdr_uint16_t (xdrs, &objp->arg2)) + return FALSE; + if (!xdr_int (xdrs, &objp->arg3)) + return FALSE; + if (!xdr_uint32_t (xdrs, &objp->arg4)) + return FALSE; + if (!xdr_uint32_t (xdrs, &objp->arg5)) + return FALSE; + return TRUE; +} -- 2.43.0