Modified Android UI to accept Enroller information
authorlankamadan <lanka.madan@samsung.com>
Fri, 11 Sep 2015 12:30:35 +0000 (21:30 +0900)
committerMadan Lanka <lanka.madan@samsung.com>
Fri, 11 Sep 2015 13:03:27 +0000 (13:03 +0000)
- Added support Enrollee UUID
- Added display of OnBoarded Enrollee Info

Change-Id: I8667a18af5e08e030e994a89f450d65a6c076360
Signed-off-by: lankamadan <lanka.madan@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/2475

15 files changed:
service/easy-setup/sampleapp/android/EasySetup/app/src/main/AndroidManifest.xml [changed mode: 0644->0755]
service/easy-setup/sampleapp/android/EasySetup/app/src/main/java/org/iotivity/service/easysetup/MainActivity.java
service/easy-setup/sampleapp/android/EasySetup/app/src/main/res/layout/activity_main.xml [changed mode: 0644->0755]
service/easy-setup/sampleapp/android/EasySetup/app/src/main/res/values/dimens.xml [changed mode: 0644->0755]
service/easy-setup/sampleapp/android/EasySetup/app/src/main/res/values/strings.xml [changed mode: 0644->0755]
service/easy-setup/sdk/enrollee/arduino/wifi/networkHandler.cpp
service/easy-setup/sdk/mediator/android/EasySetupCore/src/main/java/org/iotivity/service/easysetup/core/EasySetupService.java
service/easy-setup/sdk/mediator/android/EasySetupCore/src/main/java/org/iotivity/service/easysetup/core/EnrolleeDevice.java
service/easy-setup/sdk/mediator/android/EasySetupCore/src/main/java/org/iotivity/service/easysetup/core/IpOnBoardingConnection.java [changed mode: 0644->0755]
service/easy-setup/sdk/mediator/android/EasySetupCore/src/main/java/org/iotivity/service/easysetup/impl/EnrolleeDeviceWiFiOnboarding.java
service/easy-setup/sdk/mediator/android/EasySetupCore/src/main/java/org/iotivity/service/easysetup/mediator/EasySetupManager.java
service/easy-setup/sdk/mediator/android/EasySetupCore/src/main/java/org/iotivity/service/easysetup/mediator/ProvisionEnrollee.java [changed mode: 0644->0755]
service/easy-setup/sdk/mediator/android/EasySetupCore/src/main/java/org/iotivity/service/easysetup/mediator/ip/WiFiSoftAPManager.java
service/easy-setup/sdk/mediator/src/easysetupmgr.cpp [changed mode: 0644->0755]
service/easy-setup/sdk/mediator/src/provisioninghandler.cpp [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index d3e74dd..b2a4e26
@@ -11,6 +11,9 @@
     <uses-feature android:name="android.hardware.camera" android:required="true" />
        <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
        <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
+    <uses-feature android:name="android.permission.CONNECTIVITY_INTERNAL" android:required="true"/>
+
+
 
     <uses-permission android:name="android.permission.CAMERA"/>
 
index 2cb8b8d..bb3f15d 100755 (executable)
@@ -28,10 +28,10 @@ import org.iotivity.service.easysetup.core.EasySetupService;
 import org.iotivity.service.easysetup.core.EasySetupStatus;\r
 import org.iotivity.service.easysetup.core.EnrolleeDevice;\r
 import org.iotivity.service.easysetup.core.EnrolleeState;\r
+import org.iotivity.service.easysetup.core.IpOnBoardingConnection;\r
 import org.iotivity.service.easysetup.impl.EnrolleeDeviceFactory;\r
 import org.iotivity.service.easysetup.impl.WiFiOnBoardingConfig;\r
 import org.iotivity.service.easysetup.impl.WiFiProvConfig;\r
-//import org.iotivity.service.easysetup.mediator.EasySetupManager;\r
 \r
 import android.app.Activity;\r
 import android.content.Intent;\r
@@ -40,6 +40,7 @@ import android.net.wifi.WifiConfiguration;
 import android.os.Bundle;\r
 import android.os.Handler;\r
 import android.os.Message;\r
+import android.util.Log;\r
 import android.view.View;\r
 import android.view.View.OnClickListener;\r
 import android.widget.Button;\r
@@ -57,13 +58,20 @@ public class MainActivity extends Activity {
     public static final int FAILED = 1;\r
     public static final int STATE_CHANGED = 2;\r
 \r
-    private boolean mRunningStatus = false;\r
-\r
     static final int REQUEST_IMAGE_CAPTURE = 1;\r
     ImageView imageView;\r
 \r
     EditText mSsidText;\r
     EditText mPassText;\r
+\r
+    EditText mEnrolleeSsidText;\r
+    EditText mmEnrolleePasswordPassText;\r
+\r
+\r
+    TextView mDeviceIpTextView;\r
+    TextView mDeviceMacTextView;\r
+\r
+\r
     TextView mResultTextView;\r
     ProgressBar mProgressbar;\r
     Button mStartButton;\r
@@ -87,17 +95,25 @@ public class MainActivity extends Activity {
         /* Initialize widgets to get user input for target network's SSID & password*/\r
         mSsidText = (EditText) findViewById(R.id.ssid);\r
         mPassText = (EditText) findViewById(R.id.password);\r
+        mEnrolleeSsidText = (EditText) findViewById(R.id.enrolleeSsid);\r
+        mmEnrolleePasswordPassText = (EditText) findViewById(R.id.enrolleePass);\r
+        mDeviceIpTextView = (TextView) findViewById(R.id.ipAddr);\r
+        mDeviceMacTextView = (TextView) findViewById(R.id.hardAddr);\r
+\r
         mResultTextView = (TextView) findViewById(R.id.status);\r
         mProgressbar = (ProgressBar) findViewById(R.id.progressBar);\r
 \r
 \r
+\r
+\r
        /* Create Easy Setup Service instance*/\r
         mEasySetupService = EasySetupService.getInstance(getApplicationContext(),\r
                 new EasySetupStatus() {\r
 \r
                     @Override\r
                     public void onFinished(final EnrolleeDevice enrolledevice) {\r
-                        mRunningStatus = false;\r
+                        Log.i("MainActivity", "onFinished() is received " + enrolledevice\r
+                                .isSetupSuccessful());\r
                         if (enrolledevice.isSetupSuccessful()) {\r
                             mHandler.sendEmptyMessage(SUCCESS);\r
                         } else {\r
@@ -107,6 +123,7 @@ public class MainActivity extends Activity {
 \r
                     @Override\r
                     public void onProgress(EnrolleeState state) {\r
+                        Log.i("MainActivity", "onProgress() is received ");\r
                         mHandler.sendEmptyMessage(STATE_CHANGED);\r
                     }\r
 \r
@@ -125,7 +142,10 @@ public class MainActivity extends Activity {
 \r
     public WiFiProvConfig getEnrollerWifiConfig() {\r
         /* Provide the credentials for the Mediator Soft AP to be connected by Enrollee*/\r
-        mWiFiProvConfig = new WiFiProvConfig("EasySetup123", "EasySetup123");\r
+        mWiFiProvConfig = new WiFiProvConfig("hub2.4G", "11112222");\r
+        mEnrolleeSsidText.setText("hub2.4G");\r
+        mmEnrolleePasswordPassText.setText("11112222");\r
+\r
         return mWiFiProvConfig;\r
     }\r
 \r
@@ -149,7 +169,10 @@ public class MainActivity extends Activity {
     public void onDestroy() {\r
         super.onDestroy();\r
         /*Reset the Easy setup process*/\r
-        mEasySetupService.finish();\r
+        if(mEasySetupService != null)\r
+        {\r
+            mEasySetupService.finish();\r
+        }\r
     }\r
 \r
     public void addListenerForStartAP() {\r
@@ -160,18 +183,28 @@ public class MainActivity extends Activity {
             public void onClick(View arg0) {\r
                 try {\r
 \r
-                    mRunningStatus = true;\r
                     mProgressbar.setVisibility(View.VISIBLE);\r
                     mProgressbar.setIndeterminate(true);\r
                     mStartButton.setEnabled(false);\r
                     mResultTextView.setText(R.string.running);\r
 \r
+                    //Reset Device information\r
+                    mDeviceIpTextView.setText(R.string.not_available);\r
+                    mDeviceMacTextView.setText(R.string.not_available);\r
+\r
+\r
                     String ssid = mSsidText.getText().toString();\r
                     String password = mPassText.getText().toString();\r
 \r
+                    String enrolleeSsid = mEnrolleeSsidText.getText().toString();\r
+                    String enrolleePassword = mmEnrolleePasswordPassText.getText().toString();\r
+\r
+                    mWiFiProvConfig = new WiFiProvConfig(enrolleeSsid, enrolleePassword);\r
+\r
                     mWiFiOnBoardingConfig.setSSId(ssid);\r
                     mWiFiOnBoardingConfig.setSharedKey(password);\r
 \r
+\r
                     mEasySetupService.startSetup(mDevice);\r
 \r
                     mStopButton.setEnabled(true);\r
@@ -191,7 +224,6 @@ public class MainActivity extends Activity {
         mStopButton.setOnClickListener(new OnClickListener() {\r
             @Override\r
             public void onClick(View arg0) {\r
-                mRunningStatus = false;\r
                 mStartButton.setEnabled(true);\r
                 mStopButton.setEnabled(false);\r
                 mResultTextView.setText(R.string.stopped);\r
@@ -215,9 +247,6 @@ public class MainActivity extends Activity {
         @Override\r
         public void handleMessage(Message msg) {\r
 \r
-            // Returns if Test is stopped, this has to be handled in EasySetupService\r
-            if (!mRunningStatus) return;\r
-\r
             switch (msg.what) {\r
                 case SUCCESS: {\r
 \r
@@ -227,6 +256,13 @@ public class MainActivity extends Activity {
                     mProgressbar.setVisibility(View.INVISIBLE);\r
                     String resultMsg = "Device configured successfully";\r
                     mResultTextView.setText(R.string.success);\r
+\r
+                    /* Update device information on the Ui */\r
+                    IpOnBoardingConnection connection = (IpOnBoardingConnection) mDevice\r
+                            .getConnection();\r
+                    mDeviceIpTextView.setText(connection.getIp());\r
+                    mDeviceMacTextView.setText(connection.getHardwareAddress());\r
+\r
                     Toast.makeText(getApplicationContext(), resultMsg, Toast.LENGTH_SHORT).show();\r
                     break;\r
                 }\r
old mode 100644 (file)
new mode 100755 (executable)
index 4261ae9..4c2e087
@@ -23,7 +23,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
-        android:layout_marginTop="20dp"
+        android:layout_marginTop="5dp"
         android:orientation="horizontal">
 
 
@@ -35,7 +35,7 @@
             android:layout_marginRight="20dp"
             android:elegantTextHeight="true"
             android:text="@string/test_status"
-            android:textSize="20sp" />
+            android:textSize="15sp" />
 
         <TextView
             android:id="@+id/status"
             android:layout_height="wrap_content"
             android:layout_marginLeft="10dp"
             android:layout_marginRight="30dp"
-            android:layout_marginTop="5dp"
             android:text="@string/not_started"
             android:textColor="@android:color/background_light"
-            android:textSize="30dp" />
+            android:textSize="20dp" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_gravity="center"
+        android:layout_marginTop="10dp"
+        android:orientation="vertical">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Enter Enroller's SSID" />
+
+
+        <EditText
+            android:id="@+id/enrolleeSsid"
+            android:layout_width="250dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal" />
+
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:text="Enter Enroller's Password" />
+
+
+        <EditText
+            android:id="@+id/enrolleePass"
+            android:layout_width="250dp"
+            android:layout_height="wrap_content"
+
+            android:layout_gravity="center_horizontal" />
 
     </LinearLayout>
 
+
     <LinearLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
         android:layout_gravity="center"
-        android:layout_marginTop="50dp"
+        android:layout_marginTop="10dp"
         android:orientation="vertical">
 
         <TextView
             android:id="@+id/textView"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="Enter SSID" />
+            android:text="Enter SoftAP SSID" />
 
 
         <EditText
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="10dp"
-            android:text="Enter Password" />
+            android:text="Enter SoftAP PWD" />
 
 
         <EditText
             android:id="@+id/password"
             android:layout_width="250dp"
             android:layout_height="wrap_content"
-
             android:layout_gravity="center_horizontal" />
 
     </LinearLayout>
 
 
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="5dp"
+        android:text="Device information"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_gravity="center"
+        android:layout_marginTop="10dp"
+        android:orientation="vertical">
+
+
+        <TextView
+            android:id="@+id/ipAddrLable"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:text="IP Address"
+            android:textAppearance="?android:attr/textAppearanceSmall" />
+
+        <TextView
+            android:id="@+id/ipAddr"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_toRightOf="@id/ipAddrLable"
+            android:text="@string/not_available"
+
+            android:textAppearance="?android:attr/textAppearanceSmall" />
+
+
+        <TextView
+            android:id="@+id/hardAddrLable"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/ipAddrLable"
+            android:layout_gravity="center_horizontal"
+            android:text="MAC Address"
+            android:textAppearance="?android:attr/textAppearanceSmall" />
+
+        <TextView
+            android:id="@+id/hardAddr"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/ipAddr"
+            android:layout_gravity="center_horizontal"
+            android:layout_toRightOf="@id/hardAddrLable"
+            android:text="@string/not_available"
+            android:textAppearance="?android:attr/textAppearanceSmall" />
+
+
+    </RelativeLayout>
+
+
     <LinearLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
             android:layout_centerHorizontal="true"
             android:layout_margin="10dp"
             android:elegantTextHeight="true"
+            android:enabled="false"
             android:text="@string/stopSetup"
             android:textAllCaps="false"
-            android:textSize="18sp"
-            android:enabled="false"/>
+            android:textSize="18sp" />
 
     </LinearLayout>
 
-
 </LinearLayout>
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index 55c1e59..ab91646
@@ -2,6 +2,6 @@
 
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name="activity_horizontal_margin">16dp</dimen>
-    <dimen name="activity_vertical_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">1dp</dimen>
 
 </resources>
old mode 100644 (file)
new mode 100755 (executable)
index 832b7b4..8383bac
     <string name="success">Successful</string>
     <string name="failed">Failed</string>
     <string name="not_started">Not started</string>
-    <string name="test_status">Status</string>
+    <string name="test_status">Device configuration</string>
     <string name="running">Running</string>
     <string name="stopped">Stopped</string>
+    <string name="not_available">Not available</string>
+
 
 </resources>
index f712c08..e639c1a 100755 (executable)
@@ -57,6 +57,8 @@ ESResult ConnectToWiFiNetwork(const char *ssid, const char *pass, NetworkEventCa
         //return ES_ERROR;
     }
 
+    OC_LOG_V(INFO, TAG, PCF("Finding SSID: %s"), ssid);
+
     while (findNetwork(ssid) == 0) // found
     {
         delay(1000);
index 52f34ed..e0ed145 100755 (executable)
 package org.iotivity.service.easysetup.core;\r
 \r
 import android.content.Context;\r
+import android.util.Log;\r
 \r
 import org.iotivity.service.easysetup.impl.EnrolleeDeviceFactory;\r
 import org.iotivity.service.easysetup.mediator.EasySetupManager;\r
+import org.iotivity.service.easysetup.mediator.ProvisionEnrollee;\r
 \r
 import java.io.IOException;\r
 import java.util.ArrayList;\r
@@ -39,6 +41,8 @@ import java.util.ArrayList;
  */\r
 public class EasySetupService {\r
 \r
+    public static String TAG = EasySetupService.class.getName();\r
+\r
     private static EasySetupService sInstance;\r
 \r
     private final EasySetupStatus mCallback;\r
@@ -51,15 +55,14 @@ public class EasySetupService {
 \r
     public EnrolleeDeviceFactory mDeviceFactory;\r
 \r
+    ProvisionEnrollee mProvisionEnrolleeInstance;\r
+\r
     private EasySetupService(EasySetupStatus callback) {\r
         mCallback = callback;\r
         mProvisioningCallback = new ProvisioningCallbackImpl(mCallback);\r
         mEnrolleeDeviceList = new ArrayList<EnrolleeDevice>();\r
         mContext = null;\r
         mDeviceFactory = null;\r
-\r
-        //Native Api call to initialize the OIC stack\r
-        EasySetupManager.getInstance().initEasySetup();\r
     }\r
 \r
     /**\r
@@ -84,7 +87,10 @@ public class EasySetupService {
 \r
     public void finish() {\r
         //Native Api call to reset OIC stack\r
-        EasySetupManager.getInstance().terminateEasySetup();\r
+        if(mProvisionEnrolleeInstance != null)\r
+        {\r
+            mProvisionEnrolleeInstance.stopEnrolleeProvisioning(0);\r
+        }\r
     }\r
 \r
     /**\r
@@ -109,7 +115,9 @@ public class EasySetupService {
             @Override\r
             public void onFinished(OnBoardingConnection connection) {\r
                 if (connection.isConnected()) {\r
+                    Log.i(TAG, "On boarding is successful ");\r
                     try {\r
+                        Log.i(TAG, "waiting for 15 seconds to start provisioning");\r
                         Thread.sleep(15000);//Sleep for allowing thin device to start the services\r
                     } catch (InterruptedException e) {\r
                         e.printStackTrace();\r
@@ -157,8 +165,9 @@ public class EasySetupService {
         @Override\r
         public void onFinished(EnrolleeDevice enrolledevice) {\r
             //if(mEnrolleeDeviceList.contains(enrolledevice)) {\r
+            Log.i(TAG, "onFinished() is received " + enrolledevice.isSetupSuccessful());\r
             mCallback.onFinished(enrolledevice);\r
-            //}\r
+            // }\r
         }\r
 \r
     }\r
index be915c2..536dd34 100755 (executable)
@@ -87,6 +87,8 @@ public abstract class EnrolleeDevice {
         mConnection = conn;\r
     }\r
 \r
+    public OnBoardingConnection getConnection() { return mConnection;}\r
+\r
 \r
     /**\r
      * This method is called back by Easy setup service if on boarding needs to be done.\r
@@ -146,4 +148,6 @@ public abstract class EnrolleeDevice {
         return (mState == EnrolleeState.DEVICE_PROVISIONING_STATE) ? true : false;\r
     }\r
 \r
+\r
+\r
 }\r
old mode 100644 (file)
new mode 100755 (executable)
index 162a116..a0f8d30
@@ -26,6 +26,26 @@ public class IpOnBoardingConnection implements OnBoardingConnection {
 \r
     private boolean mIsConnected;\r
     private String mIp;\r
+    private String mHardwareAddress;\r
+    private String mDeviceName;\r
+\r
+    private boolean isReachable;\r
+\r
+    public void setHardwareAddress(String address) {\r
+        mHardwareAddress = address;\r
+    }\r
+\r
+    public String getHardwareAddress() {\r
+        return mHardwareAddress;\r
+    }\r
+\r
+    public void setDeviceName(String name) {\r
+        mDeviceName = name;\r
+    }\r
+\r
+    public String getDeviceName() {\r
+        return mDeviceName;\r
+    }\r
 \r
     public void setConnectivity(boolean connected) {\r
         mIsConnected = connected;\r
index 3dffae9..e985571 100755 (executable)
@@ -1,22 +1,22 @@
 /**\r
  * ***************************************************************\r
- * <p/>\r
+ * <p>\r
  * Copyright 2015 Samsung Electronics All Rights Reserved.\r
- * <p/>\r
- * <p/>\r
- * <p/>\r
+ * <p>\r
+ * <p>\r
+ * <p>\r
  * Licensed under the Apache License, Version 2.0 (the "License");\r
  * you may not use this file except in compliance with the License.\r
  * You may obtain a copy of the License at\r
- * <p/>\r
+ * <p>\r
  * http://www.apache.org/licenses/LICENSE-2.0\r
- * <p/>\r
+ * <p>\r
  * Unless required by applicable law or agreed to in writing, software\r
  * distributed under the License is distributed on an "AS IS" BASIS,\r
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
  * See the License for the specific language governing permissions and\r
  * limitations under the License.\r
- * <p/>\r
+ * <p>\r
  * ****************************************************************\r
  */\r
 \r
@@ -31,6 +31,7 @@ import org.iotivity.service.easysetup.core.EnrolleeState;
 import org.iotivity.service.easysetup.core.IpOnBoardingConnection;\r
 import org.iotivity.service.easysetup.core.OnBoardingConfig;\r
 import org.iotivity.service.easysetup.core.ProvisioningConfig;\r
+import org.iotivity.service.easysetup.mediator.EasySetupCallbackHandler;\r
 import org.iotivity.service.easysetup.mediator.EasySetupManager;\r
 import org.iotivity.service.easysetup.mediator.EnrolleeInfo;\r
 import org.iotivity.service.easysetup.mediator.IOnBoardingStatus;\r
@@ -54,43 +55,51 @@ public class EnrolleeDeviceWiFiOnboarding extends EnrolleeDevice {
     EnrolleeInfo connectedDevice;\r
     private EasySetupManager easySetupManagerNativeInstance;\r
     ProvisionEnrollee provisionEnrolleInstance;\r
-\r
-    // Native Api to start provisioning process after successful on-boarding on Wifi AP.\r
-    // Library is already loaded while constructing EasySetupService\r
-    private native void ProvisionEnrollee(String ipAddress, String netSSID,\r
-                                          String netPWD, int connectivityType);\r
+    Timer myTimer;\r
 \r
     IOnBoardingStatus deviceScanListener = new IOnBoardingStatus() {\r
 \r
         @Override\r
         public void deviceOnBoardingStatus(EnrolleeInfo enrolleStatus) {\r
             Log.d("ESSoftAPOnBoarding", "Entered");\r
-            if (enrolleStatus != null && enrolleStatus.getIpAddr() != null) {\r
-                String finalResult = "Easy Connect : ";\r
+            if (mState == EnrolleeState.DEVICE_ON_BOARDING_STATE) {\r
+                Log.d("ESSoftAPOnBoarding", "Device in OnBoarding State");\r
+                if (enrolleStatus != null && enrolleStatus.getIpAddr() != null) {\r
+                    String finalResult = "Easy Connect : ";\r
+\r
+                    if (enrolleStatus.isReachable()) {\r
+                        finalResult = "Device OnBoarded" + "["\r
+                                + enrolleStatus.getIpAddr() + "]";\r
 \r
-                if (enrolleStatus.isReachable()) {\r
-                    finalResult = "Device OnBoarded" + "["\r
-                            + enrolleStatus.getIpAddr() + "]";\r
+                        connectedDevice = enrolleStatus;\r
+                        IpOnBoardingConnection conn = new IpOnBoardingConnection();\r
 \r
-                    connectedDevice = enrolleStatus;\r
-                    IpOnBoardingConnection conn = new IpOnBoardingConnection();\r
-                    conn.setConnectivity(true);\r
-                    conn.setIp(connectedDevice.getIpAddr());\r
-                    Log.d("ESSoftAPOnBoarding", "Entered");\r
-                    mOnBoardingCallback.onFinished(conn);\r
-                    return;\r
+                        conn.setConnectivity(true);\r
+                        conn.setIp(connectedDevice.getIpAddr());\r
+                        conn.setHardwareAddress(enrolleStatus.getHWAddr());\r
+                        conn.setDeviceName(enrolleStatus.getDevice());\r
 \r
+                        Log.d("ESSoftAPOnBoarding", "Entered");\r
+                        mOnBoardingCallback.onFinished(conn);\r
+                        return;\r
+\r
+                    }\r
                 }\r
-            }\r
 \r
-            IpOnBoardingConnection conn = new IpOnBoardingConnection();\r
-            conn.setConnectivity(false);\r
-            mOnBoardingCallback.onFinished(conn);\r
+                IpOnBoardingConnection conn = new IpOnBoardingConnection();\r
+                conn.setConnectivity(false);\r
+                mOnBoardingCallback.onFinished(conn);\r
+            }\r
+            else\r
+            {\r
+                Log.e("ESSoftAPOnBoarding", "Device NOT in OnBoarding State. Ignoring the event");\r
+            }\r
         }\r
     };\r
 \r
 \r
-    protected EnrolleeDeviceWiFiOnboarding(Context context, OnBoardingConfig onBoardingConfig, ProvisioningConfig provConfig) {\r
+    protected EnrolleeDeviceWiFiOnboarding(Context context, OnBoardingConfig onBoardingConfig,\r
+                                           ProvisioningConfig provConfig) {\r
         super(onBoardingConfig, provConfig);\r
         mContext = context;\r
         mWifiSoftAPManager = new WiFiSoftAPManager(mContext);\r
@@ -98,14 +107,16 @@ public class EnrolleeDeviceWiFiOnboarding extends EnrolleeDevice {
 \r
     @Override\r
     protected void startOnBoardingProcess() {\r
-        Log.i(TAG, "Starging on boarding process");\r
+        Log.i(TAG, "Starting on boarding process");\r
 \r
         //1. Create Soft AP\r
-        boolean status = mWifiSoftAPManager.setWifiApEnabled((WifiConfiguration) mOnBoardingConfig.getConfig(), true);\r
+        boolean status = mWifiSoftAPManager.setWifiApEnabled((WifiConfiguration)\r
+                mOnBoardingConfig.getConfig(), true);\r
+\r
+        mState = EnrolleeState.DEVICE_ON_BOARDING_STATE;\r
 \r
         Log.i(TAG, "Soft AP is created with status " + status);\r
 \r
-        Timer myTimer;\r
         myTimer = new Timer();\r
         myTimer.schedule(new TimerTask() {\r
             @Override\r
@@ -119,12 +130,14 @@ public class EnrolleeDeviceWiFiOnboarding extends EnrolleeDevice {
 \r
     protected void stopOnBoardingProcess() {\r
         Log.i(TAG, "Stopping on boarding process");\r
+        myTimer.cancel();\r
         boolean status = mWifiSoftAPManager.setWifiApEnabled(null, false);\r
         Log.i(TAG, "Soft AP is disabled with status " + status);\r
     }\r
 \r
     @Override\r
     protected void startProvisioningProcess(OnBoardingConnection conn) {\r
+        mState = EnrolleeState.DEVICE_PROVISIONING_STATE;\r
 \r
         if (mProvConfig.getConnType() == ProvisioningConfig.ConnType.WiFi) {\r
 \r
@@ -132,7 +145,11 @@ public class EnrolleeDeviceWiFiOnboarding extends EnrolleeDevice {
             provisionEnrolleInstance.registerProvisioningHandler(new IProvisioningListener() {\r
                 @Override\r
                 public void onFinishProvisioning(int statuscode) {\r
-                    mState = (statuscode == 0) ? EnrolleeState.DEVICE_PROVISIONING_SUCCESS_STATE : EnrolleeState.DEVICE_PROVISIONING_FAILED_STATE;\r
+\r
+                    Log.i(TAG, "Provisioning is finished with status code " + statuscode);\r
+                    mState = (statuscode == 0) ? EnrolleeState.DEVICE_PROVISIONING_SUCCESS_STATE\r
+                            : EnrolleeState.DEVICE_PROVISIONING_FAILED_STATE;\r
+                    stopOnBoardingProcess();\r
                     mProvisioningCallback.onFinished(EnrolleeDeviceWiFiOnboarding.this);\r
                 }\r
             });\r
@@ -140,12 +157,13 @@ public class EnrolleeDeviceWiFiOnboarding extends EnrolleeDevice {
             IpOnBoardingConnection connection = (IpOnBoardingConnection) conn;\r
             WiFiProvConfig wifiProvConfig = (WiFiProvConfig) mProvConfig;\r
 \r
-            // Native Api call to start provisioning of the enrolling device\r
-            EasySetupManager.getInstance().provisionEnrollee(connection.getIp(), wifiProvConfig.getSsId(), wifiProvConfig.getPassword(), mOnBoardingConfig.getConnType().getValue());\r
+            easySetupManagerNativeInstance = EasySetupManager.getInstance();\r
+            easySetupManagerNativeInstance.initEasySetup();\r
 \r
+            // Native Api call to start provisioning of the enrolling device\r
+            easySetupManagerNativeInstance.provisionEnrollee(connection.getIp(), wifiProvConfig\r
+                    .getSsId(), wifiProvConfig.getPassword(), mOnBoardingConfig.getConnType()\r
+                    .getValue());\r
         }\r
-\r
     }\r
-\r
-\r
 }\r
index dd4c33b..3d9ea43 100755 (executable)
@@ -23,7 +23,7 @@ package org.iotivity.service.easysetup.mediator;
 \r
 import android.content.Context;\r
 \r
-//import org.iotivity.ca.CaInterface;\r
+import org.iotivity.ca.CaInterface;\r
 \r
 public class EasySetupManager {\r
     private native void InitEasySetup();\r
@@ -73,7 +73,7 @@ public class EasySetupManager {
     }\r
 \r
     public void initEasySetup() {\r
-        // CaInterface.initialize(appContext);\r
+        CaInterface.initialize(appContext);\r
         InitEasySetup();\r
     }\r
 \r
old mode 100644 (file)
new mode 100755 (executable)
index 30d7a07..794ad73
@@ -48,18 +48,20 @@ public class ProvisionEnrollee {
 \r
     public void provisionEnrollee(String ipAddress, String netSSID,\r
                                   String netPWD, int connectivityType) {\r
+        Log.i(TAG, "JNI start provisioning is called ");\r
         easySetupManagerNativeInstance.provisionEnrollee(ipAddress, netSSID,\r
                 netPWD, connectivityType);\r
     }\r
 \r
     public void stopEnrolleeProvisioning(int connectivityType) {\r
+        Log.i(TAG, "JNI stop provisioning is called ");\r
         easySetupManagerNativeInstance\r
                 .stopEnrolleeProvisioning(connectivityType);\r
     }\r
 \r
     public void ProvisioningStatusCallBack(int statuscode) {\r
         Log.d(TAG,\r
-                "onFinishProvisioning() inside Android Java application. statuscode - "\r
+                "JNI onFinishProvisioning() inside Android Java application. statuscode - "\r
                         + statuscode);\r
         this.provisioningListener.onFinishProvisioning(statuscode);\r
     }\r
@@ -69,5 +71,6 @@ public class ProvisionEnrollee {
         this.provisioningListener = provisioningListener;\r
         EasySetupCallbackHandler.getInstance()\r
                 .registerProvisioningHandler(this);\r
+        Log.i(TAG, "JNI Callback is registered for getting provisioning status");\r
     }\r
 }\r
index cbd7cfa..f517b69 100755 (executable)
@@ -49,6 +49,7 @@ import org.iotivity.service.easysetup.mediator.IOnBoardingStatus;
  * </p>
  */
 public class WiFiSoftAPManager {
+    private static final String TAG = WiFiSoftAPManager.class.getName();
     private final WifiManager mWifiManager;
     private Context context;
     static ArrayList<EnrolleeOnBoardingInfo> appNotification =
@@ -183,6 +184,7 @@ public class WiFiSoftAPManager {
     public boolean setWifiApEnabled(WifiConfiguration wifiConfig,
                                     boolean enabled) {
         try {
+            appNotification.clear();
             // Stopping Wi-Fi mode
             if (enabled) {
                 mWifiManager.setWifiEnabled(false);
@@ -257,6 +259,7 @@ public class WiFiSoftAPManager {
         this.finishListener = finishListener;
         Runnable runnable = new Runnable() {
             public void run() {
+                Log.i(TAG, "Scanning enrolling device in the network" );
 
                 BufferedReader bufferedReader = null;
 
@@ -320,6 +323,7 @@ public class WiFiSoftAPManager {
 
     void NotifyApplication(final EnrolleeInfo result) {
         // Get a handler that can be used to post to the main thread
+/*
         Handler mainHandler = new Handler(context.getMainLooper());
         Runnable myRunnable = new Runnable() {
             @Override
@@ -328,5 +332,9 @@ public class WiFiSoftAPManager {
             }
         };
         mainHandler.post(myRunnable);
+*/
+        Log.i(TAG, "Scanning is finished with result, IP : " +  result.getIpAddr() + "Notifying to Application");
+        finishListener.deviceOnBoardingStatus(result);
+
     }
 }
old mode 100644 (file)
new mode 100755 (executable)
index 7f29ab9..fbe5bb4
@@ -33,8 +33,8 @@ char ipv4addr[IPV4_ADDR_SIZE] = { 0 };
 static OCProvisioningStatusCB cbData = NULL;
 
 OCStackResult InitEasySetupManager() {
-       
-       
+
+
     OCStackResult result = OC_STACK_ERROR;
 
     if (InitProvisioningHandler() == OC_STACK_OK) {
@@ -78,7 +78,7 @@ void UnRegisterProvisioningStausCallback() {
 
 OCStackResult ProvisionEnrollee(const EnrolleeNWProvInfo_t *netInfo)
 {
-       return StartProvisioningProcess(netInfo, cbData);
+    return StartProvisioningProcess(netInfo, cbData);
 }
 
 OCStackResult StopEnrolleeProvisioning(OCConnectivityType connectivityType) {
old mode 100644 (file)
new mode 100755 (executable)
index 1e3b235..52fc9e3
@@ -54,6 +54,7 @@ void ErrorCallback(ProvStatus status)
 {
     ProvisioningInfo *provInfo = GetCallbackObjectOnError(status);
     cbData(provInfo);
+    ResetProgress();
 }
 
 OCStackResult InitProvisioningHandler()
@@ -95,6 +96,9 @@ OCStackResult InitProvisioningHandler()
         ca_cond_free(g_provisioningCond);
         return OC_STACK_ERROR;
     }
+
+    ResetProgress();
+
     return OC_STACK_OK;
 }
 
@@ -727,6 +731,7 @@ void SuccessCallback(OCClientResponse * clientResponse)
 {
     ProvisioningInfo *provInfo = GetCallbackObjectOnSuccess(clientResponse, DEVICE_PROVISIONED);
     cbData(provInfo);
+    ResetProgress();
 }
 
 bool ClearMemory()