return result;
}
+
+int ezusb_upload_firmware(libusb_device *dev, int configuration,
+ const char *filename)
+{
+ struct libusb_device_handle *hdl;
+ int err;
+
+ g_message("uploading firmware to device on %d.%d",
+ libusb_get_bus_number(dev), libusb_get_device_address(dev));
+
+ err = libusb_open(dev, &hdl);
+ if (err != 0) {
+ g_warning("failed to open device: %d", err);
+ return 1;
+ }
+
+ err = libusb_set_configuration(hdl, configuration);
+ if (err != 0) {
+ g_warning("Unable to set configuration: %d", err);
+ return 1;
+ }
+
+ if ((ezusb_reset(hdl, 1)) < 0)
+ return 1;
+
+ if (ezusb_install_firmware(hdl, filename) != 0)
+ return 1;
+
+ if ((ezusb_reset(hdl, 0)) < 0)
+ return 1;
+
+ libusb_close(hdl);
+
+ return 0;
+}
int upload_firmware(libusb_device *dev)
{
- struct libusb_device_handle *hdl;
- int err;
-
- g_message("uploading firmware to device on %d.%d",
- libusb_get_bus_number(dev), libusb_get_device_address(dev));
-
- err = libusb_open(dev, &hdl);
- if (err != 0) {
- g_warning("failed to open device: %d", err);
- return 1;
- }
-
- err = libusb_set_configuration(hdl, USB_CONFIGURATION);
- if (err != 0) {
- g_warning("Unable to set configuration: %d", err);
- return 1;
- }
-
- if ((ezusb_reset(hdl, 1)) < 0)
- return 1;
-
- if (ezusb_install_firmware(hdl, FIRMWARE) != 0)
- return 1;
+ int ret;
- if ((ezusb_reset(hdl, 0)) < 0)
+ if (ret = ezusb_upload_firmware(dev, USB_CONFIGURATION, FIRMWARE) != 0)
return 1;
- libusb_close(hdl);
-
/* Remember when the last firmware update was done. */
g_get_current_time(&firmware_updated);
int ezusb_reset(struct libusb_device_handle *hdl, int set_clear);
int ezusb_install_firmware(libusb_device_handle *hdl, char *filename);
+int ezusb_upload_firmware(libusb_device *dev, int configuration,
+ const char *filename);
GSList *list_serial_ports(void);
int serial_open(const char *pathname, int flags);