From d35a0e28b6af67e4500b51c4739886f7544bca35 Mon Sep 17 00:00:00 2001 From: Nicholas Corgan Date: Fri, 14 Aug 2015 07:42:01 -0700 Subject: octoclock: replaced Intel hex -> binary converter --- .../octoclock/octoclock_image_loader.cpp | 54 +++++++++++++++------- 1 file changed, 37 insertions(+), 17 deletions(-) (limited to 'host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp') diff --git a/host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp b/host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp index e8c50e029..8b47da7e5 100644 --- a/host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp +++ b/host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp @@ -15,16 +15,9 @@ // along with this program. If not, see . // -#include -#include -#include -#include - -#include -#include -#include -#include -#include +#include "octoclock_impl.hpp" +#include "common.h" +#include "kk_ihex_read.h" #include #include @@ -35,9 +28,17 @@ #include #include -#include "octoclock_impl.hpp" -#include "common.h" -#include "ihexcvt.hpp" +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include namespace fs = boost::filesystem; using namespace uhd; @@ -74,13 +75,32 @@ static void octoclock_calculate_crc(octoclock_session_t &session){ session.crc ^= temp_image[i]; for(boost::uint8_t j = 0; j < 8; ++j){ if(session.crc & 1) session.crc = (session.crc >> 1) ^ 0xA001; - else session.crc = (session.crc >> 1); - } - } + else session.crc = (session.crc >> 1); + } + } ifile.close(); } +static void octoclock_convert_ihex(octoclock_session_t &session){ + struct ihex_state ihex; + ihex_count_t count; + char buf[256]; + FILE* infile = fopen(session.given_filepath.c_str(), "r"); + FILE* outfile = fopen(session.actual_filepath.c_str(), "w"); + uint64_t line_number = 1; + + ihex_begin_read(&ihex); + while(fgets(buf, 256, infile)){ + count = ihex_count_t(strlen(buf)); + ihex_read_bytes(&ihex, buf, count, outfile); + line_number += (count && buf[count - 1] == '\n'); + } + ihex_end_read(&ihex, outfile); // Closes outfile + + (void)fclose(infile); +} + static void octoclock_validate_firmware_image(octoclock_session_t &session){ if(not fs::exists(session.given_filepath)){ throw uhd::runtime_error(str(boost::format("Could not find image at path \"%s\"") @@ -98,7 +118,7 @@ static void octoclock_validate_firmware_image(octoclock_session_t &session){ % time_spec_t::get_system_time().get_full_secs()) ).string(); - Hex2Bin(session.given_filepath.c_str(), session.actual_filepath.c_str(), false); + octoclock_convert_ihex(session); session.from_hex = true; } else throw uhd::runtime_error(str(boost::format("Invalid extension \"%s\". Extension must be .hex or .bin."))); -- cgit v1.2.3