diff options
-rw-r--r-- | host/utils/uhd_image_loader.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/host/utils/uhd_image_loader.cpp b/host/utils/uhd_image_loader.cpp index 5ea789ee2..5f5ed2871 100644 --- a/host/utils/uhd_image_loader.cpp +++ b/host/utils/uhd_image_loader.cpp @@ -1,5 +1,5 @@ // -// Copyright 2015 Ettus Research LLC +// Copyright 2015-2017 Ettus Research // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -56,17 +56,16 @@ void sigint_handler(int){ int UHD_SAFE_MAIN(int argc, char *argv[]){ - std::string fw_path = ""; - std::string fpga_path = ""; - po::options_description desc("Allowed options"); desc.add_options() ("help", "help message") ("args", po::value<std::string>()->default_value(""), "Device args, optional loader args") - ("fw-path", po::value<std::string>(&fw_path)->default_value(""), "Firmware path (uses default if none specified)") - ("fpga-path", po::value<std::string>(&fpga_path)->default_value(""), "FPGA path (uses default if none specified)") + ("fw-path", po::value<std::string>()->default_value(""), "Firmware path (uses default if none specified)") + ("fpga-path", po::value<std::string>()->default_value(""), "FPGA path (uses default if none specified)") + ("out-path", po::value<std::string>()->default_value(""), "Output path/filename of the downloaded FPGA .bit file") ("no-fw", "Don't burn firmware") - ("no-fpga", "Don't burn FPGA") + ("no-fpga", "Don't Burn FPGA") + ("download", "Download an image to a bit/bin file") ; po::variables_map vm; @@ -86,10 +85,12 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ // Convert user options uhd::image_loader::image_loader_args_t image_loader_args; image_loader_args.args = vm["args"].as<std::string>(); - image_loader_args.load_firmware = (vm.count("no-fw") == 0); - image_loader_args.load_fpga = (vm.count("no-fpga") == 0); + image_loader_args.load_firmware = (vm.count("no-fw") == 0); + image_loader_args.load_fpga = (vm.count("no-fpga") == 0); + image_loader_args.download = (vm.count("download") != 0); image_loader_args.firmware_path = vm["fw-path"].as<std::string>(); image_loader_args.fpga_path = vm["fpga-path"].as<std::string>(); + image_loader_args.out_path = vm["out-path"].as<std::string>(); // Force user to specify a device if(not image_loader_args.args.has_key("type")){ @@ -113,6 +114,14 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){ #endif /* UHD_PLATFORM_WIN32 */ image_loader_args.fpga_path = fs::absolute(image_loader_args.fpga_path).string(); } + if(image_loader_args.out_path != ""){ + #ifndef UHD_PLATFORM_WIN32 + if(image_loader_args.out_path.find("~") == 0){ + image_loader_args.out_path.replace(0,1,getenv("HOME")); + } + #endif /* UHD_PLATFORM_WIN32 */ + image_loader_args.out_path = fs::absolute(image_loader_args.out_path).string(); + } // Detect which type of device we're working with device_type = image_loader_args.args.get("type",""); |