static int flash_fpga(struct rc_config *rc, struct cli_state *state, int status) { if (!status && rc->flash_fpga_file) { if (!state->dev) { print_error_need_devarg(); status = -1; } else { if (!strcmp("X", rc->flash_fpga_file)) { printf("Erasing stored FPGA to disable autoloading...\n"); status = bladerf_erase_stored_fpga(state->dev); } else { printf("Writing FPGA to flash for autoloading...\n"); status = bladerf_flash_fpga(state->dev, rc->flash_fpga_file); } if (status) { fprintf(stderr, "Error: %s\n", bladerf_strerror(status)); } else { printf("Done.\n"); } } } return status; }
static int flash_fw(struct rc_config *rc, struct cli_state *state, int status) { if (!status && rc->fw_file) { if (!state->dev) { print_error_need_devarg(); status = -1; } else { printf("Flashing firmware...\n"); status = bladerf_flash_firmware(state->dev, rc->fw_file); if (status) { fprintf(stderr, "Error: failed to flash firmware: %s\n", bladerf_strerror(status)); } else { printf("Done.\n"); } bladerf_device_reset(state->dev); bladerf_close(state->dev); state->dev = NULL; } } /* TODO Do we have to fire off some sort of reset after flashing * the firmware, and before loading the FPGA? */ return status; }
static int load_fpga(struct rc_config *rc, struct cli_state *state, int status) { if (!status && rc->fpga_file) { if (!state->dev) { print_error_need_devarg(); status = -1; } else { printf("Loading fpga...\n"); status = bladerf_load_fpga(state->dev, rc->fpga_file); if (status) { fprintf(stderr, "Error: failed to load FPGA: %s\n", bladerf_strerror(status)); } else { printf("Done.\n"); } } } return status; }
static int flash_fw(struct rc_config *rc, struct cli_state *state, int status) { if (!status && rc->fw_file) { if (!state->dev) { print_error_need_devarg(); status = -1; } else { printf("Flashing firmware...\n"); status = bladerf_flash_firmware(state->dev, rc->fw_file); if (status) { fprintf(stderr, "Error: failed to flash firmware: %s\n", bladerf_strerror(status)); } else { printf("Done. " "A power cycle is required for this to take effect.\n"); } bladerf_close(state->dev); state->dev = NULL; } } return status; }