From 177f93467e784f7702c9e989377f44b369c288c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mo=C5=84?= Date: Fri, 30 Jan 2009 21:09:57 +0100 Subject: [PATCH] add control functions for mx and ds dists --- gdigi.c | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) diff --git a/gdigi.c b/gdigi.c index 199f7c6..bde2d65 100644 --- a/gdigi.c +++ b/gdigi.c @@ -974,6 +974,181 @@ void set_rodent_level(struct usb_dev_handle *handle, int x) printf("wrote: %d\n", i); } +void set_mx_dist(struct usb_dev_handle *handle, int x) +{ + static char set_dist[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x41, 0x20, 0x04, 0x09, 0x24, 0x06, 0x07, 0x00 /* value */, 0x00 /* confirm */, 0xF7}; + + int val; + val = (x & 0xf0); + if ((x & 0xf) < 8) { + val += (7 - (x & 0xf)); + } else { + val += (0xF - ((x & 0xf) - 8)); + } + + if (((x & 0xf) % 2) == 0) { + val -= 1; + } else { + val += 1; + } + + set_dist[17] = x; + set_dist[18] = val; + + int i; + i = usb_bulk_write(handle, 4, set_dist, sizeof(set_dist), TIMEOUT); + printf("wrote: %d\n", i); +} + +void set_mx_output(struct usb_dev_handle *handle, int x) +{ + static char set_output[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x41, 0x20, 0x04, 0x09, 0x25, 0x06, 0x07, 0x00 /* value */, 0x00 /* confirm */, 0xF7}; + + int val; + val = (x & 0xf0); + if ((x & 0xf) < 8) { + val += (7 - (x & 0xf)); + } else { + val += (0xF - ((x & 0xf) - 8)); + } + + set_output[17] = x; + set_output[18] = val; + + int i; + i = usb_bulk_write(handle, 4, set_output, sizeof(set_output), TIMEOUT); + printf("wrote: %d\n", i); +} + +void set_ds_gain(struct usb_dev_handle *handle, int x) +{ + static char set_gain[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x41, 0x20, 0x04, 0x09, 0x08, 0x06, 0x07, 0x00 /* value */, 0x00 /* confirm */, 0xF7}; + + int val; + switch ((x & 0xf0) >> 4) { + case 0: val = 0x20; break; + case 1: val = 0x30; break; + case 2: val = 0x00; break; + case 3: val = 0x10; break; + case 4: val = 0x60; break; + case 5: val = 0x70; break; + case 6: val = 0x40; break; + default: break; + } + switch (x & 0xf) { + case 0: val += 0xA; break; + case 1: val += 0xB; break; + case 2: val += 8; break; + case 3: val += 9; break; + case 4: val += 0xE; break; + case 5: val += 0xF; break; + case 6: val += 0xC; break; + case 7: val += 0xD; break; + case 8: val += 2; break; + case 9: val += 3; break; + case 0xA: val += 0; break; + case 0xB: val += 1; break; + case 0xC: val += 6; break; + case 0xD: val += 7; break; + case 0xE: val += 4; break; + case 0xF: val += 5; break; + default: break; + } + + set_gain[17] = x; + set_gain[18] = val; + + int i; + i = usb_bulk_write(handle, 4, set_gain, sizeof(set_gain), TIMEOUT); + printf("wrote: %d\n", i); +} + +void set_ds_tone(struct usb_dev_handle *handle, int x) +{ + static char set_tone[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x41, 0x20, 0x04, 0x09, 0x09, 0x06, 0x07, 0x00 /* value */, 0x00 /* confirm */, 0xF7}; + + int val; + switch ((x & 0xf0) >> 4) { + case 0: val = 0x20; break; + case 1: val = 0x30; break; + case 2: val = 0x00; break; + case 3: val = 0x10; break; + case 4: val = 0x60; break; + case 5: val = 0x70; break; + case 6: val = 0x40; break; + default: break; + } + switch (x & 0xf) { + case 0: val += 0xB; break; + case 1: val += 0xA; break; + case 2: val += 9; break; + case 3: val += 8; break; + case 4: val += 0xF; break; + case 5: val += 0xE; break; + case 6: val += 0xD; break; + case 7: val += 0xC; break; + case 8: val += 3; break; + case 9: val += 2; break; + case 0xA: val += 1; break; + case 0xB: val += 0; break; + case 0xC: val += 7; break; + case 0xD: val += 6; break; + case 0xE: val += 5; break; + case 0xF: val += 4; break; + default: break; + } + + set_tone[17] = x; + set_tone[18] = val; + + int i; + i = usb_bulk_write(handle, 4, set_tone, sizeof(set_tone), TIMEOUT); + printf("wrote: %d\n", i); +} + +void set_ds_level(struct usb_dev_handle *handle, int x) +{ + static char set_level[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x41, 0x20, 0x04, 0x09, 0x0A, 0x06, 0x07, 0x00 /* value */, 0x00 /* confirm */, 0xF7}; + + int val; + switch ((x & 0xf0) >> 4) { + case 0: val = 0x20; break; + case 1: val = 0x30; break; + case 2: val = 0x00; break; + case 3: val = 0x10; break; + case 4: val = 0x60; break; + case 5: val = 0x70; break; + case 6: val = 0x40; break; + default: break; + } + switch (x & 0xf) { + case 0: val += 8; break; + case 1: val += 9; break; + case 2: val += 0xA; break; + case 3: val += 0xB; break; + case 4: val += 0xC; break; + case 5: val += 0xD; break; + case 6: val += 0xE; break; + case 7: val += 0xF; break; + case 8: val += 0; break; + case 9: val += 1; break; + case 0xA: val += 2; break; + case 0xB: val += 3; break; + case 0xC: val += 4; break; + case 0xD: val += 5; break; + case 0xE: val += 6; break; + case 0xF: val += 7; break; + default: break; + } + + set_level[17] = x; + set_level[18] = val; + + int i; + i = usb_bulk_write(handle, 4, set_level, sizeof(set_level), TIMEOUT); + printf("wrote: %d\n", i); +} + void value_changed_cb(GtkSpinButton *spinbutton, void (*callback)(struct usb_dev_handle*, int)) { int val = gtk_spin_button_get_value_as_int(spinbutton);