#endif
int ret = 0;
+
+#ifdef CONFIG_DFU_OVER_USB
+ int argv_list = 0;
+ bool dfu_reset = false;
+ switch (argc) {
+ case 2:
+ argv_list = 1;
+ case 1:
+ usb_controller = strdup(env_get("dfu_usb_con"));
+ interface = strdup(env_get("dfu_interface"));
+ devstring = strdup(env_get("dfu_device"));
+ if (!usb_controller || !interface || !devstring) {
+ puts("DFU: default device environment is not set.\n");
+ ret = CMD_RET_USAGE;
+ goto bad_args;
+ }
+ break;
+ case 5:
+ argv_list = 4;
+ case 4:
+ usb_controller = argv[1];
+ interface = argv[2];
+ devstring = argv[3];
+ break;
+ default:
+ return CMD_RET_USAGE;
+ }
+#endif
#ifdef CONFIG_DFU_OVER_TFTP
if (!strcmp(argv[1], "tftp"))
return update_tftp(value, interface, devstring);
dfu_set_timeout(value * 1000);
#endif
- ret = CMD_RET_SUCCESS;
- if (strcmp(argv[argc - 1], "list") == 0) {
+ if (argv_list && !strcmp(argv[argv_list], "list")) {
dfu_show_entities();
goto done;
}
done:
dfu_free_entities();
+
+ if (dfu_reset)
+ run_command("reset", 0);
+
+ g_dnl_clear_detach();
+bad_args:
+ if (argc == 1) {
+ free(usb_controller);
+ free(interface);
+ free(devstring);
+ }
#endif
return ret;
}