]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
added all functions, updated error handling
authorhadaq <hadaq>
Sat, 24 Jul 2010 22:02:12 +0000 (22:02 +0000)
committerhadaq <hadaq>
Sat, 24 Jul 2010 22:02:12 +0000 (22:02 +0000)
trbnetd/server/server.c
trbnetd/server/trbnetd.c
trbnetd/trbnetrpc.c
trbnetd/trbrpc.h
trbnetd/trbrpc.x
trbnetd/trbrpc_clnt.c
trbnetd/trbrpc_svc.c
trbnetd/trbrpc_xdr.c

index cdec46410ce593834622626d6ea3f27e5a52c5aa..904cf8472a14a41638a4a3718c66f1502db41bce 100644 (file)
@@ -14,7 +14,6 @@
 
 #include <sys/types.h>
 #include <unistd.h>
-
 #include <trbnet.h>
 
 #ifndef SIG_PF
@@ -76,6 +75,15 @@ _send_trigger_1(send_trigger_1_argument * argp, void *result,
           (argp->arg1, argp->arg2, argp->arg3, argp->arg4, result, rqstp));
 }
 
+int
+_send_trigger_rich_1(send_trigger_rich_1_argument * argp, void *result,
+                     struct svc_req *rqstp)
+{
+  return (send_trigger_rich_1_svc
+          (argp->arg1, argp->arg2, argp->arg3, argp->arg4, argp->arg5, result,
+           rqstp));
+}
+
 int
 _ipu_data_read_1(ipu_data_read_1_argument * argp, void *result,
                  struct svc_req *rqstp)
@@ -113,6 +121,15 @@ int _com_reset_1(void *argp, void *result, struct svc_req *rqstp)
   return (com_reset_1_svc(result, rqstp));
 }
 
+int
+_register_modify_1(register_modify_1_argument * argp, void *result,
+                   struct svc_req *rqstp)
+{
+  return (register_modify_1_svc
+          (argp->arg1, argp->arg2, argp->arg3, argp->arg4, argp->arg5, result,
+           rqstp));
+}
+
 static void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp)
 {
   union
@@ -124,10 +141,12 @@ static void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp)
     read_uid_1_argument read_uid_1_arg;
     set_address_1_argument set_address_1_arg;
     send_trigger_1_argument send_trigger_1_arg;
+    send_trigger_rich_1_argument send_trigger_rich_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;
+    register_modify_1_argument register_modify_1_arg;
   } argument;
   union
   {
@@ -138,12 +157,14 @@ static void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp)
     RetVal read_uid_1_res;
     Status set_address_1_res;
     Status send_trigger_1_res;
+    Status send_trigger_rich_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;
+    Status register_modify_1_res;
   } result;
   bool_t retval;
   xdrproc_t _xdr_argument, _xdr_result;
@@ -197,6 +218,12 @@ static void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp)
     local = (bool_t(*)(char *, void *, struct svc_req *))_send_trigger_1;
     break;
 
+  case SEND_TRIGGER_RICH:
+    _xdr_argument = (xdrproc_t) xdr_send_trigger_rich_1_argument;
+    _xdr_result = (xdrproc_t) xdr_Status;
+    local = (bool_t(*)(char *, void *, struct svc_req *))_send_trigger_rich_1;
+    break;
+
   case IPU_DATA_READ:
     _xdr_argument = (xdrproc_t) xdr_ipu_data_read_1_argument;
     _xdr_result = (xdrproc_t) xdr_RetVal;
@@ -235,6 +262,12 @@ static void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp)
     local = (bool_t(*)(char *, void *, struct svc_req *))_com_reset_1;
     break;
 
+  case REGISTER_MODIFY:
+    _xdr_argument = (xdrproc_t) xdr_register_modify_1_argument;
+    _xdr_result = (xdrproc_t) xdr_Status;
+    local = (bool_t(*)(char *, void *, struct svc_req *))_register_modify_1;
+    break;
+
   default:
     svcerr_noproc(transp);
     return;
