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> -  | 
            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> -  | 
            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 | 
  | 
            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 | 
  | 
            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  | 
            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 | ||