1 package org.iotivity.service.easysetup.core;
3 import android.content.Context;
4 import android.util.Log;
6 import org.iotivity.service.easysetup.impl.EnrolleeDeviceFactory;
8 import java.io.IOException;
9 import java.util.ArrayList;
11 public class EasySetupService {
13 private static EasySetupService sInstance ;
15 private final EasySetupStatus mCallback;
17 private ArrayList<EnrolleeDevice>mEnrolleeDeviceList;
19 private final ProvisioningCallback mProvisioningCallback;
21 private static Context mContext;
23 public EnrolleeDeviceFactory mDeviceFactory;
26 private EasySetupService(EasySetupStatus callback) {
28 mProvisioningCallback = new ProvisioningCallbackImpl(mCallback);
29 mEnrolleeDeviceList = new ArrayList<EnrolleeDevice> ();
31 mDeviceFactory = null;
34 // TODO : Implement singleton method
35 public synchronized static EasySetupService getInstance(Context context, EasySetupStatus callback) {
36 if(sInstance == null) {
37 sInstance = new EasySetupService(callback);
43 public synchronized void startSetup (final EnrolleeDevice enrolledevice) throws IOException{
45 mEnrolleeDeviceList.add(enrolledevice);
47 // Starts the provisioning directly if the device is already on boarded on the network.
48 if(enrolledevice.onBoarded()) {
49 enrolledevice.startProvisioning(mProvisioningCallback);
53 enrolledevice.startOnBoarding(new OnBoardingCallback() {
56 public void onFinished(ConnectionInterface connection) {
57 if(connection.isConnected()) {
59 Thread.sleep(15000);//Sleep for allowing thin device to start the services
60 } catch (InterruptedException e) {
64 // Start provisioning here
65 enrolledevice.setConnection(connection);
66 enrolledevice.startProvisioning(mProvisioningCallback);
68 enrolledevice.mState = EnrolleeState.DEVICE_PROVISIONING_FAILED_STATE;
69 mProvisioningCallback.onFinished(enrolledevice);
78 public synchronized void stopSetup (EnrolleeDevice enrolledevice) {
79 enrolledevice.stopOnBoardingProcess();
80 mEnrolleeDeviceList.remove(enrolledevice);
83 public synchronized void getEnrolleeDevice (OnBoardingConfig connType) {
84 mDeviceFactory = EnrolleeDeviceFactory.newInstance(mContext);
87 class ProvisioningCallbackImpl extends ProvisioningCallback {
89 private final EasySetupStatus mCallback ;
91 ProvisioningCallbackImpl (EasySetupStatus callback) {
96 public void onFinished(EnrolleeDevice enrolledevice) {
97 //if(mEnrolleeDeviceList.contains(enrolledevice)) {
98 mCallback.onFinished(enrolledevice);