Subversion Repositories f9daq

Rev

Rev 12 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 12 Rev 15
Line 5... Line 5...
5
#include <stdint.h>
5
#include <stdint.h>
6
#include <ctype.h>
6
#include <ctype.h>
7
#include <unistd.h>
7
#include <unistd.h>
8
#include <string.h>
8
#include <string.h>
9
#include "PtsModule.h"
9
#include "PtsModule.h"
-
 
10
#include <getopt.h>
10
 
11
 
11
void Delay(double t){
12
void Delay(double t){
12
usleep(t*1e6);
13
usleep(t*1e6);
13
}
14
}
14
 
15
 
Line 186... Line 187...
186
}
187
}
187
 
188
 
188
 
189
 
189
void help(char *argv){
190
void help(char *argv){
190
 printf("Usage: %s -a <ptsaddr> -v <verbose> -c  .... Pts_check_configure\n", argv);
191
 printf("Usage: %s -a <ptsaddr> -v <verbose> -c  .... Pts_check_configure\n", argv);
191
 printf("Usage: %s -a <ptsaddr> -v <verbose> -i <filename> -b mode ... Pts_configure_bit\n", argv);
192
 printf("Usage: %s -a <ptsaddr> -v <verbose> -i <filename> -b mode (2) ... Pts_configure_bit\n", argv);
192
 printf("Usage: %s -a <ptsaddr> -v <verbose> -e  .... Pts_erase\n", argv);
193
 printf("Usage: %s -a <ptsaddr> -v <verbose> -e  .... Pts_erase\n", argv);
193
 printf("Usage: %s -a <ptsaddr> -v <verbose> -r  .... Pts_reset\n", argv);
194
 printf("Usage: %s -a <ptsaddr> -v <verbose> -x  .... Pts_reset\n", argv);
-
 
195
 printf("Usage: %s -a <ptsaddr> -v <verbose> -c  .... Pts_check_configure\n", argv);
-
 
196
 printf("Usage: %s -a <ptsaddr> -v <verbose> -r  .... vme read\n", argv);
-
 
197
 printf("Usage: %s -a <ptsaddr> -v <verbose> -w <value> .... vme write\n", argv);
194
 printf("Usage: %s -a <ptsaddr> -v <verbose> -w <value> .... Pts_write_csr\n", argv);
198
 printf("Usage: %s -a <ptsaddr> -v <verbose> -s <value> .... Pts_write_csr\n", argv);
-
 
199
 printf("Example: %s  --address  0x1000000 --verbose 1 --erase\n", argv);
-
 
200
 printf("Example: %s --address  0x1000000 --verbose 1 --input pts_scaler.bit --load-bit 2\n", argv);
-
 
201
 printf("Example: %s --address  0x1000004 --write-csr 0x7600\n", argv);
195
}
202
}
-
 
203
 
196
 
204
 
-
 
205
 
-
 
206
static const char *optString = "v:rxea:cs:w:i:b:h";
-
 
207
static const struct option longOpts[] = {
-
 
208
    { "verbose", required_argument, NULL, 'v' },
-
 
209
    { "reset"  , no_argument, NULL, 'x' },
-
 
210
    { "erase"  , no_argument, NULL, 'e' },
-
 
211
    { "address", required_argument, NULL, 'a' },
-
 
212
    { "check-configure", no_argument, NULL, 'c' },
-
 
213
    { "write-csr", required_argument , NULL, 's' },
-
 
214
    { "input", required_argument , NULL, 'i' },
-
 
215
    { "load-bit", required_argument , NULL, 'b' },
-
 
216
    { "read", no_argument , NULL, 'r' },
-
 
217
    { "write",required_argument , NULL, 'w' },
-
 
218
    { "help", no_argument, NULL, 'h' },
-
 
219
    { NULL, no_argument, NULL, 0 }
-
 
220
};
-
 
221
 
197
int main (int argc, char ** argv){
222
int main (int argc, char ** argv){
-
 
223
 
198
unsigned long  value;
224
uint32_t value;
199
 
225
 
200
 int verbose=0;
226
 int verbose=0;
201
 char filename[256]="file.bit";
227
 char filename[256]="file.bit";
202
 int c;
228
 int c;
203
 opterr = 0;
229
 opterr = 0;
-
 
230
int longIndex = 0;
204
 
231
 
205
if (argc<2) {
232
if (argc<2) {
206
  help(argv[0]);
233
  help(argv[0]);
207
  exit(-1);
234
  exit(-1);
208
}
235
}
209
 
236
 
210
VME_START(NULL);
237
VME_START(NULL);
-
 
238
 
-
 
239
c = getopt_long( argc, argv, optString, longOpts, &longIndex );
-
 
240
        while( c != -1 )
-
 
241
 
211
 while ((c = getopt (argc, argv, "v:rea:cw:i:b:h")) != -1)
242
// while ((c = getopt (argc, argv, "v:xrea:csw:i:b:h")) != -1)
-
 
243
{
212
         switch (c)
244
         switch (c)
213
           {
245
           {
214
          case 'v':
246
          case 'v':
215
            verbose = atoi(optarg);
247
            verbose = atoi(optarg);
216
            break;
248
            break;
217
          case 'r':
249
          case 'x':
218
            Pts_reset(verbose);
250
            Pts_reset(verbose);
219
            break;             // reset
251
            break;             // reset
220
          case 'e':
252
          case 'e':
221
            Pts_erase(verbose);
253
            Pts_erase(verbose);
222
            break;             // erase
254
            break;             // erase
223
          case 'a':
255
          case 'a':
224
            ptaddr  =  strtoul (optarg,NULL,0);
256
            ptaddr  =  strtoul (optarg,NULL,0);
225
            break;             // address
257
            break;             // address
226
          case 'c':
258
          case 'c':
227
            Pts_check_configure( verbose );
259
            Pts_check_configure( verbose );
228
            break;
260
            break;
229
          case 'w':
261
          case 'w':
-
 
262
            value = strtoul (optarg,NULL,0);
-
 
263
            Pts_write( 0 , value );
-
 
264
            break;
-
 
265
          case 'r':
-
 
266
            value = 0;
-
 
267
            Pts_read( 0 , &value );
-
 
268
            break;
-
 
269
          case 's':
230
            value = strtoul (optarg,NULL,0);
270
            value = strtoul (optarg,NULL,0);
231
            Pts_write_csr( verbose, value );
271
            Pts_write_csr( verbose, value );
232
            break;
272
            break;
233
          case 'i':
273
          case 'i':
234
            sprintf(filename,"%s",optarg);
274
            sprintf(filename,"%s",optarg);
Line 243... Line 283...
243
            help(argv[0]);
283
            help(argv[0]);
244
            break;
284
            break;
245
           default:
285
           default:
246
             printf("Unknown command %c\n",c);
286
             printf("Unknown command %c\n",c);
247
           }
287
           }
-
 
288
    c = getopt_long( argc, argv, optString, longOpts, &longIndex );
-
 
289
}
248
VME_STOP();
290
VME_STOP();
249
}
291
}
250
 
292