]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
revised USER_BUFFER_SIZE
authorhadaq <hadaq>
Mon, 25 Oct 2010 19:12:35 +0000 (19:12 +0000)
committerhadaq <hadaq>
Mon, 25 Oct 2010 19:12:35 +0000 (19:12 +0000)
libtrbnet/trbcmd.c

index dd3467ae0aecbf3971360a1e12738b3dcd1637e3..9d1fd1f56a197a709480628e90ae3dc915640bd6 100644 (file)
@@ -25,7 +25,7 @@
 
 static int hexMode = HEXMODE;
 
-static const char trbcmd_version[] = "$Revision: 2.59 $";
+static const char trbcmd_version[] = "$Revision: 2.60 $";
 
 #define BACKLOG 10
 static uint16_t tcp_port = 55555;
@@ -33,8 +33,8 @@ static int tcp_debug = 0;        /* turn to 0 to suppress TCP/IP output */
 
 /* ---- User Buffer Size ------------------------------------------------ */
 
-static const size_t NUM_ENDPOINTS = 1024;     /* Maximum of 16KByte */
-static size_t USER_BUFFER_SIZE = 0;
+static const size_t NUM_ENDPOINTS = 1024;      /* Maximum of 16KByte */
+static size_t USER_BUFFER_MAX_SIZE = 1310720;  /* *4Bytes = 5MByte   */
 
 /* ---- Error Handling -------------------------------------------------- */
 
@@ -174,12 +174,12 @@ void usage(const char *progName)
 }
 
 #define CMD_SIZE 256
