Update snapshot(2018-01-17)
[platform/upstream/iotivity.git] / service / easy-setup / enrollee / src / easysetup.c
index bf5b74e..d77f096 100755 (executable)
 // Private variables
 //-----------------------------------------------------------------------------
 
-/**
- * @var gTargetSsid
- * @brief Target SSID of the Soft Access point to which the device has to connect
- */
-// static char gTargetSsid[MAXSSIDLEN];
-
-/**
- * @var gTargetPass
- * @brief Password of the target access point to which the device has to connect
- */
-// static char gTargetPass[MAXNETCREDLEN];
-
-/**
- * @var gEnrolleeStatusCb
- * @brief Fucntion pointer holding the callback for intimation of EasySetup Enrollee status callback
- */
-// static ESEnrolleeEventCallback gEnrolleeStatusCb = NULL;
-
-/**
- * @var gIsSecured
- * @brief Variable to check if secure mode is enabled or not.
- */
 static bool gIsSecured = false;
 
 static ESProvisioningCallbacks gESProvisioningCb;
 static ESDeviceProperty gESDeviceProperty;
 
-void ESWiFiRsrcCallback(ESResult esResult, ESWiFiProvData *eventData)
+void ESConnectRequestCallback(ESResult esResult, ESConnectRequest *eventData)
 {
-    OIC_LOG_V(DEBUG, ES_ENROLLEE_TAG, "ESWiFiRsrcCallback IN");
+    OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "ESConnectRequestCallback IN");
 
     if(esResult != ES_OK)
     {
-        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "ESWiFiRsrcCallback Error Occured");
+        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "ESConnectRequestCallback Error Occured");
+        return;
+    }
+
+    if(gESProvisioningCb.ConnectRequestCb != NULL)
+    {
+        gESProvisioningCb.ConnectRequestCb(eventData);
+    }
+    else
+    {
+        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "ConnectRequestCb is NULL");
+        return;
+    }
+
+    OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "ESConnectRequestCallback OUT");
+}
+
+void ESWiFiConfRsrcCallback(ESResult esResult, ESWiFiConfData *eventData)
+{
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESWiFiConfRsrcCallback IN");
+
+    if(esResult != ES_OK)
+    {
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESWiFiConfRsrcCallback Error Occured");
         return;
     }
 
     // deliver data to ESProvisioningCallbacks
-    if(gESProvisioningCb.WiFiProvCb != NULL)
+    if(gESProvisioningCb.WiFiConfProvCb != NULL)
     {
-        gESProvisioningCb.WiFiProvCb(eventData);
+        gESProvisioningCb.WiFiConfProvCb(eventData);
     }
     else
     {
-        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "WiFiProvCb is NULL");
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "WiFiConfProvCb is NULL");
         return;
     }
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESWiFiConfRsrcCallback OUT");
 }
 
-void ESCloudRsrcCallback(ESResult esResult, ESCloudProvData *eventData)
+void ESCoapCloudConfRsrcCallback(ESResult esResult, ESCoapCloudConfData *eventData)
 {
-    OIC_LOG_V(DEBUG, ES_ENROLLEE_TAG, "ESCloudRsrcCallback IN");
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESCoapCloudConfRsrcCallback IN");
 
     if(esResult != ES_OK)
     {
-        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "ESCloudRsrcCallback Error Occured");
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESCoapCloudConfRsrcCallback Error Occured");
         return;
     }
 
-    if(gESProvisioningCb.CloudDataProvCb != NULL)
+    if(gESProvisioningCb.CoapCloudConfProvCb != NULL)
     {
-        gESProvisioningCb.CloudDataProvCb(eventData);
+        gESProvisioningCb.CoapCloudConfProvCb(eventData);
     }
     else
     {
-        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "CloudDataProvCb is NULL");
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "CoapCloudConfProvCb is NULL");
         return;
     }
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESCoapCloudConfRsrcCallback OUT");
 }
 
-void ESDevconfRsrcallback(ESResult esResult, ESDevConfProvData *eventData)
+void ESDevConfRsrcallback(ESResult esResult, ESDevConfData *eventData)
 {
-    OIC_LOG_V(DEBUG, ES_ENROLLEE_TAG, "ESDevconfRsrcallback IN");
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESDevConfRsrcallback IN");
 
     if(esResult != ES_OK)
     {
-        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "ESDevconfRsrcallback Error Occured");
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESDevConfRsrcallback Error Occured");
         return;
     }
 
