OCDirectPairingDev_t *peer; /**< Pointer to pairing target info.**/\r
char pin[DP_PIN_LENGTH]; /**< PIN **/\r
OCDirectPairingResultCB resultCallback; /**< Pointer to result callback.**/\r
+ void *userCtx; /** < user context to pass in callback **/\r
} DPairData_t;\r
\r
static OCDirectPairingDev_t *g_dp_paired = NULL;\r
\r
if (clientResponse)\r
{\r
- if(OC_STACK_OK == clientResponse->result)\r
+ if(OC_STACK_RESOURCE_CHANGED == clientResponse->result)\r
{\r
// result\r
OIC_LOG(INFO, TAG, "DirectPairingFinalizeHandler : success PUT"\r
if (OC_STACK_OK != GetDoxmDeviceID(&ptDeviceID))\r
{\r
OIC_LOG(ERROR, TAG, "Error while retrieving provisioning tool's device ID");\r
- resultCallback(peer, OC_STACK_ERROR);\r
+ resultCallback(dpairData->userCtx, peer, OC_STACK_ERROR);\r
return OC_STACK_DELETE_TRANSACTION;\r
}\r
\r
if(OC_STACK_OK != res)\r
{\r
OIC_LOG(ERROR, TAG, "Failed to PairingPSK generation");\r
- resultCallback(peer, res);\r
+ resultCallback(dpairData->userCtx, peer, res);\r
return OC_STACK_DELETE_TRANSACTION;\r
}\r
\r
OIC_LOG(ERROR, TAG, "Error while adding a device to paired list.");\r
}\r
\r
- resultCallback(peer, OC_STACK_OK);\r
+ resultCallback(dpairData->userCtx, peer, OC_STACK_OK);\r
\r
return OC_STACK_DELETE_TRANSACTION;\r
}\r
OIC_LOG(ERROR, TAG, "DirectPairingFinalizeHandler received Null clientResponse");\r
}\r
\r
- resultCallback(peer, OC_STACK_ERROR);\r
+ resultCallback(dpairData->userCtx, peer, OC_STACK_ERROR);\r
OICFree(dpairData);\r
return OC_STACK_DELETE_TRANSACTION;\r
}\r
*\r
* @return OC_STACK_OK on success otherwise error.\r
*/\r
-OCStackResult FinalizeDirectPairing(OCDirectPairingDev_t* peer,\r
+OCStackResult FinalizeDirectPairing(void *ctx, OCDirectPairingDev_t* peer,\r
OCDirectPairingResultCB resultCallback)\r
{\r
if(NULL == peer)\r
}\r
dpairData->peer = peer;\r
dpairData->resultCallback = resultCallback;\r
+ dpairData->userCtx = ctx;\r
\r
OCCallbackData cbData = {.context=NULL, .cb=NULL, .cd=NULL};\r
cbData.cb = DirectPairingFinalizeHandler;\r
{\r
OIC_LOG(INFO, TAG, "Now, finalize Direct-Pairing procedure.");\r
\r
- res = FinalizeDirectPairing(peer, resultCallback);\r
+ res = FinalizeDirectPairing(g_dp_proceed_ctx->userCtx, peer, resultCallback);\r
if(OC_STACK_OK != res)\r
{\r
OIC_LOG(ERROR, TAG, "Failed to finalize direct-pairing");\r
- resultCallback(peer, res);\r
+ resultCallback(g_dp_proceed_ctx->userCtx, peer, res);\r
}\r
}\r
else if(CA_DTLS_AUTHENTICATION_FAILURE == info->result)\r
{\r
OIC_LOG(INFO, TAG, "DirectPairingDTLSHandshakeCB - Authentication failed");\r
- resultCallback(peer, OC_STACK_AUTHENTICATION_FAILURE);\r
+ resultCallback(g_dp_proceed_ctx->userCtx, peer, OC_STACK_AUTHENTICATION_FAILURE);\r
}\r
\r
#ifdef __WITH_DTLS__\r
\r
if (clientResponse)\r
{\r
- if(OC_STACK_RESOURCE_CREATED == clientResponse->result)\r
+ if(OC_STACK_RESOURCE_CHANGED == clientResponse->result)\r
{\r
// result\r
OIC_LOG(INFO, TAG, "DirectPairingHandler : success POST request to /oic/sec/dpairing");\r
g_dp_proceed_ctx = NULL;\r
}\r
\r
- resultCallback(dpairData->peer, res);\r
+ resultCallback(dpairData->userCtx, dpairData->peer, res);\r
}\r
OIC_LOG_V(INFO, TAG, "OUT DirectPairingHandler.");\r
return OC_STACK_DELETE_TRANSACTION;\r
*\r
* @return OC_STACK_OK on success otherwise error.\r
*/\r
-OCStackResult DPDirectPairing(OCDirectPairingDev_t* peer, OicSecPrm_t pmSel, char *pinNumber,\r
- OCDirectPairingResultCB resultCallback)\r
+OCStackResult DPDirectPairing(void *ctx, OCDirectPairingDev_t* peer, OicSecPrm_t pmSel,\r
+ char *pinNumber, OCDirectPairingResultCB resultCallback)\r
{\r
if(NULL == peer || NULL == pinNumber)\r
{\r
dpairData->peer = peer;\r
memcpy(dpairData->pin, pinNumber, DP_PIN_LENGTH);\r
dpairData->resultCallback = resultCallback;\r
+ dpairData->userCtx = ctx;\r
\r
OCCallbackData cbData = {.context=NULL, .cb=NULL, .cd=NULL};\r
cbData.cb = DirectPairingHandler;\r
}\r
else\r
{\r
+ OCProcess();\r
nanosleep(&timeout, NULL);\r
}\r
}\r