WPS fixes and refactor

- Allow IP and proxy set up for WPS
- Use string for WPS pin to avoid losing leading zeros
- Add a seperate WPS state machine and WpsConfiguration class

Change-Id: I87f43fff8bba0ae8ff02e5fc495a8bc628a8c8cf
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java
index 7f81a25..07813b0 100644
--- a/services/java/com/android/server/WifiService.java
+++ b/services/java/com/android/server/WifiService.java
@@ -39,6 +39,7 @@
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.SupplicantState;
 import android.net.wifi.WifiConfiguration.KeyMgmt;
+import android.net.wifi.WpsConfiguration;
 import android.net.ConnectivityManager;
 import android.net.InterfaceConfiguration;
 import android.net.DhcpInfo;
@@ -843,23 +844,13 @@
         mWifiStateMachine.forgetNetwork(netId);
     }
 
-    public void startWpsPbc(String bssid) {
-        enforceChangePermission();
-        mWifiStateMachine.startWpsPbc(bssid);
-    }
-
-    public void startWpsWithPinFromAccessPoint(String bssid, int apPin) {
-        enforceChangePermission();
-        mWifiStateMachine.startWpsWithPinFromAccessPoint(bssid, apPin);
-    }
-
-    public int startWpsWithPinFromDevice(String bssid) {
+    public String startWps(WpsConfiguration config) {
         enforceChangePermission();
         if (mChannel != null) {
-            return mWifiStateMachine.syncStartWpsWithPinFromDevice(mChannel, bssid);
+            return mWifiStateMachine.startWps(mChannel, config);
         } else {
             Slog.e(TAG, "mChannel is not initialized");
-            return -1;
+            return "";
         }
     }