@@ -125,9 +128,10 @@ void ESDevconfRsrcallback(ESResult esResult, ESDevConfProvData *eventData)
     }
     else
     {
-        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "DevConfProvCb is NULL");
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "DevConfProvCb is NULL");
         return;
     }
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESDevConfRsrcallback OUT");
 }
 
 ESResult ESInitEnrollee(bool isSecured, ESResourceMask resourceMask, ESProvisioningCallbacks callbacks)
@@ -136,16 +140,16 @@ ESResult ESInitEnrollee(bool isSecured, ESResourceMask resourceMask, ESProvision
 
     gIsSecured = isSecured;
 
-    if((resourceMask & ES_WIFI_RESOURCE) == ES_WIFI_RESOURCE)
+    if((resourceMask & ES_WIFICONF_RESOURCE) == ES_WIFICONF_RESOURCE)
     {
-        if(callbacks.WiFiProvCb != NULL)
+        if(callbacks.WiFiConfProvCb != NULL)
         {
-            gESProvisioningCb.WiFiProvCb = callbacks.WiFiProvCb;
-            RegisterWifiRsrcEventCallBack(ESWiFiRsrcCallback);
+            gESProvisioningCb.WiFiConfProvCb = callbacks.WiFiConfProvCb;
+            RegisterWifiRsrcEventCallBack(ESWiFiConfRsrcCallback);
         }
         else
         {
-            OIC_LOG(ERROR, ES_ENROLLEE_TAG, "WiFiProvCb NULL");
+            OIC_LOG(ERROR, ES_ENROLLEE_TAG, "WiFiConfProvCb NULL");
             return ES_ERROR;
         }
     }
@@ -154,7 +158,7 @@ ESResult ESInitEnrollee(bool isSecured, ESResourceMask resourceMask, ESProvision
         if(callbacks.DevConfProvCb != NULL)
         {
             gESProvisioningCb.DevConfProvCb = callbacks.DevConfProvCb;
-            RegisterDevConfRsrcEventCallBack(ESDevconfRsrcallback);
+            RegisterDevConfRsrcEventCallBack(ESDevConfRsrcallback);
         }
         else
         {
@@ -162,27 +166,39 @@ ESResult ESInitEnrollee(bool isSecured, ESResourceMask resourceMask, ESProvision
             return ES_ERROR;
         }
     }
-    if((resourceMask & ES_CLOUD_RESOURCE) == ES_CLOUD_RESOURCE)
+    if((resourceMask & ES_COAPCLOUDCONF_RESOURCE) == ES_COAPCLOUDCONF_RESOURCE)
     {
-        if(callbacks.DevConfProvCb != NULL)
+        if(callbacks.CoapCloudConfProvCb != NULL)
         {
-            gESProvisioningCb.CloudDataProvCb = callbacks.CloudDataProvCb;
-            RegisterCloudRsrcEventCallBack(ESCloudRsrcCallback);
+            gESProvisioningCb.CoapCloudConfProvCb = callbacks.CoapCloudConfProvCb;
+            RegisterCloudRsrcEventCallBack(ESCoapCloudConfRsrcCallback);
         }
         else
         {
-            OIC_LOG(ERROR, ES_ENROLLEE_TAG, "CloudDataProvCb NULL");
+            OIC_LOG(ERROR, ES_ENROLLEE_TAG, "CoapCloudConfProvCb NULL");
             return ES_ERROR;
         }
     }
 
+    // TODO: if EasySetupProvCb is NULL, we should return an error at this moment.
+    if(callbacks.ConnectRequestCb != NULL)
+    {
+        gESProvisioningCb.ConnectRequestCb = callbacks.ConnectRequestCb;
+        RegisterConnectRequestEventCallBack(ESConnectRequestCallback);
+    }
+
     if(CreateEasySetupResources(gIsSecured, resourceMask) != OC_STACK_OK)
     {
-        // TODO : Error Handling
+        UnRegisterResourceEventCallBack();
+
+        if (DeleteEasySetupResources() != OC_STACK_OK)
+        {
+            OIC_LOG(ERROR, ES_ENROLLEE_TAG, "Deleting prov resource error!!");
+        }
+
         return ES_ERROR;
     }
 
-
     OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESInitEnrollee OUT");
     return ES_OK;
 }
@@ -193,6 +209,7 @@ ESResult ESSetDeviceProperty(ESDeviceProperty *deviceProperty)
 
     if(SetDeviceProperty(deviceProperty) != OC_STACK_OK)
     {
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESSetDeviceProperty Error");
         return ES_ERROR;
     }
 
@@ -200,22 +217,65 @@ ESResult ESSetDeviceProperty(ESDeviceProperty *deviceProperty)
     while((deviceProperty->WiFi).mode[modeIdx] != WiFi_EOF)
     {
         (gESDeviceProperty.WiFi).mode[modeIdx] = (deviceProperty->WiFi).mode[modeIdx];
-        OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "WiFi Mode : %d", (gESDeviceProperty.WiFi).mode[modeIdx]);
+        OIC_LOG_V(INFO_PRIVATE, ES_ENROLLEE_TAG, "WiFi Mode : %d", (gESDeviceProperty.WiFi).mode[modeIdx]);
         modeIdx ++;
     }
     (gESDeviceProperty.WiFi).freq = (deviceProperty->WiFi).freq;
