From a2029bc14437f13e58de9863c4910f767f805c65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mo=C5=84?= Date: Fri, 30 Jan 2009 12:19:16 +0100 Subject: [PATCH] add set_pickup_type and set_pickup_on_off --- gdigi.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gdigi.c b/gdigi.c index 49ee57f..23450a5 100644 --- a/gdigi.c +++ b/gdigi.c @@ -34,6 +34,16 @@ static char magic3[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x static char magic4[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x2B, 0x00, 0x04, 0x00, 0x01, 0x77, 0x05, 0xF7, 0x00, 0x00}; static char magic5[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x3A, 0x00, 0x04, 0x00, 0x01, 0x77, 0x05, 0xF7, 0x00, 0x00}; + +/* xedit calls those after calling hbsc pickup change */ +static char magic12[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x3A, 0x00, 0x04, 0x00, 0x01, 0x77, 0x05, 0xF7, 0x00, 0x00}; +static char magic13[] = {0x07, 0x41, 0x73, 0xF7, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x7E, 0x00, 0x04, 0x00, 0x01, 0x77, 0x05, 0xF7, 0x00, 0x00}; + +/* xedit calls those after calling schb pickup change */ +static char magic22[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x41, 0x00, 0x04, 0x00, 0x01, 0x77, 0x05, 0xF7, 0x00, 0x00}; +static char magic23[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x3A, 0x00, 0x04, 0x00, 0x01, 0x77, 0x05, 0xF7, 0x00, 0x00}; +static char magic24[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x3B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x6E, 0xF7, 0x00}; + int read_device(struct usb_dev_handle *handle, int bytes) { int i, x; @@ -393,6 +403,43 @@ void switch_system_preset(struct usb_dev_handle *handle, int x) printf("wrote: %d\n", i); } +enum { + PICKUP_TYPE_HB_SC = 0, + PICKUP_TYPE_SC_HB +}; + +void set_pickup_type(struct usb_dev_handle *handle, int type) +{ + static char pickup[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x41, 0x00, 0x04, 0x00, 0x40, 0x02, 0x07, 0x00 /* type1 */, 0x00 /* type2 */, 0xF7}; + + switch (type) { + case PICKUP_TYPE_HB_SC: pickup[17] = 0x42; pickup[18] = 0x0D; break; + case PICKUP_TYPE_SC_HB: pickup[17] = 0x41; pickup[18] = 0x0E; break; + default: break; + } + + int i; + i = usb_bulk_write(handle, 4, pickup, sizeof(pickup), TIMEOUT); + printf("wrote: %d\n", i); +} + +void set_pickup_on_off(struct usb_dev_handle *handle, gboolean val) +{ + static char set_pickup[] = {0x04, 0xF0, 0x00, 0x00, 0x04, 0x10, 0x00, 0x5E, 0x04, 0x02, 0x41, 0x00, 0x04, 0x00, 0x41, 0x02, 0x07, 0x00 /* on/off */, 0x00 /* confirm */, 0xF7}; + + if (val == FALSE) { /* turn pickup off */ + set_pickup[17] = 0; + set_pickup[18] = 0x4E; + } else { /* turn pickup on */ + set_pickup[17] = 1; + set_pickup[18] = 0x4F; + } + + int i; + i = usb_bulk_write(handle, 4, set_pickup, sizeof(set_pickup), 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);