#include "usbpulse.h"
int main(int argc, char *argv[]) {
int opt, dev = 0, mute = 0, help = 0;
int x = 1000, y = 0, z = 100, bypass = 0, invert = 0, random = 0, one = 0;
int m = 1, n = 1, u = 1;
double amp = 2.0;
int fd;
while((opt = getopt(argc, argv, "d:a:p:x:y:z:bri1mh?")) != -1)
switch(opt) {
case 'd':
dev = atoi(optarg);
break;
case 'm':
mute = 1;
break;
case 'a':
amp = atof(optarg);
break;
case 'p':
sscanf(optarg, "%i,%i,%i", &m, &n, &u);
break;
case 'x':
x = atoi(optarg);
break;
case 'y':
y = atoi(optarg);
break;
case 'z':
z = atoi(optarg);
break;
case 'b':
bypass = 1;
break;
case 'r':
random = 1;
break;
case 'i':
invert = 1;
break;
case '1':
one = 1;
break;
default:
help = 1;
break;
}
if(help || optind != argc) {
printf("Pouziti: %s [-d dev] [-a amp] [-p m,n,u] [-x div] [-y from] [-z to]\n"
" [-b] [-r] [-1] [-i] [-m]\n"
" dev je cislo zarizeni %sn, na ktere se pripojit.\n"
" amp je amplituda ve voltech rozsahu 1.5 az 5. Muze byt desetinne cislo.\n"
" m,n,u jsou argumenty pro hlavni PLL casovac. Oddelujte prosim carkou\n"
" a nepouzivejte mezery. Frekvence PLL = 12.5MHz*m/(n*u), m<=16, n<=8, u<=4.\n"
" div je koeficient delice frekvence PLL. V modu -1 nema primy vyznam.\n"
" from a to urcuji zpozdeni a dobu trvani pulsu v jednotkach PLL.\n"
" -b zapina primy pruchod z PLL bez delice (pro dosazeni nejvyssich f.)\n"
" -r zapina pseudonahodny vystup 0 a 1 na frekvenci PLL.\n"
" -1 urcuje jednopulzovy rezim. Delka pulzu je urcena -x, -y a -z.\n"
" -i zapina inverzi logicke hodnoty na vystupu.\n"
" -m je utlumeni (vypnuti) vystupu a prepnuti do modu Hi-Z.\n",
argv[0], DEVNAME);
return 0;
}
if(!opendev(dev, &fd)) {
fprintf(stderr, "Nepodarilo se otevrit zarizeni %s%i!\n"
"Zkontrolujte pritomnost specialniho souboru a pristupova prava.\n",
DEVNAME, dev);
return 1;
}
if(!pulse100_init_pulse(fd)) return 1;
pulse100_set_clock_master(fd, 1);
pulse100_set_trig_master(fd, 1);
pulse100_set_enable(fd, 1);
if(x < z+2) {
x = z+2;
if(x >= (1<<28)) {
x = (1<<28) - 1;
z = x-2;
}
}
if(mute) {
pulse100_set_enable(fd, 0);
} else {
pulse100_set_pll(fd, m, n, u, 0);
pulse100_set_amplitude(fd, amp);
pulse100_set_xyz(fd, x, y, z);
pulse100_set_bypass(fd, bypass);
pulse100_set_prng(fd, random);
pulse100_set_invert(fd, invert);
if(one) {
pulse100_set_run(fd, 0);
pulse100_set_arm(fd, 0);
}
pulse100_set_oneshot(fd, one);
pulse100_set_enable(fd, 1);
pulse100_set_run(fd, 1);
pulse100_set_arm(fd, 1);
pulse100_set_trigger(fd, 1);
}
closedev(fd);
return 0;
}
/* Zaloha fungujiciho One Shot modu:
* pulse100_set_trigger(fd, 0);
* pulse100_set_arm(fd, 0);
* pulse100_set_run(fd, 0);
* pulse100_set_oneshot(fd, 1);
* pulse100_set_run(fd, 1);
* pulse100_set_arm(fd, 1);
* pulse100_set_trigger(fd, 1);
*/