Utility library for MTS Socket Modem Arduino Shield devices from Multi-Tech Systems

Dependents:   mtsas mtsas thermostat_fan_demo--fan mtsas ... more

NOTE: MTS-Utils has moved to GitHub. This version will not be updated. For updates, go to the GitHub version.

Revision:
15:ae12624eb600
Parent:
14:1d88cf5266c8
--- a/MTSText.cpp	Wed Sep 09 11:59:59 2015 -0500
+++ b/MTSText.cpp	Tue Mar 21 15:26:50 2017 -0500
@@ -69,24 +69,34 @@
     return std::string(buff);
 }
 
-std::string Text::bin2hexString(const std::vector<uint8_t>& data, const char* delim, bool leadingZeros) {
-    uint8_t data_arr[data.size()];
+std::string Text::bin2hexString(const std::vector<uint8_t>& data, const char* delim, bool leadingZeros, bool bytePadding) {
+    std::string ret;
+    uint8_t *data_arr = new uint8_t[data.size()];
 
-    for (int i = 0; i < data.size(); i++)
+    for (size_t i = 0; i < data.size(); i++)
         data_arr[i] = data[i];
 
-    return bin2hexString(data_arr, data.size(), delim, leadingZeros);
+    ret = bin2hexString(data_arr, data.size(), delim, leadingZeros, bytePadding);
+
+    delete[] data_arr;
+
+    return ret;
 }
 
-std::string Text::bin2hexString(const uint8_t* data, const uint32_t len, const char* delim, bool leadingZeros) {
+std::string Text::bin2hexString(const uint8_t* data, const uint32_t len, const char* delim, bool leadingZeros, bool bytePadding) {
     std::string str;
-    char buf[32];
     char lead[] = "0x";
+    char buf[5];
 
     for (uint32_t i = 0; i < len; i++) {
         if (leadingZeros)
             str.append(lead);
-        snprintf(buf, sizeof(buf), "%02x", data[i]);
+
+        if (bytePadding)
+            snprintf(buf, sizeof(buf), "%02x", data[i]);
+        else
+            snprintf(buf, sizeof(buf), "%x", data[i]);
+
         str.append(buf, strlen(buf));
         if (i < len - 1)
             str.append(delim);