diff options
author | Nicholas Corgan <nick.corgan@ettus.com> | 2015-08-14 07:42:01 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2015-08-14 12:30:53 -0700 |
commit | d35a0e28b6af67e4500b51c4739886f7544bca35 (patch) | |
tree | 64c04cd3b879d4898ecfcf4a52260ab8fa312d37 /host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp | |
parent | 8d6b63e1e86ae0f1ee8b084ea2db6d5b5b705179 (diff) | |
download | uhd-d35a0e28b6af67e4500b51c4739886f7544bca35.tar.gz uhd-d35a0e28b6af67e4500b51c4739886f7544bca35.tar.bz2 uhd-d35a0e28b6af67e4500b51c4739886f7544bca35.zip |
octoclock: replaced Intel hex -> binary converter
Diffstat (limited to 'host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp')
-rw-r--r-- | host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp | 54 |
1 files changed, 37 insertions, 17 deletions
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 <http://www.gnu.org/licenses/>. // -#include <cstring> -#include <fstream> -#include <iostream> -#include <string> - -#include <boost/cstdint.hpp> -#include <boost/filesystem.hpp> -#include <boost/format.hpp> -#include <boost/lexical_cast.hpp> -#include <boost/thread.hpp> +#include "octoclock_impl.hpp" +#include "common.h" +#include "kk_ihex_read.h" #include <uhd/device.hpp> #include <uhd/image_loader.hpp> @@ -35,9 +28,17 @@ #include <uhd/utils/paths.hpp> #include <uhd/utils/static.hpp> -#include "octoclock_impl.hpp" -#include "common.h" -#include "ihexcvt.hpp" +#include <boost/cstdint.hpp> +#include <boost/filesystem.hpp> +#include <boost/format.hpp> +#include <boost/lexical_cast.hpp> +#include <boost/thread.hpp> + +#include <cstdio> +#include <cstring> +#include <fstream> +#include <iostream> +#include <string> 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."))); |