@@ -251,7 +284,7 @@ static void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp)
   }
   if (!svc_freeargs(transp, (xdrproc_t) _xdr_argument, (caddr_t) & argument)) {
     fprintf(stderr, "%s", "unable to free arguments");
-    exit(1);
+    exit(EXIT_FAILURE);
   }
   if (!trbnetrpcprog_1_freeresult(transp, _xdr_result, (caddr_t) & result))
     fprintf(stderr, "%s", "unable to free results");
@@ -265,7 +298,7 @@ int main(int argc, char **argv)
 {
   int daemonMode = 1;
   register SVCXPRT *transp;
-
+  
   if ((argc >= 2) && (strcmp(argv[1], "-f") == 0))
     daemonMode = 0;
 
@@ -274,25 +307,25 @@ int main(int argc, char **argv)
   transp = svcudp_create(RPC_ANYSOCK);
   if (transp == NULL) {
     fprintf(stderr, "%s", "cannot create udp service.");
-    exit(1);
+    exit(EXIT_FAILURE);
   }
   if (!svc_register
       (transp, TRBNETRPCPROG, TRBNETRPCVERS, trbnetrpcprog_1, IPPROTO_UDP)) {
     fprintf(stderr, "%s",
             "unable to register (TRBNETRPCPROG, TRBNETRPCVERS, udp).");
-    exit(1);
+    exit(EXIT_FAILURE);
   }
 
   transp = svctcp_create(RPC_ANYSOCK, 0, 0);
   if (transp == NULL) {
     fprintf(stderr, "%s", "cannot create tcp service.");
-    exit(1);
+    exit(EXIT_FAILURE);
   }
   if (!svc_register
       (transp, TRBNETRPCPROG, TRBNETRPCVERS, trbnetrpcprog_1, IPPROTO_TCP)) {
     fprintf(stderr, "%s",
             "unable to register (TRBNETRPCPROG, TRBNETRPCVERS, tcp).");
-    exit(1);
+    exit(EXIT_FAILURE);
   }
 
   /* initialize FPGA */
@@ -324,7 +357,7 @@ int main(int argc, char **argv)
     freopen("/dev/console", "a", stderr);
   }
   svc_run();
-
+  
   /* NOTREACHED */
   fprintf(stderr, "%s", "svc_run returned");
   exit(EXIT_FAILURE);
index 11a64a63aefc06d2de722a7b7c6eb8ad6d35e347..8f0972a7a28a4b0b57dc1f4d0c43d2d422e58786 100644 (file)
@@ -39,18 +39,18 @@ bool_t register_read_1_svc(uint16_t trb_address,
                            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;
+  retVal->status.retVal = status;
+  copyStatus(&retVal->status);
 
   return TRUE;
 }
@@ -72,9 +72,10 @@ bool_t register_read_mem_1_svc(uint16_t trb_address,
 
   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;
+  retVal->status.retVal = status;
+  copyStatus(&retVal->status);
 
   return TRUE;
 }
