#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; }