diff options
-rw-r--r-- | src/usb-device.c | 42 | ||||
-rw-r--r-- | src/usb-device.h | 5 |
2 files changed, 47 insertions, 0 deletions
diff --git a/src/usb-device.c b/src/usb-device.c index 85100f9..855cf35 100644 --- a/src/usb-device.c +++ b/src/usb-device.c @@ -30,6 +30,8 @@ #include "device.h" #include "usb-device.h" #include "printf-utils.h" +#include "nolo.h" +#include "cold-flash.h" static struct usb_flash_device usb_devices[] = { { 0x0421, 0x0105, 2, 1, -1, FLASH_NOLO, { DEVICE_SU_18, DEVICE_RX_44, DEVICE_RX_48, DEVICE_RX_51, 0 } }, @@ -287,3 +289,43 @@ void usb_close_device(struct usb_device_info * dev) { free(dev); } + +void usb_switch_to_nolo(struct usb_device_info * dev) { + + printf("\nSwitching to NOLO mode...\n"); + + if ( dev->flash_device->protocol == FLASH_COLD ) + leave_cold_flash(dev); + else if ( dev->flash_device->protocol == FLASH_MKII ) + ERROR("Leaving Mk II protocol is not implemented yet"); + else if ( dev->flash_device->protocol == FLASH_DISK ) + printf_and_wait("Unplug USB cable, turn device off, press ENTER and plug USB cable again"); + +} + +void usb_switch_to_cold(struct usb_device_info * dev) { + + printf("\nSwitching to Cold Flash mode...\n"); + printf_and_wait("Unplug USB cable, turn device off, press ENTER and plug USB cable again"); + +} + +void usb_switch_to_mkii(struct usb_device_info * dev) { + + printf("\nSwitching to Update mode...\n"); + + if ( dev->flash_device->protocol == FLASH_COLD ) + leave_cold_flash(dev); + else if ( dev->flash_device->protocol == FLASH_NOLO ) + nolo_boot_device(dev, "update"); + else if ( dev->flash_device->protocol == FLASH_DISK ) + printf_and_wait("Unplug USB cable, turn device off, press ENTER and plug USB cable again"); + +} + +void usb_switch_to_disk(struct usb_device_info * dev) { + + printf("\nSwitching to RAW disk mode...\n"); + ERROR("usb_switch_to_disk is not implemented yet"); + +} diff --git a/src/usb-device.h b/src/usb-device.h index b1ca650..e575d57 100644 --- a/src/usb-device.h +++ b/src/usb-device.h @@ -53,4 +53,9 @@ const char * usb_flash_protocol_to_string(enum usb_flash_protocol protocol); struct usb_device_info * usb_open_and_wait_for_device(void); void usb_close_device(struct usb_device_info * dev); +void usb_switch_to_nolo(struct usb_device_info * dev); +void usb_switch_to_cold(struct usb_device_info * dev); +void usb_switch_to_mkii(struct usb_device_info * dev); +void usb_switch_to_disk(struct usb_device_info * dev); + #endif |