replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / service / easy-setup / mediator / richsdk / android / EasySetupCore / src / main / java / org / iotivity / service / easysetup / mediator / EasySetup.java
index 2e47b0e..cece024 100755 (executable)
@@ -2,7 +2,7 @@
  * ***************************************************************
  *
  * Copyright 2017 Samsung Electronics All Rights Reserved.
- * 
+ *
  *
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,21 +25,21 @@ package org.iotivity.service.easysetup.mediator;
 import android.content.Context;
 import android.util.Log;
 
-import java.io.IOException;
+import org.iotivity.base.OcConnectivityType;
+import org.iotivity.base.OcResource;
+import org.iotivity.base.OcPlatform;
+
 import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.List;
 
 /**
- * <To be modified>
- * This is facade class, a single point of contact for Application.
- * It contains set of APIs to do easy setup of the enrolling device.
- * ON-BOARDING - This is a step to establish connectivity between the device & Mediator device.
- * PROVISION   - This is a step where the netowork's detail & credentials are given to the
- * enrolling device.
+ * This provides an API to instanciate a new RemoteEnrollee object correspondent to Enrollee
+ * Device to be setup.
  */
 public class EasySetup {
 
     private static final String TAG = EasySetup.class.getName();
-
     private static EasySetup sInstance;
 
     private static Context mContext;
@@ -48,11 +48,18 @@ public class EasySetup {
 
     protected RemoteEnrollee mRemoteEnrollee;
 
-    //function to call the native nativeCreateRemoteEnrollee
-    private native RemoteEnrollee nativeCreateRemoteEnrollee();
-
+    // function to call the native nativeCreateRemoteEnrollee
+    private native RemoteEnrollee nativeCreateRemoteEnrollee(OcResource enrolleeResource);
     static {
         // Load Easy Setup JNI interface
+        try
+        {
+            System.loadLibrary("ocprovision");
+        } catch (UnsatisfiedLinkError e) {
+            Log.i(TAG, "ocprovision library does not exist. (Unsecure mode)");
+        }
+
+        System.loadLibrary("ocstack-jni");
         System.loadLibrary("ESMediatorRich");
         System.loadLibrary("easysetup-jni");
     }
@@ -73,23 +80,26 @@ public class EasySetup {
         return sInstance;
     }
 
-    /**
-     * API to create a new RemoteEnrollee instance
+     /**
+     * This API is used for creating a remote Enrollee instance
+     *
+     * @param enrolleeResource an OCResource object corresponding to enrollee resource
+     *        discovered in a network. The OcResource object can be obtained by calling
+     *        OcPlatform.findResource() API. What resource you have to discover with
+     *        the OcPlatform.findResource() API is a "provisioning" resource with a certain
+     *        resource type, i.e. oic.r.easysetup
+     *
+     * @return Pointer to RemoteEnrollee instance
      */
-    public synchronized RemoteEnrollee createRemoteEnrollee()
+    public synchronized RemoteEnrollee createRemoteEnrollee(OcResource enrolleeResource)
     {
-        // native call
-        mRemoteEnrollee = nativeCreateRemoteEnrollee();
-        mRemoteEnrolleeList.add(mRemoteEnrollee);
-        return mRemoteEnrollee;
-    }
+        mRemoteEnrollee = nativeCreateRemoteEnrollee(enrolleeResource);
 
-    /**
-     * Reset the Easy setup
-     */
-    public void finish() {
-        //Call the stop Provisioning
-        //for (RemoteEnrollee remoteEnrollee : mRemoteEnrolleeList)
-        //    remoteEnrollee.stopProvisioningProcess();
+        if(mRemoteEnrollee != null)
+        {
+            mRemoteEnrolleeList.add(mRemoteEnrollee);
+            return mRemoteEnrollee;
         }
+        return null;
+    }
 }