-    OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "WiFi Freq : %d", (gESDeviceProperty.WiFi).freq);
-
-    OICStrcpy((gESDeviceProperty.DevConf).deviceName, MAX_DEVICELEN, (deviceProperty->DevConf).deviceName);
-    OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "Device Name : %s", (gESDeviceProperty.DevConf).deviceName);
+    OIC_LOG_V(INFO_PRIVATE, ES_ENROLLEE_TAG, "WiFi Freq : %d", (gESDeviceProperty.WiFi).freq);
 
+    OICStrcpy((gESDeviceProperty.DevConf).deviceName, OIC_STRING_MAX_VALUE, (deviceProperty->DevConf).deviceName);
+    OIC_LOG_V(INFO_PRIVATE, ES_ENROLLEE_TAG, "Device Name : %s", (gESDeviceProperty.DevConf).deviceName);
 
     OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetDeviceProperty OUT");
     return ES_OK;
 }
 
+ESResult ESSetState(ESEnrolleeState esState)
+{
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetState IN");
+
+    if(esState < ES_STATE_INIT || esState >= ES_STATE_EOF)
+    {
+        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "Invalid ESEnrolleeState : %d", esState);
+        return ES_ERROR;
+    }
+
+    if(SetEnrolleeState(esState) != OC_STACK_OK)
+    {
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESSetState ES_ERROR");
+        return ES_ERROR;
+    }
+
+    OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "Set ESState succesfully : %d", esState);
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetState OUT");
+    return ES_OK;
+}
+
+ESResult ESSetErrorCode(ESErrorCode esErrCode)
+{
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetErrorCode IN");
+
+    if(esErrCode < ES_ERRCODE_NO_ERROR || esErrCode > ES_ERRCODE_UNKNOWN)
+    {
+        OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "Invalid ESSetErrorCode : %d", esErrCode);
+            return ES_ERROR;
+    }
+
+    if(SetEnrolleeErrCode(esErrCode) != OC_STACK_OK)
+    {
+        OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESSetErrorCode ES_ERROR");
+        return ES_ERROR;
+    }
+
+    OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "Set ESErrorCode succesfully : %d", esErrCode);
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetErrorCode OUT");
+    return ES_OK;
+}
+
 ESResult ESTerminateEnrollee()
 {
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESTerminateEnrollee IN");
+
     UnRegisterResourceEventCallBack();
 
     //Delete Prov resource
@@ -225,6 +285,21 @@ ESResult ESTerminateEnrollee()
         return ES_ERROR;
     }
 
-    OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESTerminateEnrollee success");
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESTerminateEnrollee success");
+    return ES_OK;
+}
+
+ESResult ESSetCallbackForUserdata(ESReadUserdataCb readCb, ESWriteUserdataCb writeCb)
+{
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetCallbackForUserdata IN");
+
+    if(!readCb && !writeCb)
+    {
+        OIC_LOG(INFO, ES_ENROLLEE_TAG, "Both of callbacks for user data are null");
+        return ES_ERROR;
+    }
+
+    SetCallbackForUserData(readCb, writeCb);
+    OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetCallbackForUserdata OUT");
     return ES_OK;
 }