-#define CMD_MAX_NUM 10
+#define CMD_MAX_ARGS 10
 
 int start(int argc, char **argv)
 {
   char scriptFileName[256] = "";
-  char cmd[CMD_MAX_NUM][CMD_SIZE];
+  char cmd[CMD_MAX_ARGS][CMD_SIZE];
   char *cmdLine = NULL;
   size_t cmdLineLen = 0;
   unsigned int cmdLen = 0;
@@ -191,13 +191,10 @@ int start(int argc, char **argv)
   int opt;
   int i;
 
-  for (i = 0; i < CMD_MAX_NUM; i++) {
+  for (i = 0; i < CMD_MAX_ARGS; i++) {
     cmd[i][0] = 0;
   }
 
-  /* LowMem Settings, i.e. 3 MBye maximum */
-  USER_BUFFER_SIZE = 786432;    /* 0xc000  * 4 Byte */
-
   trb_debug = 0;
 
   /* Parse Arguments */
@@ -231,8 +228,8 @@ int start(int argc, char **argv)
       return 0;
       break;
     case 'M':
-      /* HighMem Setting, i.e. 20 MByte maximum 0x500000 * 4 */
-      USER_BUFFER_SIZE = 5242880;
+      /* HighMem Setting */
+      USER_BUFFER_MAX_SIZE = 5242880; /* *4Bytes = 20MByte */
       break;
     default:
       break;
@@ -264,7 +261,7 @@ int start(int argc, char **argv)
         /* Get command from function-call */
         unsigned int i;
         cmdLen = argc - optind;
-        for (i = 0; (i < cmdLen) && (i < CMD_MAX_NUM); i++) {
+        for (i = 0; (i < cmdLen) && (i < CMD_MAX_ARGS); i++) {
           strncpy(cmd[i], argv[optind + i], CMD_SIZE);
         }
         scriptStatus = -1;
@@ -275,7 +272,7 @@ int start(int argc, char **argv)
         /* Get next command from file */
         lineCtr++;
         /* Initialize */
-        for (i = 0; i < CMD_MAX_NUM; i++) {
+        for (i = 0; i < CMD_MAX_ARGS; i++) {
           cmd[i][0] = '\0';
         }
 
@@ -305,7 +302,7 @@ int start(int argc, char **argv)
                cmd[0], cmd[1], cmd[2], cmd[3], cmd[4],
                cmd[5], cmd[6], cmd[7], cmd[8], cmd[9]);
 
-        for (i = 0, cmdLen = 0; i < CMD_MAX_NUM; i++, cmdLen++) {
+        for (i = 0, cmdLen = 0; i < CMD_MAX_ARGS; i++, cmdLen++) {
             if (cmd[i][0] == '\0')
               break;
         }
@@ -319,41 +316,7 @@ int start(int argc, char **argv)
         }
       }
 
-      if (strncmp(cmd[0], "w", CMD_SIZE) == 0) {
-
-        /*******************************************/
-        /* Register Write                          */
-        /*******************************************/
-
-        uint32_t value = 0;
-
-        if (cmdLen != 4) {
-          logError(ERROR, "Invalid command, try -h option\n");
-          return -1;
-        }
-
-        trb_address = strtoul(cmd[1], NULL, hexMode == 1 ? 16 : 0);
-        reg_address = strtoul(cmd[2], NULL, hexMode == 1 ? 16 : 0);
-        value = strtoul(cmd[3], NULL, hexMode == 1 ? 16 : 0);
-
-        /* DEBUG Info */
-        if (trb_debug > 0) {
-          fprintf(stderr,
-                  "Command: WRITE: trb_address: 0x%04x, reg_address: 0x%04x, "
-                  "value: 0x%08x\n", trb_address, reg_address, value);
-        }
-
-        if (trb_register_write(trb_address, reg_address, value) == -1) {
-          logError(ERROR, "write_register failed %s\n", trb_termstr(trb_term));
-          return -1;
-        } else {
-          if (trb_errno == TRB_STATUS_WARNING) {
-            logError(WARNING, "Status-Bit(s) have been set:\n%s\n",
-                     trb_termstr(trb_term));
-          }
-        }
-
-      } else if (strncmp(cmd[0], "r", CMD_SIZE) == 0) {
+      if (strncmp(cmd[0], "r", CMD_SIZE) == 0) {
 
         /*******************************************/
         /* Register Read                           */
@@ -424,12 +387,12 @@ int start(int argc, char **argv)
                   "reg_address: 0x%04x\n", trb_address, reg_address);
         }
 
-        data = (uint32_t *) malloc(sizeof(uint32_t) * NUM_ENDPOINTS * 2);
+        data = (uint32_t *) malloc(sizeof(uint32_t) * NUM_ENDPOINTS * 3);
         if (data == NULL)
           abort();
 
         status = trb_registertime_read(trb_address, reg_address,
-                                       data, NUM_ENDPOINTS * 2);
+                                       data, NUM_ENDPOINTS * 3);
         if (status == -1) {
           logError(ERROR, "read_register failed: %s\n", trb_strerror());
         } else {
@@ -446,6 +409,40 @@ int start(int argc, char **argv)
         }
         free(data);
       
+      } else if (strncmp(cmd[0], "w", CMD_SIZE) == 0) {
+        
+        /*******************************************/
+        /* Register Write                          */
+        /*******************************************/
+
+        uint32_t value = 0;
+
+        if (cmdLen != 4) {
+          logError(ERROR, "Invalid command, try -h option\n");
+          return -1;
+        }
+
+        trb_address = strtoul(cmd[1], NULL, hexMode == 1 ? 16 : 0);
+        reg_address = strtoul(cmd[2], NULL, hexMode == 1 ? 16 : 0);
+        value = strtoul(cmd[3], NULL, hexMode == 1 ? 16 : 0);
+
+        /* DEBUG Info */
+        if (trb_debug > 0) {
+          fprintf(stderr,
+                  "Command: WRITE: trb_address: 0x%04x, reg_address: 0x%04x, "
+                  "value: 0x%08x\n", trb_address, reg_address, value);
+        }
+
+        if (trb_register_write(trb_address, reg_address, value) == -1) {
+          logError(ERROR, "write_register failed %s\n", trb_termstr(trb_term));
+          return -1;
+        } else {
+          if (trb_errno == TRB_STATUS_WARNING) {
+            logError(WARNING, "Status-Bit(s) have been set:\n%s\n",
+                     trb_termstr(trb_term));
+          }
+        }
+
       } else if (strncmp(cmd[0], "rm", CMD_SIZE) == 0) {
 
         /*******************************************/
@@ -456,6 +453,7 @@ int start(int argc, char **argv)
         uint16_t size = 0;
         uint8_t option = 0;
         int status;
+        size_t USER_BUFFER_SIZE = 0;
         const uint32_t *p;
         const uint32_t *end = NULL;
         unsigned int len;
@@ -470,7 +468,7 @@ int start(int argc, char **argv)
         reg_address = strtoul(cmd[2], NULL, hexMode == 1 ? 16 : 0);
         size = strtoul(cmd[3], NULL, hexMode == 1 ? 16 : 0);
         option = strtoul(cmd[4], NULL, hexMode == 1 ? 16 : 0);
-
+        
         /* DEBUG Info */
         if (trb_debug > 0) {
           fprintf(stderr,
@@ -480,7 +478,12 @@ int start(int argc, char **argv)
                   "size: 0x%04x, "
                   "option: %d\n", trb_address, reg_address, size, option);
         }
-
+        
+        USER_BUFFER_SIZE = 
+          (NUM_ENDPOINTS * size + NUM_ENDPOINTS) < USER_BUFFER_MAX_SIZE 
+          ? NUM_ENDPOINTS * size + NUM_ENDPOINTS 
+          : USER_BUFFER_MAX_SIZE;
         data = (uint32_t *) malloc(sizeof(uint32_t) * USER_BUFFER_SIZE);
         if (data == NULL)
           abort();
@@ -522,6 +525,7 @@ int start(int argc, char **argv)
         uint16_t size = 0;
         uint8_t option = 0;
         int status;
+        size_t USER_BUFFER_SIZE = 0;
         const uint32_t *p;
         const uint32_t *end = NULL;
         unsigned int len;
@@ -546,7 +550,12 @@ int start(int argc, char **argv)
                   "size: 0x%04x, "
                   "option: %d\n", trb_address, reg_address, size, option);
         }
