1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
24 * This file contains the implementation for EasySetup Enrollee device
27 #include "easysetup.h"
29 #include "resourcehandler.h"
30 #include "oic_string.h"
33 * @var ES_ENROLLEE_TAG
34 * @brief Logging tag for module name.
36 #define ES_ENROLLEE_TAG "ES"
38 //-----------------------------------------------------------------------------
40 //-----------------------------------------------------------------------------
44 * @brief Target SSID of the Soft Access point to which the device has to connect
46 // static char gTargetSsid[MAXSSIDLEN];
50 * @brief Password of the target access point to which the device has to connect
52 // static char gTargetPass[MAXNETCREDLEN];
55 * @var gEnrolleeStatusCb
56 * @brief Fucntion pointer holding the callback for intimation of EasySetup Enrollee status callback
58 // static ESEnrolleeEventCallback gEnrolleeStatusCb = NULL;
62 * @brief Variable to check if secure mode is enabled or not.
64 static bool gIsSecured = false;
66 static ESProvisioningCallbacks gESProvisioningCb;
67 static ESDeviceProperty gESDeviceProperty;
69 void ESWiFiRsrcCallback(ESResult esResult, ESWiFiProvData *eventData)
71 OIC_LOG_V(DEBUG, ES_ENROLLEE_TAG, "ESWiFiRsrcCallback IN");
75 OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "ESWiFiRsrcCallback Error Occured");
79 // deliver data to ESProvisioningCallbacks
80 if(gESProvisioningCb.WiFiProvCb != NULL)
82 gESProvisioningCb.WiFiProvCb(eventData);
86 OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "WiFiProvCb is NULL");
91 void ESCloudRsrcCallback(ESResult esResult, ESCloudProvData *eventData)
93 OIC_LOG_V(DEBUG, ES_ENROLLEE_TAG, "ESCloudRsrcCallback IN");
97 OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "ESCloudRsrcCallback Error Occured");
101 if(gESProvisioningCb.CloudDataProvCb != NULL)
103 gESProvisioningCb.CloudDataProvCb(eventData);
107 OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "CloudDataProvCb is NULL");
112 void ESDevconfRsrcallback(ESResult esResult, ESDevConfProvData *eventData)
114 OIC_LOG_V(DEBUG, ES_ENROLLEE_TAG, "ESDevconfRsrcallback IN");
116 if(esResult != ES_OK)
118 OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "ESDevconfRsrcallback Error Occured");
122 if(gESProvisioningCb.DevConfProvCb != NULL)
124 gESProvisioningCb.DevConfProvCb(eventData);
128 OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "DevConfProvCb is NULL");
133 ESResult ESInitEnrollee(bool isSecured, ESResourceMask resourceMask, ESProvisioningCallbacks callbacks)
135 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESInitEnrollee IN");
137 gIsSecured = isSecured;
139 if((resourceMask & ES_WIFI_RESOURCE) == ES_WIFI_RESOURCE)
141 if(callbacks.WiFiProvCb != NULL)
143 gESProvisioningCb.WiFiProvCb = callbacks.WiFiProvCb;
144 RegisterWifiRsrcEventCallBack(ESWiFiRsrcCallback);
148 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "WiFiProvCb NULL");
152 if((resourceMask & ES_DEVCONF_RESOURCE) == ES_DEVCONF_RESOURCE)
154 if(callbacks.DevConfProvCb != NULL)
156 gESProvisioningCb.DevConfProvCb = callbacks.DevConfProvCb;
157 RegisterDevConfRsrcEventCallBack(ESDevconfRsrcallback);
161 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "DevConfProvCb NULL");
165 if((resourceMask & ES_CLOUD_RESOURCE) == ES_CLOUD_RESOURCE)
167 if(callbacks.DevConfProvCb != NULL)
169 gESProvisioningCb.CloudDataProvCb = callbacks.CloudDataProvCb;
170 RegisterCloudRsrcEventCallBack(ESCloudRsrcCallback);
174 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "CloudDataProvCb NULL");
179 if(CreateEasySetupResources(gIsSecured, resourceMask) != OC_STACK_OK)
181 UnRegisterResourceEventCallBack();
183 if (DeleteEasySetupResources() != OC_STACK_OK)
185 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "Deleting prov resource error!!");
192 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESInitEnrollee OUT");
196 ESResult ESSetDeviceProperty(ESDeviceProperty *deviceProperty)
198 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetDeviceProperty IN");
200 if(SetDeviceProperty(deviceProperty) != OC_STACK_OK)
202 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESSetDeviceProperty Error");
207 while((deviceProperty->WiFi).mode[modeIdx] != WiFi_EOF)
209 (gESDeviceProperty.WiFi).mode[modeIdx] = (deviceProperty->WiFi).mode[modeIdx];
210 OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "WiFi Mode : %d", (gESDeviceProperty.WiFi).mode[modeIdx]);
213 (gESDeviceProperty.WiFi).freq = (deviceProperty->WiFi).freq;
214 OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "WiFi Freq : %d", (gESDeviceProperty.WiFi).freq);
216 OICStrcpy((gESDeviceProperty.DevConf).deviceName, MAX_DEVICELEN, (deviceProperty->DevConf).deviceName);
217 OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "Device Name : %s", (gESDeviceProperty.DevConf).deviceName);
219 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetDeviceProperty OUT");
223 ESResult ESSetState(ESEnrolleeState esState)
225 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetState IN");
227 if(esState < ES_STATE_INIT || esState > ES_STATE_REGISTRRED_FAIL_TO_CLOUD)
229 OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "Invalid ESEnrolleeState : %d", esState);
233 if(SetEnrolleeState(esState) != OC_STACK_OK)
235 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESSetState ES_ERROR");
239 OIC_LOG_V(INFO, ES_ENROLLEE_TAG, "Set ESState succesfully : %d", esState);
240 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetState OUT");
244 ESResult ESSetErrorCode(ESErrorCode esErrCode)
246 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetErrorCode IN");
248 if(esErrCode < ES_ERRCODE_NO_ERROR || esErrCode > ES_ERRCODE_UNKNOWN)
250 OIC_LOG_V(ERROR, ES_ENROLLEE_TAG, "Invalid ESSetErrorCode : %d", esErrCode);
254 if(SetEnrolleeErrCode(esErrCode) != OC_STACK_OK)
256 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESSetErrorCode ES_ERROR");
260 OIC_LOG_V(DEBUG, ES_ENROLLEE_TAG, "Set ESErrorCode succesfully : %d", esErrCode);
261 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESSetErrorCode OUT");
265 ESResult ESTerminateEnrollee()
267 OIC_LOG(INFO, ES_ENROLLEE_TAG, "ESTerminateEnrollee IN");
269 UnRegisterResourceEventCallBack();
271 //Delete Prov resource
272 if (DeleteEasySetupResources() != OC_STACK_OK)
274 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "Deleting prov resource error!!");
278 OIC_LOG(ERROR, ES_ENROLLEE_TAG, "ESTerminateEnrollee success");