/**\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
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
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
\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
\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
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
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