Asynchronous User Confirm
[platform/upstream/iotivity.git] / resource / csdk / security / provisioning / sample / sampleserver_mfg.cpp
index cb2809e..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)
@@ -452,6 +461,11 @@ void confirmNoCertCB(CACertificateVerificationStatus_t status)
     return;
 }
 
+void informOxmSelCB(OicSecOxm_t oxmSel)\r
+{\r
+    printf("   > OXM selected: 0x%x\n", oxmSel);\r
+}\r
+\r
 FILE* server_fopen(const char *path, const char *mode)
 {
     (void)path;
@@ -494,7 +508,8 @@ 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);
 
     OCRegisterPersistentStorageHandler(&ps);