#include "usbwave.h"
int freq(int fd) {
char buf[5];
float freq = 1000.0;
float amp = 5.0;
if(!wave12_init_wave(fd, 1, NULL, NULL)) return 0;
if(!wave12_set_amplitude(fd, 5, 0)) return 0;
if(!wave12_set_trigger(fd, 1)) return 0;
while(fread(buf, 1, 1, stdin)) {
switch(*buf) {
case '+':
freq *= 1.0594631;
printf("freq = %.1f Hz\n", freq);
if(!wave12_set_frequency(fd, freq)) return 0;
break;
case '-':
freq /= 1.0594631;
printf("freq = %.1f Hz\n", freq);
if(!wave12_set_frequency(fd, freq)) return 0;
break;
case '*':
amp *= 1.1;
if(!wave12_set_amplitude(fd, amp, 0)) return 0;
break;
case '/':
amp /= 1.1;
if(!wave12_set_amplitude(fd, amp, 0)) return 0;
break;
case '1':
if(!wave12_set_wave_type(fd, WAVE12_WAVE_TYPE_SINE)) return 0;
break;
case '2':
if(!wave12_set_wave_type(fd, WAVE12_WAVE_TYPE_TRIANGLE)) return 0;
break;
case '3':
if(!wave12_set_wave_type(fd, WAVE12_WAVE_TYPE_SQUARE)) return 0;
break;
case 'a':
case 'b':
case 'c':
case 'd':
if(!usbtm_set_led_mode(fd, *buf-'a')) return 0;
break;
case 'E':
if(!wave12_set_enable(fd, 0)) return 0;
break;
case 'e':
if(!wave12_set_enable(fd, 1)) return 0;
break;
case 'T':
if(!wave12_set_trigger(fd, 0)) return 0;
break;
case 't':
if(!wave12_set_trigger(fd, 1)) return 0;
break;
}
if(*buf == 'q') break;
}
return 1;
}
int main() {
int fd;
struct termios tios;
if(!opendev(1, &fd)) {
fprintf(stderr, "open\n"); return 1; }
tcgetattr(0, &tios);
tios.c_lflag &= ~ICANON & ~ECHO;
tcsetattr(0, TCSANOW, &tios);
freq(fd);
closedev(1, fd);
tcgetattr(0, &tios);
tios.c_lflag |= ICANON | ECHO;
tcsetattr(0, TCSANOW, &tios);
return 0;
}