static ESProvisioningCallbacks gESProvisioningCb;
static ESDeviceProperty gESDeviceProperty;
+void ESConnectRequestCallback(ESResult esResult, ESConnectRequest *eventData)
+{
+ OIC_LOG_V(DEBUG, ES_ENROLLEE_TAG, "ESConnectRequestCallback IN");
+
+ if(esResult != ES_OK)
+ {
+ 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;
+ }
+}
+
void ESWiFiConfRsrcCallback(ESResult esResult, ESWiFiConfData *eventData)
{
OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESWiFiConfRsrcCallback IN");
}
}
+ // 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)
{
UnRegisterResourceEventCallBack();
return ES_ERROR;
}
-
OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESInitEnrollee OUT");
return ES_OK;
}
void updateDevConfResource(OCRepPayload* input);
const char *getResult(OCStackResult result);
+ESConnectRequestCB gConnectRequestEvtCb = NULL;
ESWiFiConfCB gWifiConfRsrcEvtCb = NULL;
ESCoapCloudConfCB gCoapCloudConfRsrcEvtCb = NULL;
ESDevConfCB gDevConfRsrcEvtCb = NULL;
gDevConfRsrcEvtCb = cb;
}
+void RegisterConnectRequestEventCallBack(ESConnectRequestCB cb)
+{
+ gConnectRequestEvtCb = cb;
+}
+
void UnRegisterResourceEventCallBack()
{
if (gWifiConfRsrcEvtCb)
{
gDevConfRsrcEvtCb = NULL;
}
+ if (gConnectRequestEvtCb)
+ {
+ gConnectRequestEvtCb = NULL;
+ }
}
OCStackResult initEasySetupResource(bool isSecured)
{
g_ESEasySetupResource.status = ES_STATE_INIT;
g_ESEasySetupResource.lastErrCode = ES_ERRCODE_NO_ERROR;
+ for( int i = 0 ; i < NUM_CONNECT_TYPE ; ++i )
+ {
+ g_ESEasySetupResource.connectRequest[i] = ES_CONNECT_NONE;
+ }
+ g_ESEasySetupResource.numRequest = 0;
OCStackResult res = OC_STACK_ERROR;
if (isSecured)
{
OIC_LOG_V(DEBUG, ES_RH_TAG, "g_ESEasySetupResource.status %d", g_ESEasySetupResource.status);
+ int64_t *connect_req = NULL;
+ size_t dimensions[MAX_REP_ARRAY_DEPTH] = { 0 };
+ if (OCRepPayloadGetIntArray(input, OC_RSRVD_ES_CONNECT, &connect_req, dimensions))
+ {
+ ESConnectRequest* connectRequest = (ESConnectRequest*)OICMalloc(sizeof(ESConnectRequest));
+ int cntRequest = 0;
+ for (int i = 0 ; i < NUM_CONNECT_TYPE ; ++i)
+ {
+ g_ESEasySetupResource.connectRequest[i] = ES_CONNECT_NONE;
+ connectRequest->connect[i] = ES_CONNECT_NONE;
+
+ if(i < dimensions[0] &&
+ (connect_req[i] == ES_CONNECT_WIFI || connect_req[i] == ES_CONNECT_COAPCLOUD))
+ {
+ g_ESEasySetupResource.connectRequest[cntRequest] = connect_req[i];
+ connectRequest->connect[cntRequest] = connect_req[i];
+ OIC_LOG_V(DEBUG, ES_RH_TAG, "g_ESEasySetupResource.connectType[%d] : %d",
+ cntRequest, g_ESEasySetupResource.connectRequest[cntRequest]);
+ cntRequest++;
+ }
+ }
+ connectRequest->numRequest = cntRequest;
+ g_ESEasySetupResource.numRequest = cntRequest;
+
+ if(g_ESEasySetupResource.connectRequest[0] != ES_CONNECT_NONE)
+ {
+ OIC_LOG(DEBUG, ES_RH_TAG, "Send ConnectRequest Callback To ES");
+
+ // TODO : Need to check appropriateness of gWiFiData
+ if(gConnectRequestEvtCb != NULL)
+ {
+ gConnectRequestEvtCb(ES_OK, connectRequest);
+ }
+ else
+ {
+ OIC_LOG(ERROR, ES_RH_TAG, "gConnectRequestEvtCb is NULL");
+ }
+ }
+ }
+
if(ehRequest->query)
{
if(CompareResourceInterface(ehRequest->query, OC_RSRVD_INTERFACE_BATCH))
OCRepPayloadSetPropInt(payload, OC_RSRVD_ES_PROVSTATUS, g_ESEasySetupResource.status);
OCRepPayloadSetPropInt(payload, OC_RSRVD_ES_LAST_ERRORCODE, g_ESEasySetupResource.lastErrCode);
+ size_t dimensions[MAX_REP_ARRAY_DEPTH] = {g_ESEasySetupResource.numRequest , 0, 0};
+ int64_t *connectRequest = (int64_t *)OICMalloc(g_ESEasySetupResource.numRequest * sizeof(int64_t));
+ for(int i = 0 ; i < g_ESEasySetupResource.numRequest ; ++i)
+ {
+ connectRequest[i] = g_ESEasySetupResource.connectRequest[i];
+ }
+ OCRepPayloadSetIntArray(payload, OC_RSRVD_ES_CONNECT, (int64_t *)connectRequest, dimensions);
+
if(gWriteUserdataCb)
{
gWriteUserdataCb(payload, OC_RSRVD_ES_RES_TYPE_EASYSETUP);
OCRepPayloadSetPropInt(repPayload, OC_RSRVD_ES_PROVSTATUS, g_ESEasySetupResource.status);
OCRepPayloadSetPropInt(repPayload, OC_RSRVD_ES_LAST_ERRORCODE, g_ESEasySetupResource.lastErrCode);
+ size_t dimensions[MAX_REP_ARRAY_DEPTH] = {g_ESEasySetupResource.numRequest , 0, 0};
+ int64_t *connectRequest = (int64_t *)OICMalloc(g_ESEasySetupResource.numRequest * sizeof(int64_t));
+ for(int i = 0 ; i < g_ESEasySetupResource.numRequest ; ++i)
+ {
+ connectRequest[i] = g_ESEasySetupResource.connectRequest[i];
+ }
+ OCRepPayloadSetIntArray(repPayload, OC_RSRVD_ES_CONNECT, (int64_t *)connectRequest, dimensions);
if(gWriteUserdataCb)
{
printf("============\n");
}
+void ConnectRequestCbInApp(ESConnectRequest *connectRequest)
+{
+ printf("ConnectRequestCbInApp IN\n");
+
+ if(connectRequest == NULL)
+ {
+ printf("connectRequest is NULL\n");
+ return ;
+ }
+
+ for(int i = 0 ; i < connectRequest->numRequest ; ++i)
+ {
+ printf("connect : %d\n", connectRequest->connect[i]);
+ }
+
+ printf("ConnectRequestCbInApp OUT\n");
+}
+
void WiFiConfProvCbInApp(ESWiFiConfData *eventData)
{
printf("WiFiConfProvCbInApp IN\n");
}
ESProvisioningCallbacks gCallbacks = {
+ .ConnectRequestCb = &ConnectRequestCbInApp,
.WiFiConfProvCb = &WiFiConfProvCbInApp,
.DevConfProvCb = &DevConfProvCbInApp,
.CoapCloudConfProvCb = &CoapCloudConfProvCbInApp