@@ -85,10 +86,7 @@ bool_t register_write_1_svc(uint16_t trb_address,
                             Status* retVal, 
                             struct svc_req* rqstp)
 {
-  int status;
-  
-  status = trb_register_write(trb_address, reg_address, value);
-
+  retVal->retVal = trb_register_write(trb_address, reg_address, value);
   copyStatus(retVal);
   
   return TRUE;
@@ -101,14 +99,9 @@ bool_t register_write_mem_1_svc(uint16_t trb_address,
                                 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);
-  
+  retVal->retVal =
+    trb_register_write_mem(trb_address, reg_address, option, 
+                           (uint32_t*)data.Buffer_val, data.Buffer_len);
   copyStatus(retVal);
   
   return TRUE;
@@ -130,10 +123,10 @@ bool_t read_uid_1_svc(uint16_t trb_address,
   status = trb_read_uid(trb_address, 
                         (uint32_t*)retVal->data.Buffer_val,
                         dsize);
-  
-  copyStatus(&retVal->status);
+  retVal->status.retVal = status;
   retVal->data.Buffer_len = status == -1 ? 0 : status;
-  
+  copyStatus(&retVal->status);
+
   return TRUE;
 }
 
@@ -143,10 +136,7 @@ bool_t set_address_1_svc(uint64_t uid,
                          Status* retVal, 
                          struct svc_req* rqstp)
 {
-  int status;
-  
-  status = trb_set_address(uid, endpoint, trb_address);
-  
+  retVal->retVal = trb_set_address(uid, endpoint, trb_address);
   copyStatus(retVal);
   
   return TRUE; 
@@ -155,10 +145,7 @@ bool_t set_address_1_svc(uint64_t uid,
 bool_t network_reset_1_svc(Status* retVal, 
                            struct svc_req* rqstp)
 {
-  int status;
-  
-  status = network_reset();
-  
+  retVal->retVal = network_reset();
   copyStatus(retVal);
   
   return TRUE; 
@@ -171,10 +158,22 @@ bool_t send_trigger_1_svc(uint8_t type,
                           Status* retVal, 
                           struct svc_req* rqstp)
 {
-  int status;
-  
-  status = trb_send_trigger(type, trg_info, trg_random, trg_number);
+  retVal->retVal = trb_send_trigger(type, trg_info, trg_random, trg_number);
+  copyStatus(retVal);
   
+  return TRUE; 
+}
+
+bool_t send_trigger_rich_1_svc(uint8_t input,
+                               uint8_t type,
+                               uint32_t trg_info,
+                               uint8_t trg_random,
+                               uint16_t trg_number,
+                               Status* retVal, 
+                               struct svc_req* rqstp)
+{
+  retVal->retVal =
+    trb_send_trigger_rich(input, type, trg_info, trg_random, trg_number);
   copyStatus(retVal);
   
   return TRUE; 
@@ -198,9 +197,10 @@ bool_t ipu_data_read_1_svc(uint8_t type,
   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;
-
+  retVal->status.retVal = status;
+  copyStatus(&retVal->status);
+  
   return TRUE;
 }
 
@@ -217,9 +217,10 @@ bool_t fpga_register_read_1_svc(uint16_t reg_address,
   
   status = fpga_register_read(reg_address,
                               (uint32_t *)retVal->data.Buffer_val);
-  
-  copyStatus(&retVal->status);
+    
   retVal->data.Buffer_len = status == -1 ? 0 : 1;
+  retVal->status.retVal = status;
+  copyStatus(&retVal->status);
   
   return TRUE;
 }
@@ -229,40 +230,45 @@ bool_t fpga_register_write_1_svc(uint16_t reg_address,
                                  Status* retVal, 
                                  struct svc_req* rqstp)
 {
- int status;
- status = fpga_register_write(reg_address, value);
+  retVal->retVal = fpga_register_write(reg_address, value);
+  copyStatus(retVal);
   
- copyStatus(retVal);
- return TRUE;  
+  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);
-  
+  retVal->retVal = trb_fifo_flush(channel);
   copyStatus(retVal);
   
   return TRUE; 
 }
 
-
 bool_t com_reset_1_svc(Status* retVal,
                        struct svc_req* rqstp)
 {
-  int status; 
+  retVal->retVal = com_reset();
+  copyStatus(retVal);
   
-  status =  com_reset();
+  return TRUE; 
+}
+
+bool_t register_modify_1_svc(uint16_t trb_address, 
+                             uint16_t reg_address, 
+                             int mode, 
+                             uint32_t bitMask, 
+                             uint32_t bitValue, 
+                             Status* retVal, 
+                             struct svc_req* rqstp)
+{
+  retVal->retVal = 
+    trb_register_modify(trb_address, reg_address, mode, bitMask, bitValue);
   
   copyStatus(retVal);
   
   return TRUE; 
 }
+
+
index 75dd2bb207683e166a94654fd70bd5dd9cac3f94..f3b3d8529be805713ecb5ee4ecc3072f0a8830e1 100644 (file)
@@ -1,12 +1,11 @@
 #include <stdio.h>
 #include <rpc/rpc.h>            /* always needed  */
 #include "trbrpc.h"             /* will be generated by rpcgen */
-
 #include <trberror.h>
 
 #include "trbnet.h"
 
-const char trbnet_version[] = "$Revision: 1.1 $";
+const char trbnet_version[] = "$Revision: 1.2 $";
 unsigned int trb_debug = 0;
 unsigned int trb_dma = 0;
 
@@ -31,7 +30,7 @@ int trb_connect(const char *server)
 {
   if (server == NULL) {
     char *tmp;
-    tmp = getenv("TRBNETSERVER");
+    tmp = getenv("DAQOPSERVER");
     if (tmp != NULL) {
       strncpy(trb_server, tmp, 128);
     } else {
@@ -61,8 +60,7 @@ int trb_register_read(uint16_t trb_address,
   enum clnt_stat status;
   RetVal retVal;
   
-  if (trb_client == NULL)
-    return -1;
+  if (trb_client == NULL) return -1;
   
   retVal.data.Buffer_val = data;
   retVal.data.Buffer_len = dsize;
@@ -78,10 +76,10 @@ int trb_register_read(uint16_t trb_address,
      * Print error message and stop.
      */
     clnt_perror(trb_client, trb_server);
-    return -2;
+    return -1;
   }
   
-  return trb_errno == TRB_NONE ? retVal.data.Buffer_len : -1;
+  return retVal.status.retVal;
 }
 
 int trb_register_read_mem(uint16_t trb_address,
@@ -94,8 +92,7 @@ int trb_register_read_mem(uint16_t trb_address,
   enum clnt_stat status;
   RetVal retVal;
   
-  if (trb_client == NULL)
-    return -1;
+  if (trb_client == NULL) return -1;
   
   retVal.data.Buffer_val = data;
   retVal.data.Buffer_len = dsize;
@@ -111,10 +108,10 @@ int trb_register_read_mem(uint16_t trb_address,
      * Print error message and stop.
      */
     clnt_perror(trb_client, trb_server);
-    return -2;
+    return -1;
   }
   
-  return trb_errno == TRB_NONE ? retVal.data.Buffer_len : -1;
+  return retVal.status.retVal;
 }
 
 
@@ -139,10 +136,10 @@ int trb_read_uid(uint16_t trb_address,
      * Print error message and stop.
      */
     clnt_perror(trb_client, trb_server);
-    return -2;
+    return -1;
   }
   
-  return trb_errno == TRB_NONE ? retVal.data.Buffer_len : -1;
+  return retVal.status.retVal;
 }
 
 
@@ -168,7 +165,7 @@ int trb_register_write(uint16_t trb_address,
     return -1;
   }
   
-  return trb_errno == TRB_NONE ? 0 : -1;
+  return retVal.retVal;
 }
 
 int trb_register_write_mem(uint16_t trb_address,
@@ -199,7 +196,7 @@ int trb_register_write_mem(uint16_t trb_address,
     return -1;
   }
   
-  return trb_errno == TRB_NONE ? 0 : -1;
+  return retVal.retVal;
 }
 
 int trb_set_address(uint64_t uid,
@@ -224,7 +221,7 @@ int trb_set_address(uint64_t uid,
     return -1;
   }
   
-  return trb_errno == TRB_NONE ? 0 : -1;
+  return retVal.retVal;
 }
 
 
@@ -235,7 +232,29 @@ int trb_ipu_data_read(uint8_t type,
                       uint32_t* data,
                       unsigned int dsize)
 {
-  return -1;
+  enum clnt_stat status;
+  RetVal retVal;
+  
+  if (trb_client == NULL) return -1;
+  
+  retVal.data.Buffer_val = data;
+  retVal.data.Buffer_len = dsize;
+  
+  status =
+    ipu_data_read_1(type, trg_info, trg_random, trg_number, dsize,
+                    &retVal, trb_client);
+  copyStatus(&retVal.status);
+  
+  if (status != RPC_SUCCESS) {
+    /*
+     * An error occurred while calling the server.
+     * Print error message and stop.
+     */
+    clnt_perror(trb_client, trb_server);
+    return -1;
+  }
+  
+  return retVal.status.retVal;
 }
 
 int trb_send_trigger(uint8_t type,
@@ -243,7 +262,24 @@ int trb_send_trigger(uint8_t type,
                      uint8_t random,
                      uint16_t number)
 {
-  return -1;
+  enum clnt_stat status;
+  Status retVal;
+  
+  if (trb_client == NULL) return -1;
+  
+  status = send_trigger_1(type, info, random, number, &retVal, trb_client);
+  copyStatus(&retVal);
+  
+  if (status != RPC_SUCCESS) {
+    /*
+     * An error occurred while calling the server.
+     * Print error message and stop.
+     */
+    clnt_perror(trb_client, trb_server);
+    return -1;
+  }
+  
+  return retVal.retVal; 
 }
 
 int trb_send_trigger_rich(uint8_t input,
@@ -252,7 +288,25 @@ int trb_send_trigger_rich(uint8_t input,
                           uint8_t random,
                           uint16_t number)
 {
-  return -1;
+  enum clnt_stat status;
+  Status retVal;
+  
+  if (trb_client == NULL) return -1;
+  
+  status = send_trigger_rich_1(input, type, info, random, number,
+                               &retVal, trb_client);
+  copyStatus(&retVal);
+  
+  if (status != RPC_SUCCESS) {
+    /*
+     * An error occurred while calling the server.
+     * Print error message and stop.
+     */
+    clnt_perror(trb_client, trb_server);
+    return -1;
+  }
+  
+  return retVal.retVal; 
 }
 
 int fpga_register_read(uint16_t reg_address, uint32_t* value)
@@ -263,12 +317,46 @@ int fpga_register_read(uint16_t reg_address, uint32_t* value)
 
 int fpga_register_write(uint16_t reg_address, uint32_t value)
 {
-  return -1;
+  enum clnt_stat status;
+  Status retVal;
+  
+  if (trb_client == NULL) return -1;
+  
+  status = fpga_register_write_1(reg_address, value, &retVal, trb_client);
+  copyStatus(&retVal);
+  
+  if (status != RPC_SUCCESS) {
+    /*
+     * An error occurred while calling the server.
+     * Print error message and stop.
+     */
+    clnt_perror(trb_client, trb_server);
+    return -1;
+  }
+  
+  return retVal.retVal; 
 }
 
 int trb_fifo_flush(uint8_t channel)
 {
-  return -1;
+  enum clnt_stat status;
+  Status retVal;
+  
+  if (trb_client == NULL) return -1;
+  
+  status = trb_fifo_flush_1(channel, &retVal, trb_client);
+  copyStatus(&retVal);
+  
+  if (status != RPC_SUCCESS) {
+    /*
+     * An error occurred while calling the server.
+     * Print error message and stop.
+     */
+    clnt_perror(trb_client, trb_server);
+    return -1;
+  }
+  
+  return retVal.retVal;
 }
 
 int network_reset()
@@ -279,7 +367,6 @@ int network_reset()
   if (trb_client == NULL) return -1;
 
   status = network_reset_1(&retVal, trb_client);
-
   copyStatus(&retVal);
   
   if (status != RPC_SUCCESS) {
@@ -291,7 +378,7 @@ int network_reset()
     return -1;
   }
   
-  return trb_errno == TRB_NONE ? 0 : -1;
+  return retVal.retVal;
 }
 
 int com_reset()
@@ -305,5 +392,24 @@ int trb_register_modify(uint16_t trb_address,
                         uint32_t bitMask,
                         uint32_t bitValue)
 {
-  return -1;
+  enum clnt_stat status;
+  Status retVal;
+  
+  if (trb_client == NULL) return -1;
+  
+  status =
+    register_modify_1(trb_address, reg_address, mode, bitMask, bitValue, 
+                      &retVal, trb_client);
+  copyStatus(&retVal);
+  
+  if (status != RPC_SUCCESS) {
+    /*
+     * An error occurred while calling the server.
+     * Print error message and stop.
+     */
+    clnt_perror(trb_client, trb_server);
+    return -1;
+  }
+  
+  return retVal.retVal;
 }
index 2525d85b7d81d38e32056c62f2654953541af5dd..361cad636ab4dbec8ea1936ccf71314ac936caae 100644 (file)
@@ -21,6 +21,7 @@ typedef struct {
 } Buffer;
 
 struct Status {
+       int retVal;
        int trb_errno;
        uint16_t status_common;
        uint16_t status_channel;
@@ -87,6 +88,15 @@ struct send_trigger_1_argument {
 };
 typedef struct send_trigger_1_argument send_trigger_1_argument;
 
+struct send_trigger_rich_1_argument {
+       uint8_t arg1;
+       uint8_t arg2;
+       uint32_t arg3;
+       uint8_t arg4;
+       uint16_t arg5;
+};
+typedef struct send_trigger_rich_1_argument send_trigger_rich_1_argument;
+
 struct ipu_data_read_1_argument {
        uint8_t arg1;
        uint32_t arg2;
@@ -136,25 +146,28 @@ extern  bool_t set_address_1_svc(uint64_t , uint8_t , uint16_t , Status *, struc
 #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
+#define SEND_TRIGGER_RICH 8
+extern  enum clnt_stat send_trigger_rich_1(uint8_t , uint8_t , uint32_t , uint8_t , uint16_t , Status *, CLIENT *);
+extern  bool_t send_trigger_rich_1_svc(uint8_t , uint8_t , uint32_t , uint8_t , uint16_t , Status *, struct svc_req *);
+#define IPU_DATA_READ 9
 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
+#define FPGA_REGISTER_READ 10
 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
+#define FPGA_REGISTER_WRITE 11
 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
+#define TRB_FIFO_FLUSH 12
 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
+#define NETWORK_RESET 13
 extern  enum clnt_stat network_reset_1(Status *, CLIENT *);
 extern  bool_t network_reset_1_svc(Status *, struct svc_req *);
-#define COM_RESET 13
+#define COM_RESET 14
 extern  enum clnt_stat com_reset_1(Status *, CLIENT *);
 extern  bool_t com_reset_1_svc(Status *, struct svc_req *);
-#define REGISTER_MODIFY 14
+#define REGISTER_MODIFY 15
 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);
@@ -181,25 +194,28 @@ 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
+#define SEND_TRIGGER_RICH 8
+extern  enum clnt_stat send_trigger_rich_1();
+extern  bool_t send_trigger_rich_1_svc();
+#define IPU_DATA_READ 9
 extern  enum clnt_stat ipu_data_read_1();
 extern  bool_t ipu_data_read_1_svc();
-#define FPGA_REGISTER_READ 9
+#define FPGA_REGISTER_READ 10
 extern  enum clnt_stat fpga_register_read_1();
 extern  bool_t fpga_register_read_1_svc();
-#define FPGA_REGISTER_WRITE 10
+#define FPGA_REGISTER_WRITE 11
 extern  enum clnt_stat fpga_register_write_1();
 extern  bool_t fpga_register_write_1_svc();
-#define TRB_FIFO_FLUSH 11
+#define TRB_FIFO_FLUSH 12
 extern  enum clnt_stat trb_fifo_flush_1();
 extern  bool_t trb_fifo_flush_1_svc();
-#define NETWORK_RESET 12
+#define NETWORK_RESET 13
 extern  enum clnt_stat network_reset_1();
 extern  bool_t network_reset_1_svc();
-#define COM_RESET 13
+#define COM_RESET 14
 extern  enum clnt_stat com_reset_1();
 extern  bool_t com_reset_1_svc();
-#define REGISTER_MODIFY 14
+#define REGISTER_MODIFY 15
 extern  enum clnt_stat register_modify_1();
 extern  bool_t register_modify_1_svc();
 extern int trbnetrpcprog_1_freeresult ();
@@ -218,6 +234,7 @@ extern  bool_t xdr_register_write_mem_1_argument (XDR *, register_write_mem_1_ar
 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_send_trigger_rich_1_argument (XDR *, send_trigger_rich_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*);
@@ -233,6 +250,7 @@ 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_send_trigger_rich_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 ();
index 1edbf9b7505e9783ebff9d25b810ea50152fa850..4060c4fcf957bd86915fc588f0ae9d6d2a5c3ae1 100644 (file)
@@ -3,6 +3,7 @@
 typedef uint32_t Buffer<>; 
 
 struct Status {
+  int retVal;
   int trb_errno;
   uint16_t status_common;
   uint16_t status_channel;
@@ -48,29 +49,35 @@ program TRBNETRPCPROG {
                         uint32_t,
                         uint8_t,
                         uint16_t) = 7;
+
+    Status SEND_TRIGGER_RICH(uint8_t,
+                             uint8_t,
+                             uint32_t,
+                             uint8_t,
+                             uint16_t) = 8;
     
     RetVal IPU_DATA_READ(uint8_t,
                          uint32_t,
                          uint8_t,
                          uint16_t,
-                         unsigned int) = 8;
+                         unsigned int) = 9;
     
-    RetVal FPGA_REGISTER_READ(uint16_t) = 9;
+    RetVal FPGA_REGISTER_READ(uint16_t) = 10;
     
     Status FPGA_REGISTER_WRITE(uint16_t,
-                               uint32_t) = 10;
+                               uint32_t) = 11;
     
-    Status TRB_FIFO_FLUSH(uint8_t) = 11;
+    Status TRB_FIFO_FLUSH(uint8_t) = 12;
 
-    Status NETWORK_RESET(void) = 12;
+    Status NETWORK_RESET(void) = 13;
 
-    Status COM_RESET(void) = 13;
+    Status COM_RESET(void) = 14;
 
     Status REGISTER_MODIFY(uint16_t, 
                            uint16_t, 
                            int,
                            uint32_t,
-                           uint32_t) = 14;
+                           uint32_t) = 15;
   } = 1;
 } = 0x20000099;
   
index 2834fa5f74c2cad9d14becca0dccf5238c699694..fc6530716bdc6f93e8b7e280c4a3de5d7a90f375 100644 (file)
@@ -96,6 +96,20 @@ send_trigger_1(uint8_t arg1, uint32_t arg2, uint8_t arg3, uint16_t arg4, Status
                TIMEOUT));
 }
 
+enum clnt_stat 
+send_trigger_rich_1(uint8_t arg1, uint8_t arg2, uint32_t arg3, uint8_t arg4, uint16_t arg5, Status *clnt_res,  CLIENT *clnt)
+{
+       send_trigger_rich_1_argument arg;
+       arg.arg1 = arg1;
+       arg.arg2 = arg2;
+       arg.arg3 = arg3;
+       arg.arg4 = arg4;
+       arg.arg5 = arg5;
+       return (clnt_call (clnt, SEND_TRIGGER_RICH, (xdrproc_t) xdr_send_trigger_rich_1_argument, (caddr_t) &arg,
+               (xdrproc_t) xdr_Status, (caddr_t) clnt_res,
+               TIMEOUT));
+}
+
 enum clnt_stat 
 ipu_data_read_1(uint8_t arg1, uint32_t arg2, uint8_t arg3, uint16_t arg4, u_int arg5, RetVal *clnt_res,  CLIENT *clnt)
 {
index 9aa55d9c62c5e39a5726f107a6c9f03ff08b1963..e85add66cfb3fa46fbb971b23f1130325fb88144 100644 (file)
@@ -58,6 +58,12 @@ _send_trigger_1 (send_trigger_1_argument *argp, void *result, struct svc_req *rq
        return (send_trigger_1_svc(argp->arg1, argp->arg2, argp->arg3, argp->arg4, result, rqstp));
 }
 
+int
+_send_trigger_rich_1 (send_trigger_rich_1_argument *argp, void *result, struct svc_req *rqstp)
+{
+       return (send_trigger_rich_1_svc(argp->arg1, argp->arg2, argp->arg3, argp->arg4, argp->arg5, result, rqstp));
+}
+
 int
 _ipu_data_read_1 (ipu_data_read_1_argument *argp, void *result, struct svc_req *rqstp)
 {
@@ -111,6 +117,7 @@ trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT *transp)
                read_uid_1_argument read_uid_1_arg;
                set_address_1_argument set_address_1_arg;
                send_trigger_1_argument send_trigger_1_arg;
+               send_trigger_rich_1_argument send_trigger_rich_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;
@@ -125,6 +132,7 @@ trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT *transp)
                RetVal read_uid_1_res;
                Status set_address_1_res;
                Status send_trigger_1_res;
+               Status send_trigger_rich_1_res;
                RetVal ipu_data_read_1_res;
                RetVal fpga_register_read_1_res;
                Status fpga_register_write_1_res;
@@ -184,6 +192,12 @@ trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT *transp)
                local = (bool_t (*) (char *, void *,  struct svc_req *))_send_trigger_1;
                break;
 
+       case SEND_TRIGGER_RICH:
+               _xdr_argument = (xdrproc_t) xdr_send_trigger_rich_1_argument;
+               _xdr_result = (xdrproc_t) xdr_Status;
+               local = (bool_t (*) (char *, void *,  struct svc_req *))_send_trigger_rich_1;
+               break;
+
        case IPU_DATA_READ:
                _xdr_argument = (xdrproc_t) xdr_ipu_data_read_1_argument;
                _xdr_result = (xdrproc_t) xdr_RetVal;
index 715e24ad48b023867fc7f08f1c96415b9d3dfb76..4b309619094e4389060cc011238bfd994b2d1ea5 100644 (file)
@@ -21,6 +21,8 @@ xdr_Status (XDR *xdrs, Status *objp)
 {
        register int32_t *buf;
 
+        if (!xdr_int (xdrs, &objp->retVal))
+                return FALSE;
         if (!xdr_int (xdrs, &objp->trb_errno))
                 return FALSE;
         if (!xdr_uint16_t (xdrs, &objp->status_common))
@@ -136,6 +138,22 @@ xdr_send_trigger_1_argument (XDR *xdrs, send_trigger_1_argument *objp)
        return TRUE;
 }
 
+bool_t
+xdr_send_trigger_rich_1_argument (XDR *xdrs, send_trigger_rich_1_argument *objp)
+{
+        if (!xdr_uint8_t (xdrs, &objp->arg1))
+                return FALSE;
+        if (!xdr_uint8_t (xdrs, &objp->arg2))
+                return FALSE;
+        if (!xdr_uint32_t (xdrs, &objp->arg3))
+                return FALSE;
+        if (!xdr_uint8_t (xdrs, &objp->arg4))
+                return FALSE;
+        if (!xdr_uint16_t (xdrs, &objp->arg5))
+                return FALSE;
+       return TRUE;
+}
+
 bool_t
 xdr_ipu_data_read_1_argument (XDR *xdrs, ipu_data_read_1_argument *objp)
 {