aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp
diff options
context:
space:
mode:
authorNicholas Corgan <nick.corgan@ettus.com>2015-08-14 07:42:01 -0700
committerMartin Braun <martin.braun@ettus.com>2015-08-14 12:30:53 -0700
commitd35a0e28b6af67e4500b51c4739886f7544bca35 (patch)
tree64c04cd3b879d4898ecfcf4a52260ab8fa312d37 /host/lib/usrp_clock/octoclock/octoclock_image_loader.cpp
parent8d6b63e1e86ae0f1ee8b084ea2db6d5b5b705179 (diff)
downloaduhd-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.cpp54
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.")));