[Feature]add MT2731_MP2_MR2_SVN388 baseline version
Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/connectivity/wifitesttool/wifi_hw_test_tool/lib.c b/src/connectivity/wifitesttool/wifi_hw_test_tool/lib.c
new file mode 100644
index 0000000..37abb9c
--- /dev/null
+++ b/src/connectivity/wifitesttool/wifi_hw_test_tool/lib.c
@@ -0,0 +1,114 @@
+// Converts a hexadecimal string to integer
+// 0 - Conversion is successful
+// 1 - String is empty
+// 2 - String has more than 8 bytes
+// 4 - Conversion is in process but abnormally terminated by
+// illegal hexadecimal character
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+int xtoi(const char* xs, unsigned int* result)
+{
+ size_t szlen = strlen(xs);
+ int i, xv, fact;
+
+ if(szlen >= 2) {
+ /* filter out 0x prefix */
+ if(xs[0] == '0' && (xs[1] == 'x' || xs[1] == 'X')) {
+ xs += 2;
+ szlen -= 2;
+ }
+ }
+
+ if (szlen > 0)
+ {
+
+ //Converting more than 32bit hexadecimal value?
+ if (szlen > 8)
+ return 2;
+
+ // Begin conversion here
+ *result = 0;
+ fact = 1;
+
+ for(i=szlen-1; i>=0 ;i--)
+ {
+ if (isxdigit(*(xs+i)))
+ {
+ if (*(xs+i)>=97)
+ {
+ xv = ( *(xs+i) - 97) + 10;
+ }
+ else if ( *(xs+i) >= 65)
+ {
+ xv = (*(xs+i) - 65) + 10;
+ }
+ else
+ {
+ xv = *(xs+i) - 48;
+ }
+ *result += (xv * fact);
+ fact *= 16;
+ }
+ else
+ {
+ return 4;
+ }
+ }
+ }
+ return 1;
+}
+
+
+int xtoAddrptr(const char* xs, unsigned char* ptr)
+{
+ size_t szlen = strlen(xs);
+ unsigned int i, xv, res;
+
+ if (szlen != 12)
+ return 0;
+
+ for (i=0 ;i<szlen; i+=2)
+ {
+ res = 0;
+ if (isxdigit(*(xs+i)) && isxdigit(*(xs+i+1)))
+ {
+ if (*(xs+i)>=97)
+ {
+ xv = ( *(xs+i) - 97) + 10;
+ }
+ else if ( *(xs+i) >= 65)
+ {
+ xv = (*(xs+i) - 65) + 10;
+ }
+ else
+ {
+ xv = *(xs+i) - 48;
+ }
+ res += xv << 4;
+
+ if (*(xs+i+1)>=97)
+ {
+ xv = ( *(xs+i+1) - 97) + 10;
+ }
+ else if ( *(xs+i+1) >= 65)
+ {
+ xv = (*(xs+i+1) - 65) + 10;
+ }
+ else
+ {
+ xv = *(xs+i+1) - 48;
+ }
+ res += xv;
+ *(ptr+(i>>1)) = res;
+ }
+ }
+ return 1;
+}
+
+
+