replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / resource / provisioning / examples / cloudClient.cpp
index c4b5038..89f6905 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "ocstack.h"
 #include "logger.h"
-#include "camutex.h"
+#include "octhread.h"
 #include "cathreadpool.h"
 #include "ocpayload.h"
 #include "payload_logging.h"
@@ -33,7 +33,7 @@
 #include "cloudAuth.h"
 #include "cloudWrapper.h"
 #include "OCApi.h"
-#include "OCCloudProvisioning.h"
+#include "OCCloudProvisioning.hpp"
 
 #ifdef __unix__
 #include <unistd.h> //for unlink
@@ -42,7 +42,7 @@
 #define TAG "cloudClient"
 using namespace OC;
 
-#define DEFAULT_HOST            "10.113.68.85"//"127.0.0.1"
+#define DEFAULT_HOST            "127.0.0.1"
 #define DEFAULT_PORT            OC_MULTICAST_PORT
 #define DEFAULT_DEVICEID        "6A757374-776F-726B-4465-765575696430"
 #define DEFAULT_USERID          "6A757374-776F-726B-4465-765575696430"
@@ -57,14 +57,14 @@ static bool fExit = false;
 static OCDevAddr endPoint;
 static char token[1024];
 static char authProvider[1024];
-static char *fname = DEFAULT_DB_FILE;
+static const char *fname = DEFAULT_DB_FILE;
 static uint64_t timeout;
 static uint16_t g_credId = 0;
 
-ca_cond cond;
-ca_mutex mutex;
-std::string ip("");
-OCCloudProvisioning g_cloudProv(ip, 0);
+oc_cond cond;
+oc_mutex mutex;
+std::string ip(DEFAULT_HOST);
+OCCloudProvisioning g_cloudProv(ip, (uint16_t)DEFAULT_PORT);
 
 typedef enum {
     SIGN_UP       = 1,
@@ -187,32 +187,32 @@ void printMenu()
 void handleCB(void* ctx, OCStackResult result, void* data)
 {
     OC_UNUSED(ctx);
-    OC_UNUSED(result);
     OC_UNUSED(data);
 
-    ca_mutex_lock(mutex);
-    ca_cond_signal(cond);
-    ca_mutex_unlock(mutex);
+    printf("Cloud request Result is == %d", result);
+    oc_mutex_lock(mutex);
+    oc_cond_signal(cond);
+    oc_mutex_unlock(mutex);
 }
 
 void handleCB1(OCStackResult result, void *data)
 {
-    OC_UNUSED(result);
     OC_UNUSED(data);
 
-    ca_mutex_lock(mutex);
-    ca_cond_signal(cond);
-    ca_mutex_unlock(mutex);
+    printf("Cloud request Result is == %d", result);
+    oc_mutex_lock(mutex);
+    oc_cond_signal(cond);
+    oc_mutex_unlock(mutex);
 }
 
 void handleCB2(OCStackResult result, std::string data)
 {
-    OC_UNUSED(result);
-    OC_UNUSED(data);
+    printf("Cloud request Result is == %d", result);
+    printf("ACL ID for the device is == %s", data.c_str());
 
-    ca_mutex_lock(mutex);
-    ca_cond_signal(cond);
-    ca_mutex_unlock(mutex);
+    oc_mutex_lock(mutex);
+    oc_cond_signal(cond);
+    oc_mutex_unlock(mutex);
 }
 
 static int saveTrustCert(void)
@@ -227,20 +227,23 @@ static int saveTrustCert(void)
     if (fp)
     {
         size_t fsize;
-        if (fseeko(fp, 0, SEEK_END) == 0 && (fsize = ftello(fp)))
+        if (fseeko(fp, 0, SEEK_END) == 0 && (fsize = ftello(fp)) > 0)
         {
-            trustCertChainArray.data = (uint8_t*)OICCalloc(1, fsize+1);
-            trustCertChainArray.len = fsize+1;
+            trustCertChainArray.data = (uint8_t*)OICCalloc(1, fsize);
+            trustCertChainArray.len = fsize;
             if (NULL == trustCertChainArray.data)
             {
-                OIC_LOG(ERROR,TAG,"OICCalloc");
+                OIC_LOG(ERROR,TAG,"Failed to allocate memory");
                 fclose(fp);
                 return res;
             }
             rewind(fp);
-            fsize = fread(trustCertChainArray.data, 1, fsize, fp);
-            fclose(fp);
+            if (fsize != fread(trustCertChainArray.data, 1, fsize, fp))
+            {
+                OIC_LOG(ERROR, TAG, "Certiface not read completely");
+            }
         }
+        fclose(fp);
     }
     OIC_LOG_BUFFER(DEBUG, TAG, trustCertChainArray.data, trustCertChainArray.len);
 
@@ -267,8 +270,8 @@ static void userRequests(void *data)
     strncpy(endPoint.addr, DEFAULT_HOST, sizeof(endPoint.addr));
     endPoint.port = DEFAULT_PORT;
 
-    mutex = ca_mutex_new();
-    cond = ca_cond_new();
+    mutex = oc_mutex_new();
+    cond = oc_cond_new();
 
     while (false == fExit)
     {
@@ -285,7 +288,12 @@ static void userRequests(void *data)
         printMenu();
 
         int request = 0;
-        scanf("%d", &request);
+
+        for (int ret = 0; 1 != ret; )
+        {
+            ret = scanf("%d", &request);
+            for( ; 0x20 <= getchar(); );
+        }
 
         switch (request)
         {
@@ -387,7 +395,7 @@ static void userRequests(void *data)
             res = OCWrapperCertificateIssueRequest( g_cloudProv, handleCB1);
             break;
         case USE_RSA:
-//            CASelectCipherSuite(0x35, CA_ADAPTER_TCP);
+            res = CAManager::setCipherSuite(0x35, OC_ADAPTER_TCP);
             break;
         case SAVE_TRUST_CERT:
             saveTrustCert();
@@ -400,8 +408,8 @@ static void userRequests(void *data)
         }
             break;
         case EXIT:
-            ca_mutex_free(mutex);
-            ca_cond_free(cond);
+            oc_mutex_free(mutex);
+            oc_cond_free(cond);
             fExit = true;
             break;
         default:
@@ -412,9 +420,9 @@ static void userRequests(void *data)
         //if requests were sent then wait response
         if (res == OC_STACK_OK)
         {
-            ca_mutex_lock(mutex);
-            ca_cond_wait_for(cond, mutex, timeout);
-            ca_mutex_unlock(mutex);
+            oc_mutex_lock(mutex);
+            oc_cond_wait_for(cond, mutex, timeout);
+            oc_mutex_unlock(mutex);
         }
     }
 
@@ -474,7 +482,7 @@ int main(int argc, char *argv[])
     }
 
     //Initialize Persistent Storage for SVR database
-    OCPersistentStorage ps = {server_fopen, fread, fwrite, fclose, unlink};
+    OCPersistentStorage ps = {server_fopen, fread, fwrite, fclose, unlink, NULL, NULL};
 
     OCRegisterPersistentStorageHandler(&ps);
 
@@ -493,7 +501,7 @@ int main(int argc, char *argv[])
         return res;
     }
 
-    res = ca_thread_pool_add_task(g_threadPoolHandle, userRequests, NULL);
+    res = ca_thread_pool_add_task(g_threadPoolHandle, userRequests, NULL, NULL);
     if (CA_STATUS_OK != res)
     {
         OIC_LOG(ERROR, TAG, "thread pool add task error.");