diff options
-rw-r--r-- | src/operations.c | 37 | ||||
-rw-r--r-- | src/operations.h | 3 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/operations.c b/src/operations.c index 4a63c09..88a7a59 100644 --- a/src/operations.c +++ b/src/operations.c @@ -490,6 +490,43 @@ int dev_set_kernel_ver(struct device_info * dev, const char * ver) { } +int dev_get_initfs_ver(struct device_info * dev, char * ver, size_t size) { + + if ( dev->method == METHOD_LOCAL ) + return local_get_initfs_ver(ver, size); + + if ( dev->method == METHOD_USB ) { + + if ( dev->usb->flash_device->protocol == FLASH_NOLO ) + return nolo_get_initfs_ver(dev->usb, ver, size); + + } + + return -1; + +} + +int dev_set_initfs_ver(struct device_info * dev, const char * ver) { + + if ( dev->method == METHOD_LOCAL ) + return local_set_initfs_ver(ver); + + if ( dev->method == METHOD_USB ) { + + if ( dev->usb->flash_device->protocol == FLASH_NOLO ) + return nolo_set_initfs_ver(dev->usb, ver); + + if ( dev->usb->flash_device->protocol == FLASH_COLD ) { + usb_switch_to_nolo(dev->usb); + return -EAGAIN; + } + + } + + return -1; + +} + int dev_get_nolo_ver(struct device_info * dev, char * ver, size_t size) { if ( dev->method == METHOD_LOCAL ) diff --git a/src/operations.h b/src/operations.h index 3f6c3bd..ea27157 100644 --- a/src/operations.h +++ b/src/operations.h @@ -68,6 +68,9 @@ int dev_set_hwrev(struct device_info * dev, int16_t hwrev); int dev_get_kernel_ver(struct device_info * dev, char * ver, size_t size); int dev_set_kernel_ver(struct device_info * dev, const char * ver); +int dev_get_initfs_ver(struct device_info * dev, char * ver, size_t size); +int dev_set_initfs_ver(struct device_info * dev, const char * ver); + int dev_get_nolo_ver(struct device_info * dev, char * ver, size_t size); int dev_set_nolo_ver(struct device_info * dev, const char * ver); |