-
+        
+        USER_BUFFER_SIZE = 
+          (NUM_ENDPOINTS * size * 2 + NUM_ENDPOINTS) < USER_BUFFER_MAX_SIZE 
+          ? NUM_ENDPOINTS * size * 2 + NUM_ENDPOINTS 
+          : USER_BUFFER_MAX_SIZE;
+        
         data = (uint32_t *) malloc(sizeof(uint32_t) * USER_BUFFER_SIZE);
         if (data == NULL)
           abort();
@@ -970,13 +979,13 @@ int start(int argc, char **argv)
                   "info: 0x%02x, "
                   "number: 0x%04x\n", type, random, info, number);
         }
-
-        buffer = (uint32_t *) malloc(sizeof(uint32_t) * USER_BUFFER_SIZE);
+        
+        buffer = (uint32_t *) malloc(sizeof(uint32_t) * USER_BUFFER_MAX_SIZE);
         if (buffer == NULL)
           abort();
 
         status = trb_ipu_data_read(type, info, random, number,
-                                   buffer, USER_BUFFER_SIZE);
+                                   buffer, USER_BUFFER_MAX_SIZE);
         if (status == -1) {
           logError(ERROR, "read_ipu_data failed: %s\n",
                    trb_strerror());
@@ -1115,7 +1124,7 @@ int start(int argc, char **argv)
       } else if (strncmp(cmd[0], "clearbit", CMD_SIZE) == 0) {
         
         /*******************************************/
-        /* Register Clear Bits                       */
+        /* Register Clear Bits                      */
         /*******************************************/
         
         int status = 0;
@@ -1151,7 +1160,7 @@ int start(int argc, char **argv)
       } else if (strncmp(cmd[0], "loadbit", CMD_SIZE) == 0) {
         
         /*******************************************/
-        /* Register Load Bits                       */
+        /* Register Load Bits                      */
         /*******************************************/
         
         int status = 0;