diff options
author | Daniel Friesel <derf@finalrewind.org> | 2016-01-01 18:54:56 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2016-01-01 18:54:56 +0100 |
commit | b1bd27388c8e09d5dba666377e01fbc5070be754 (patch) | |
tree | 7e7dca262d1f28a25bfb453d552873f0b574ec88 /commandline | |
parent | fbb504f520a6acb25ab891e0c66896dd2be8621d (diff) |
simplify USB protocol
Diffstat (limited to 'commandline')
-rw-r--r-- | commandline/i2c-util.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/commandline/i2c-util.c b/commandline/i2c-util.c index f8aa18d..772aae7 100644 --- a/commandline/i2c-util.c +++ b/commandline/i2c-util.c @@ -32,12 +32,14 @@ obtained from http://libusb.sourceforge.net/. #define PSCMD_ECHO 0 #define PSCMD_GET 1 -#define PSCMD_ON 2 -#define PSCMD_OFF 3 +#define PSCMD_SET 2 /* These are the vendor specific SETUP commands implemented by our USB device */ -char bit_sda = 6; -char bit_scl = 7; +unsigned char bit_sda = 6; +unsigned char bit_scl = 7; + +unsigned char val_sda = 1; +unsigned char val_scl = 1; usb_dev_handle *handle = NULL; @@ -179,8 +181,8 @@ unsigned char get_status() USB_ENDPOINT_IN, PSCMD_GET, 0, 0, (char *)buffer, sizeof(buffer), 5000); - if (nBytes < 2) { - fprintf(stderr, "ERR: read status: got %d bytes, expected 2\n", + if (nBytes < 1) { + fprintf(stderr, "ERR: read status: got %d bytes, expected 1\n", nBytes); exit(1); } @@ -240,9 +242,11 @@ void set_sda(char value) // discarded unsigned char buffer[8]; + val_sda = value; + usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, - (value ? PSCMD_ON : PSCMD_OFF), 0, bit_sda, + PSCMD_SET, 0, (val_sda << bit_sda) | (val_scl << bit_scl), (char *)buffer, sizeof(buffer), 5000); } @@ -251,9 +255,11 @@ void set_scl(char value) // discarded unsigned char buffer[8]; + val_scl = value; + usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, - (value ? PSCMD_ON : PSCMD_OFF), 0, bit_scl, + PSCMD_SET, 0, (val_sda << bit_sda) | (val_scl << bit_scl), (char *)buffer, sizeof(buffer), 5000); } @@ -333,10 +339,10 @@ void i2c_init() { usb_init(); if (usbOpenDevice - (&handle, USBDEV_SHARED_VENDOR, "www.obdev.at", - USBDEV_SHARED_PRODUCT, "PowerSwitch") != 0) { + (&handle, USBDEV_SHARED_VENDOR, "finalrewind.org", + USBDEV_SHARED_PRODUCT, "VUSB-I2C") != 0) { fprintf(stderr, - "Could not find USB device \"PowerSwitch\" with vid=0x%x pid=0x%x\n", + "Could not find USB device \"VUSB-I2C\" with vid=0x%x pid=0x%x\n", USBDEV_SHARED_VENDOR, USBDEV_SHARED_PRODUCT); exit(1); } |