diff --git a/src/bitstream/BitstreamGenerator.cpp b/src/bitstream/BitstreamGenerator.cpp
index 07030a8..bdeefa1 100644
--- a/src/bitstream/BitstreamGenerator.cpp
+++ b/src/bitstream/BitstreamGenerator.cpp
@@ -143,7 +143,7 @@ std::string BitstreamGenerator::serializeFrames(
const std::string& name, const std::vector& frame_table,
BitstreamParameters params) {
auto encoder =
- FrameEncoder(frame_table, params.encoder_style != ENCODER_STYLE_ASCII);
+ FrameEncoder(frame_table);
std::string bitstream;
switch (params.encoder_style) {
diff --git a/src/encoding/FrameEncoder.cpp b/src/encoding/FrameEncoder.cpp
index cb7676f..7a22771 100644
--- a/src/encoding/FrameEncoder.cpp
+++ b/src/encoding/FrameEncoder.cpp
@@ -17,18 +17,14 @@ namespace tms_express {
// Initializers ///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-FrameEncoder::FrameEncoder(bool include_hex_prefix) {
- include_hex_prefix_ = include_hex_prefix;
+FrameEncoder::FrameEncoder() {
frames_ = std::vector();
binary_bitstream_ = std::vector(1, "");
}
-FrameEncoder::FrameEncoder(const std::vector &frames,
- bool include_hex_prefix) {
- //
+FrameEncoder::FrameEncoder(const std::vector &frames) {
binary_bitstream_ = std::vector(1, "");
frames_ = std::vector();
- include_hex_prefix_ = include_hex_prefix;
append(frames);
}
@@ -162,7 +158,7 @@ std::string FrameEncoder::toHex(bool shouldAppendStopFrame) {
// Reverse each byte and convert to hex
for (auto byte : binary_bitstream_) {
std::reverse(byte.begin(), byte.end());
- hex_stream += binToHex(byte, include_hex_prefix_) + byte_delimiter;
+ hex_stream += binToHex(byte) + byte_delimiter;
}
// Remove final trailing comma
@@ -187,7 +183,7 @@ std::vector FrameEncoder::toBytes(bool append_stop_frame) {
for (auto byte : binary_bitstream_) {
std::reverse(byte.begin(), byte.end());
auto data = std::byte(
- std::stoul(binToHex(byte, include_hex_prefix_), nullptr, 16));
+ std::stoul(binToHex(byte), nullptr, 16));
bytes.push_back(data);
}
@@ -216,20 +212,12 @@ std::vector FrameEncoder::getFrameTable() const {
// Static Helpers /////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-std::string FrameEncoder::binToHex(const std::string &bin_str,
- bool include_hex_prefix) {
- //
+std::string FrameEncoder::binToHex(const std::string &bin_str) {
// TODO(Joseph Bellahcen): Handle exception
int value = std::stoi(bin_str, nullptr, 2);
-
char hex_byte[6];
- if (include_hex_prefix) {
- snprintf(hex_byte, sizeof(hex_byte), "0x%02x", value);
- } else {
- snprintf(hex_byte, sizeof(hex_byte), "%02x", value);
- }
-
+ snprintf(hex_byte, sizeof(hex_byte), "0x%02x", value);
return {hex_byte};
}
diff --git a/src/encoding/FrameEncoder.hpp b/src/encoding/FrameEncoder.hpp
index e40a9f2..880670e 100644
--- a/src/encoding/FrameEncoder.hpp
+++ b/src/encoding/FrameEncoder.hpp
@@ -20,16 +20,11 @@ class FrameEncoder {
///////////////////////////////////////////////////////////////////////////
/// @brief Creates a new Frame Encoder with empty Frame buffer
- /// @param include_hex_prefix true to include '0x' in front of hex bytes,
- /// false otherwise
- explicit FrameEncoder(bool include_hex_prefix = false);
+ FrameEncoder();
/// @brief Creates a new Frame Encoder, starting with given Frame buffer
/// @param frames Vector of Frames to encode
- /// @param include_hex_prefix true to include '0x' in front of hex bytes,
- /// false otherwise
- explicit FrameEncoder(const std::vector &frames,
- bool include_hex_prefix = false);
+ explicit FrameEncoder(const std::vector &frames);
///////////////////////////////////////////////////////////////////////////
// Frame Appenders ////////////////////////////////////////////////////////
@@ -90,10 +85,8 @@ class FrameEncoder {
/// @brief Converts binary string to ASCII hex byte
/// @param bin_str Binary string corresponding to byte
- /// @param include_hex_prefix true to include '0x' prefix, false otherwise
/// @return ASCII hex representation of binary string
- static std::string binToHex(const std::string &bin_str,
- bool include_hex_prefix);
+ static std::string binToHex(const std::string &bin_str);
/// @brief Reverses hex bytes in bitstream, effectively converting between
/// host representation and TMS6100 Voice Synthesis Memory format
@@ -139,9 +132,6 @@ class FrameEncoder {
/// @brief Frame table
std::vector frames_;
-
- /// @brief true to prefix hex bytes with '0x', false otherwise
- bool include_hex_prefix_;
};
}; // namespace tms_express
diff --git a/test/FrameEncoderTests.cpp b/test/FrameEncoderTests.cpp
index d295cc8..e2f281b 100644
--- a/test/FrameEncoderTests.cpp
+++ b/test/FrameEncoderTests.cpp
@@ -13,7 +13,7 @@ TEST(FrameEncoderTests, StopFrame) {
auto frame_encoder = FrameEncoder();
auto hex = frame_encoder.toHex();
- EXPECT_EQ(hex, "0f");
+ EXPECT_EQ(hex, "0x0f");
}
TEST(FrameEncoderTests, AsciiStopFrame) {
@@ -22,7 +22,7 @@ TEST(FrameEncoderTests, AsciiStopFrame) {
frame_encoder.importASCIIFromString("0x0f");
auto hex = frame_encoder.toHex();
- EXPECT_EQ(hex, "0f");
+ EXPECT_EQ(hex, "0x0f");
}
TEST(FrameEncoderTests, SilentFrame) {
@@ -39,7 +39,7 @@ TEST(FrameEncoderTests, SilentFrame) {
frame_encoder.append(silent_frame);
auto hex = frame_encoder.toHex();
- EXPECT_EQ(hex, "f0");
+ EXPECT_EQ(hex, "0xf0");
}
TEST(FrameEncoderTests, AsciiSilentFrame) {
@@ -47,7 +47,7 @@ TEST(FrameEncoderTests, AsciiSilentFrame) {
frame_encoder.importASCIIFromString("0xf0");
auto hex = frame_encoder.toHex();
- EXPECT_EQ(hex, "f0");
+ EXPECT_EQ(hex, "0xf0");
}
TEST(FrameEncoderTests, VoicedFrame) {
@@ -57,15 +57,16 @@ TEST(FrameEncoderTests, VoicedFrame) {
// reversed, as the TMS5100 Voice Synthesis Memory units which normally
// feed data into the TMS5220 send byte-wise data LSB first
- auto voiced_frame = Frame(38, true, 56.850773,
- {-0.753234, 0.939525, -0.342255, -0.172317, 0.108887, 0.679660,
- 0.056874, 0.433271, -0.220355, 0.17028});
+ auto voiced_frame =
+ Frame(38, true, 56.850773,
+ {-0.753234, 0.939525, -0.342255, -0.172317, 0.108887, 0.679660,
+ 0.056874, 0.433271, -0.220355, 0.17028});
auto frame_encoder = FrameEncoder();
frame_encoder.append(voiced_frame);
auto bin = frame_encoder.toHex();
- EXPECT_EQ(bin, "c8,88,4f,25,ce,ab,3c");
+ EXPECT_EQ(bin, "0xc8,0x88,0x4f,0x25,0xce,0xab,0x3c");
}
TEST(FrameEncoderTests, AsciiVoicedFrame) {
@@ -73,22 +74,23 @@ TEST(FrameEncoderTests, AsciiVoicedFrame) {
frame_encoder.importASCIIFromString("0xc8,0x88,0x4f,0x25,0xce,0xab,0x3c");
auto bin = frame_encoder.toHex();
- EXPECT_EQ(bin, "c8,88,4f,25,ce,ab,3c");
+ EXPECT_EQ(bin, "0xc8,0x88,0x4f,0x25,0xce,0xab,0x3c");
}
TEST(FrameEncoderTests, UnvoicedFrame) {
// An unvoiced Frame will produce 29 data bits. The output will also
// contain 4 stop bits.
- auto unvoiced_frame = Frame(38, false, 56.850773,
- {-0.753234, 0.939525, -0.342255, -0.172317, 0.108887, 0.679660,
- 0.056874, 0.433271, -0.220355, 0.17028});
+ auto unvoiced_frame =
+ Frame(38, false, 56.850773,
+ {-0.753234, 0.939525, -0.342255, -0.172317, 0.108887, 0.679660,
+ 0.056874, 0.433271, -0.220355, 0.17028});
auto frame_encoder = FrameEncoder();
frame_encoder.append(unvoiced_frame);
auto bin = frame_encoder.toHex();
- EXPECT_EQ(bin, "08,88,4f,e5,01");
+ EXPECT_EQ(bin, "0x08,0x88,0x4f,0xe5,0x01");
}
TEST(FrameEncoderTests, AsciiUnvoicedFrame) {
@@ -96,42 +98,45 @@ TEST(FrameEncoderTests, AsciiUnvoicedFrame) {
frame_encoder.importASCIIFromString("0x08,0x88,0x4f,0xe5,0x01");
auto bin = frame_encoder.toHex();
- EXPECT_EQ(bin, "08,88,4f,e5,01");
+ EXPECT_EQ(bin, "0x08,0x88,0x4f,0xe5,0x01");
}
TEST(FrameEncoderTests, MixtureOfFrames) {
auto frames = std::vector(
- {
- Frame(0, false, 0, {-0.753234, 0.939525, -0.342255, -0.172317,
- 0.108887, 0.679660, 0.056874, 0.433271, -0.220355,
- 0.17028}),
+ {Frame(0, false, 0,
+ {-0.753234, 0.939525, -0.342255, -0.172317, 0.108887, 0.679660,
+ 0.056874, 0.433271, -0.220355, 0.17028}),
- Frame(38, true, 142.06, {-0.653234, 0.139525, 0.342255, -0.172317,
- 0.108887, 0.679660, 0.056874, 0.433271, -0.220355,
- 0.17028}),
+ Frame(38, true, 142.06,
+ {-0.653234, 0.139525, 0.342255, -0.172317, 0.108887, 0.679660,
+ 0.056874, 0.433271, -0.220355, 0.17028}),
- Frame(38, true, 142.06, {-0.653234, 0.139525, 0.342255, -0.172317,
- 0.108887, 0.679660, 0.056874, 0.433271, -0.220355,
- 0.17028}),
+ Frame(38, true, 142.06,
+ {-0.653234, 0.139525, 0.342255, -0.172317, 0.108887, 0.679660,
+ 0.056874, 0.433271, -0.220355, 0.17028}),
- Frame(38, false, 56.850773, {-0.753234, 0.939525, -0.342255,
- -0.172317, 0.108887, 0.679660, 0.056874, 0.433271,
- -0.220355, 0.17028})
- });
+ Frame(38, false, 56.850773,
+ {-0.753234, 0.939525, -0.342255, -0.172317, 0.108887, 0.679660,
+ 0.056874, 0.433271, -0.220355, 0.17028})});
auto frame_encoder = FrameEncoder(frames);
auto bin = frame_encoder.toHex();
- EXPECT_EQ(bin, "c0,8c,a4,5b,e2,bc,0a,33,92,6e,89,f3,2a,08,88,4f,e5,01");
+ EXPECT_EQ(bin,
+ "0xc0,0x8c,0xa4,0x5b,0xe2,0xbc,0x0a,0x33,0x92,0x6e,0x89,0xf3,"
+ "0x2a,0x08,0x88,0x4f,0xe5,0x01");
}
TEST(FrameEncoderTests, AsciiMixtureOfFrames) {
auto frame_encoder = FrameEncoder();
- frame_encoder.importASCIIFromString("0xc0,0x8c,0xa4,0x5b,0xe2,0xbc,0x0a," \
+ frame_encoder.importASCIIFromString(
+ "0xc0,0x8c,0xa4,0x5b,0xe2,0xbc,0x0a,"
"0x33,0x92,0x6e,0x89,0xf3,0x2a,0x08,0x88,0x4f,0xe5,0x01");
auto bin = frame_encoder.toHex();
- EXPECT_EQ(bin, "c0,8c,a4,5b,e2,bc,0a,33,92,6e,89,f3,2a,08,88,4f,e5,01");
+ EXPECT_EQ(bin,
+ "0xc0,0x8c,0xa4,0x5b,0xe2,0xbc,0x0a,0x33,0x92,0x6e,0x89,0xf3,"
+ "0x2a,0x08,0x88,0x4f,0xe5,0x01");
}
}; // namespace tms_express