[rdkb][common][app][Add wifi-test-tool support setting mac address]

[Description]
Add wifi-test-tool support setting mac address

[Release-log]

Change-Id: Ia637061cf62dd1dd11fb4afb0d17cd5373766f03
diff --git a/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.c b/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.c
index 385ba78..ca2951c 100644
--- a/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.c
+++ b/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.c
@@ -211,6 +211,11 @@
     strncpy(intf_param->macfilter, macfilter, 10);
 }
 
+void set_macaddr(wifi_intf_param *intf_param, char *macaddr)
+{
+    strncpy(intf_param->mac_address, macaddr, 20);
+}
+
 void set_maclist(wifi_intf_param *intf_param, char *maclist)
 {
     strncpy(intf_param->maclist, maclist, 512);
@@ -332,7 +337,7 @@
     intf_param->hidden = strtol(hidden, NULL, 10);
 }
 
-int set_interface_bssid(int phy_index, int offset, mac_address_t *bssid)
+int set_interface_bssid(int phy_index, int offset, mac_address_t *bssid, char *setmacaddr)
 {
     FILE *f;
     char mac_file[64] = {0};
@@ -345,7 +350,10 @@
     fgets(mac_address, 20, f);
     fclose(f);
 
-    mac_addr_aton(&(*bssid)[0], mac_address);
+    if (strlen(setmacaddr) > 0)
+        mac_addr_aton(&(*bssid)[0], setmacaddr);
+    else
+        mac_addr_aton(&(*bssid)[0], mac_address);
     (*bssid)[0] += offset*2;
     return 0;
 }
@@ -524,7 +532,7 @@
     vap_info = map->vap_array[vap_index_in_map];
     vap_info.u.bss_info.enabled = TRUE;
     phy_index = radio_index_to_phy(vap_info.radio_index);
-    if (set_interface_bssid(single_wiphy ? vap_info.radio_index : phy_index, ap_param.mac_offset, &vap_info.u.bss_info.bssid) == -1) {
+    if (set_interface_bssid(single_wiphy ? vap_info.radio_index : phy_index, ap_param.mac_offset, &vap_info.u.bss_info.bssid, ap_param.mac_address) == -1) {
         fprintf(stderr, "Get mac address failed.\n");
         return;
     }
@@ -638,7 +646,7 @@
     sta = calloc(1, sizeof(wifi_sta_network_t));
 
     phy_index = radio_index_to_phy(sta_param.radio_index);
-    set_interface_bssid(single_wiphy ? sta_param.radio_index : phy_index, sta_param.mac_offset, &sta_mac);
+    set_interface_bssid(single_wiphy ? sta_param.radio_index : phy_index, sta_param.mac_offset, &sta_mac, sta_param.mac_address);
     mac_addr_ntoa(sta_mac_str, sta_mac);
     snprintf(sta->ssid, 31, "%s", sta_param.ssid);
     sta->ssid[31] = '\0';
@@ -992,6 +1000,8 @@
                     set_wps_state(&intf_param, op->v.string);
                 }else if (strcmp(op->e.name, "wps_pushbutton") == 0){
                     set_wps_pushbutton(&intf_param, op->v.string);
+                }else if (strcmp(op->e.name, "macaddr") == 0){
+                    set_macaddr(&intf_param, op->v.string);
                 }else{
                     fprintf(stderr, "[%s %s not set!]\n", op->e.name, op->v.string);
                 }
diff --git a/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.h b/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.h
index b81c86f..c0971d5 100644
--- a/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.h
+++ b/recipes-wifi/wifi-test-tool/files/src/wifi-test-tool.h
@@ -69,6 +69,7 @@
     bool wps_pushbutton;
     char macfilter[10];
     char maclist[512];
+    char mac_address[20];
 } wifi_intf_param;
 
 struct params