Asynchronous User Confirm
[platform/upstream/iotivity.git] / resource / csdk / security / provisioning / sample / sampleserver_mfg.cpp
index a1923fe..88ff489 100644 (file)
@@ -406,9 +406,8 @@ void handleSigInt(int signum)
     }
 }
 
-OCStackResult confirmCB(void * ctx)
+OCStackResult confirmCB_thread()
 {
-    OC_UNUSED(ctx);
     for (;;)
     {
         int userConfirm;
@@ -424,17 +423,27 @@ OCStackResult confirmCB(void * ctx)
         }
         if (1 == userConfirm)
         {
+            SendUserConfirm(true);
             break;
         }
         else if (0 == userConfirm)
         {
-            return OC_STACK_USER_DENIED_REQ;
+            SendUserConfirm(false);
+            break;
         }
         printf("   Entered Wrong Number. Please Enter Again\n");
     }
     return OC_STACK_OK;
 }
 
+OCStackResult confirmCB(void * ctx)
+{
+    OC_UNUSED(ctx);
+    pthread_t threadId;
+    pthread_create (&threadId, NULL, &confirmCB_thread, NULL);
+    return OC_STACK_OK;
+}
+
 void confirmNoCertCB(CACertificateVerificationStatus_t status)
 {
     if (CA_CERTIFICATE_VERIFY_SUCCESS_MUTUAL == status)
@@ -499,7 +508,7 @@ int main(int argc, char **argv)
     // Initialize Persistent Storage for SVR database
     OCPersistentStorage ps = {server_fopen, fread, fwrite, fclose, unlink, NULL, NULL};
 
-    SetUserConfirmCB(NULL, confirmCB);
+    SetAsyncUserConfirmCB(NULL, confirmCB);
     SetInformOxmSelCB(informOxmSelCB);
     CAsetCertificateVerificationCallback(confirmNoCertCB);