$ scons TARGET_OS=arduino BOARD=arduino_due_x_dbg TARGET_ARCH=arm SHIELD=WIFI RELEASE=0
Note :- Only single transport can be built at a time for Arduino
- f) The above command will build sample. The "thinserver.hex" can be found at "out/arduino/arm/release/service/easy-setup/sampleapp/arduino/thinserver/"
+ f) The above command will build sample. The "enrollee.hex" can be found at "out/arduino/arm/release/service/easy-setup/sampleapp/enrollee/arduino"
g) After building sample, script will try to install on "/dev/ttyACM0" port in 'sudo' mode.
To skip installation, set command line argument 'UPLOAD=false' or without UPLOAD option
h) To set BLE Shield Name, include the option DEVICE_NAME during scons build.
│ └──inc
│ └──src
│── sampleapp
- │ └──android
- │ └──arduino
- │ └──linux
- └── Build_Instructions_Android_Arduino.txt - You are reading this.
\ No newline at end of file
+ │ └──mediator/android
+ │ └──mediator/linux
+ │ └──enrollee/arduino
+ └── Build_Instructions_Android_Arduino.txt - You are reading this.
if target_os == 'android':
if 'BLE' in transport:
es_sdk_shared = easy_setup_env.StaticLibrary('libESSDK',
- ['sdk/mediator/src/easysetupmgr.cpp',
- 'sdk/mediator/src/camutex_pthreads.c',
- 'sdk/mediator/src/provisioninghandler_ble.cpp'])
+ ['sdk/mediator/src/prov_adapter.cpp',
+ 'sdk/mediator/src/ble_provisioning.cpp'])
else :
es_sdk_shared = easy_setup_env.StaticLibrary('libESSDK',
- ['sdk/mediator/src/easysetupmgr.cpp',
- 'sdk/mediator/src/camutex_pthreads.c',
- 'sdk/mediator/src/provisioninghandler.cpp'])
+ ['sdk/mediator/src/prov_adapter.cpp',
+ 'sdk/mediator/src/wifi_provisioning.cpp'])
easy_setup_env.InstallTarget(es_sdk_shared, 'libESSDK')
if target_os == 'linux':
es_sdk_shared = easy_setup_env.SharedLibrary('ESSDKLibrary',
- ['sdk/mediator/src/easysetupmgr.cpp',
- 'sdk/mediator/src/camutex_pthreads.c',
- 'sdk/mediator/src/provisioninghandler.cpp'])
+ ['sdk/mediator/src/prov_adapter.cpp',
+ 'sdk/mediator/src/wifi_provisioning.cpp'])
easy_setup_env.InstallTarget(es_sdk_shared, 'libESSDK')
#Go to build sample apps
######################################################################
if target_os == 'arduino' :
# Build linux sample app
- SConscript('arduino/thinserver/SConscript')
+ SConscript('enrollee/arduino/SConscript')
if target_os == 'linux' :
# Build linux sample app
- SConscript('linux/richclient/SConscript')
+ SConscript('mediator/linux/SConscript')
Import('env')
-thinserver_env = env.Clone()
-transport = thinserver_env.get('TARGET_TRANSPORT')
+enrollee_env = env.Clone()
+transport = enrollee_env.get('TARGET_TRANSPORT')
######################################################################
# Build flags
######################################################################
if 'BLE' in transport:
- thinserver_env.PrependUnique(CPPPATH = [
+ enrollee_env.PrependUnique(CPPPATH = [
'../../../../../resource/oc_logger/include',
'../../../../../resource/csdk/logger/include',
'../../../../../resource/csdk/stack/include',
'../../../sdk/enrollee/common/inc',
'../../../sdk/enrollee/common/src'
])
- thinserver_env.AppendUnique(CPPDEFINES = ['TB_LOG', 'ESBLE'])
+ enrollee_env.AppendUnique(CPPDEFINES = ['TB_LOG', 'ESBLE'])
else :
- thinserver_env.PrependUnique(CPPPATH = [
+ enrollee_env.PrependUnique(CPPPATH = [
'../../../../../resource/oc_logger/include',
'../../../../../resource/csdk/logger/include',
'../../../../../resource/csdk/stack/include',
'../../../sdk/enrollee/common/inc',
'../../../sdk/enrollee/common/src'
])
- thinserver_env.AppendUnique(CPPDEFINES = ['TB_LOG', 'ESWIFI'])
+ enrollee_env.AppendUnique(CPPDEFINES = ['TB_LOG', 'ESWIFI'])
-thinserver_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
+enrollee_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-thinserver_env.PrependUnique(LIBS = ['octbstack','ocsrm','connectivity_abstraction','coap', 'ESSDKLibrary'])
+enrollee_env.PrependUnique(LIBS = ['octbstack','ocsrm','connectivity_abstraction','coap', 'ESSDKLibrary'])
if 'BLE' in transport:
- thinserver = thinserver_env.Program('thinserver', 'thinserverble.cpp')
+ enrollee = enrollee_env.Program('enrollee', 'enrollee_ble.cpp')
else :
- thinserver = thinserver_env.Program('thinserver', 'thinserver.cpp')
-env.CreateBin('thinserver')
+ enrollee = enrollee_env.Program('enrollee', 'enrollee_wifi.cpp')
+env.CreateBin('enrollee')
-i_thinserver = thinserver_env.Install(env.get('BUILD_DIR'), thinserver)
+i_enrollee = enrollee_env.Install(env.get('BUILD_DIR'), enrollee)
-Alias('thinserver', i_thinserver)
-env.AppendTarget('thinserver')
+Alias('enrollee', i_enrollee)
+env.AppendTarget('enrollee')
-if(thinserver_env['UPLOAD'] == True):
+if(enrollee_env['UPLOAD'] == True):
from sys import platform as _platform
if _platform == "linux" or _platform == "linux2":
- thinserver_env.Upload(env.get('BUILD_DIR') + '/service/easy-setup/sampleapp/arduino/thinserver/thinserver.hex')
+ enrollee_env.Upload(env.get('BUILD_DIR') + '/service/easy-setup/sampleapp/enrollee/arduino/enrollee.hex')
else:
print 'Please use appropriate install method for your developing machine. Linux is the only supported platform right now.'
Import('env')
-richclient_env = env.Clone()
+mediator_env = env.Clone()
target_os = env.get('TARGET_OS')
######################################################################
# Build flags
######################################################################
-richclient_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-richclient_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
+mediator_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
+mediator_env.AppendUnique(CPPDEFINES = ['TB_LOG'])
-richclient_env.PrependUnique(CPPPATH = [
+mediator_env.PrependUnique(CPPPATH = [
env.get('SRC_DIR') + '/resource/csdk/ocmalloc/include',
env.get('SRC_DIR') + '/resource/csdk/connectivity/common/inc',
env.get('SRC_DIR') + '/resource/csdk/connectivity/api',
env.get('SRC_DIR') + '/service/easy-setup/sdk/mediator/inc',
env.get('SRC_DIR') + '/service/easy-setup/sdk/common'])
-richclient_env.PrependUnique(LIBS = ['oc', 'octbstack', 'oc_logger', 'pthread', 'connectivity_abstraction', 'coap', 'ESSDKLibrary'])
+mediator_env.PrependUnique(LIBS = ['oc', 'octbstack', 'oc_logger', 'pthread', 'connectivity_abstraction', 'coap', 'ESSDKLibrary'])
-richclient = richclient_env.Program('richclient', 'easysetupsample.cpp')
+mediator = mediator_env.Program('mediator', 'mediator.cpp')
-i_richclient = richclient_env.Install(env.get('BUILD_DIR'), richclient)
+i_mediator = mediator_env.Install(env.get('BUILD_DIR'), mediator)
-Alias('richclient', i_richclient)
-env.AppendTarget('richclient')
+Alias('mediator', i_mediator)
+env.AppendTarget('mediator')
#include <stdint.h>
#include <sstream>
-#include "easysetupmgr.h"
+#include "prov_adapter.h"
#include "logger.h"
#define TAG "easysetupsample"
int quitFlag = 0;
/* SIGINT handler: set quitFlag to 1 for graceful termination */
-void handleSigInt(int signum)
-{
- if (signum == SIGINT)
- {
+void handleSigInt(int signum) {
+ if (signum == SIGINT) {
quitFlag = 1;
}
}
* and also holds the Enrollee information for which provisioning is requested
* This function can be used to update the application about the current provisioning status of the Enrollee
*/
-void ProvisioningStatusCallback(ProvisioningInfo *provInfo)
-{
+void ProvisioningStatusCallback(ProvisioningInfo * provInfo) {
OIC_LOG_V(INFO, TAG, "Enrollee connectivity: %d", provInfo->provDeviceInfo.connType);
- if (provInfo->provStatus == DEVICE_PROVISIONED)
- {
+ if (provInfo->provStatus == DEVICE_PROVISIONED) {
OIC_LOG_V(INFO, TAG, "Successfully provisioned the Enrollee with IP : %s ",
- provInfo->provDeviceInfo.addr->addr);
+ provInfo->provDeviceInfo.addr->addr);
}
- else
- {
+ else {
OIC_LOG_V(INFO, TAG, "Provisioing Failed for the Enrollee with IP : %s",
- provInfo->provDeviceInfo.addr->addr);
+ provInfo->provDeviceInfo.addr->addr);
}
}
-static void PrintUsage()
-{
+static void PrintUsage() {
OIC_LOG(INFO, TAG, "Usage : occlient -d \"192.168.0.20\"");
}
-int main(int argc, char**argv)
-{
+int main(int argc, char **argv) {
int opt;
EnrolleeNWProvInfo_t netInfo;
PrintUsage();
RegisterProvisioningStausCallback(ProvisioningStatusCallback);
- while ((opt = getopt(argc, argv, "d:s:p:")) != -1)
- {
- switch (opt)
- {
+ while ((opt = getopt(argc, argv, "d:s:p:")) != -1) {
+ switch (opt) {
case 'd':
strncpy(netInfo.netAddressInfo.WIFI.ipAddress, optarg, IPV4_ADDR_SIZE - 1);
break;
netInfo.connType = CT_ADAPTER_IP;
OIC_LOG_V(INFO, TAG, "IP Address of the Provisioning device is =%s\n",
- netInfo.netAddressInfo.WIFI.ipAddress);
+ netInfo.netAddressInfo.WIFI.ipAddress);
OIC_LOG_V(INFO, TAG, "SSID of the Enroller is =%s\n", netInfo.netAddressInfo.WIFI.ssid);
OIC_LOG_V(INFO, TAG, "Password of the Enroller is =%s\n", netInfo.netAddressInfo.WIFI.pwd);
ProvisionEnrollee(&netInfo);
signal(SIGINT, handleSigInt);
- while (!quitFlag)
- {
+ while (!quitFlag) {
sleep(1);
}
-//******************************************************************\r
-//\r
-// Copyright 2015 Samsung Electronics All Rights Reserved.\r
-//\r
-//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
-//\r
-// Licensed under the Apache License, Version 2.0 (the "License");\r
-// you may not use this file except in compliance with the License.\r
-// You may obtain a copy of the License at\r
-//\r
-// http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-// Unless required by applicable law or agreed to in writing, software\r
-// distributed under the License is distributed on an "AS IS" BASIS,\r
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-// See the License for the specific language governing permissions and\r
-// limitations under the License.\r
-//\r
-//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
-\r
-#include "jni_easy_setup.h"\r
-\r
-#include "jni_easy_setup_jvm.h"\r
-#include "easysetupmgr.h"\r
-\r
-void JNIProvisioningStatusCallback(ProvisioningInfo *provInfo)\r
-{\r
- JNIEnv *env = EasySetupJVM::getEnv();\r
- if (env == NULL)\r
- {\r
- LOGE("JNIProvisioningStatusCallback : Getting JNIEnv failed");\r
- return;\r
- }\r
-\r
- // Get EasySetupHandler class reference\r
- jclass easysetupCallbacks = GetJClass(EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);\r
- if (NULL == easysetupCallbacks)\r
- {\r
- LOGE("JNIProvisioningStatusCallback : GetJClass easysetupCallbacks failed");\r
- EasySetupJVM::releaseEnv();\r
- return;\r
- }\r
-\r
- // Get the easysetupCallback class instance\r
- jobject jobjectCallback = GetJObjectInstance(EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);\r
- if (NULL == jobjectCallback)\r
- {\r
- LOGE("getInstance( %s) failed!", EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);\r
- EasySetupJVM::releaseEnv();\r
- return;\r
- }\r
-\r
- // Get onResourceCallback method reference\r
- jmethodID method_id = env->GetMethodID(easysetupCallbacks, "ProvisioningStatusCallBack",\r
- METHOD_PROVISIONING_STATUS_INTEGER_CALLBACK);\r
- if (NULL == method_id)\r
- {\r
- LOGE("JNIProvisioningStatusCallback: onResourceCallback : GetMethodID failed");\r
- EasySetupJVM::releaseEnv();\r
- return;\r
- }\r
-\r
- if ((env)->ExceptionCheck())\r
- {\r
- LOGE("JNIProvisioningStatusCallback : ExceptionCheck failed");\r
- EasySetupJVM::releaseEnv();\r
- return;\r
- }\r
-\r
- if (NULL == method_id)\r
- {\r
- LOGI("JNI method_id is NULL");\r
- }\r
- else\r
- {\r
- LOGI("JNI method_id is VALID");\r
-\r
- jint result;\r
- if (provInfo->provStatus == DEVICE_PROVISIONED)\r
- {\r
- result = 0;\r
- }\r
- else\r
- {\r
- result = -1;\r
- }\r
-\r
- env->CallVoidMethod(jobjectCallback, method_id, (jint) result);\r
- }\r
-\r
- EasySetupJVM::releaseEnv();\r
-}\r
-\r
-JNIEXPORT void JNICALL JNIInitEasySetup(JNIEnv *env, jobject thisObj)\r
-{\r
- LOGI("JNI JNIInitEasySetup: Enter");\r
- InitEasySetupManager();\r
- RegisterProvisioningStausCallback(JNIProvisioningStatusCallback);\r
-}\r
-\r
-JNIEXPORT void JNICALL JNITerminateEasySetup(JNIEnv *env, jobject thisObj)\r
-{\r
- LOGI("JNI JNITerminateEasySetup: Enter");\r
- TerminateEasySetupManager();\r
-}\r
-\r
-JNIEXPORT void JNICALL JNIProvisionEnrollee(JNIEnv *env, jobject thisObj,\r
- jstring jIPAddress,\r
- jstring jNetSSID,\r
- jstring jNetPWD,\r
- jint jConnectivityType)\r
-{\r
- LOGI("JNI JNIProvisionEnrollee: Enter");\r
-\r
- if (!jIPAddress)\r
- {\r
- LOGE("JNI JNIProvisionEnrollee : jIPAddress is NULL!");\r
- return;\r
- }\r
-\r
- const char *ipAddress = env->GetStringUTFChars(jIPAddress, NULL);\r
- if (NULL == ipAddress)\r
- {\r
- LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");\r
- }\r
-\r
- LOGI("JNI JNIProvisionEnrollee : ipAddress is : %s",ipAddress);\r
-\r
- const char *netSSID = env->GetStringUTFChars(jNetSSID, NULL);\r
- if (NULL == netSSID)\r
- {\r
- LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");\r
- }\r
-\r
- LOGI("JNI JNIProvisionEnrollee : netSSID is : %s",netSSID);\r
-\r
- const char *netPWD = env->GetStringUTFChars(jNetPWD, NULL);\r
- if (NULL == netPWD)\r
- {\r
- LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");\r
- }\r
-\r
- LOGI("JNI JNIProvisionEnrollee : netPWD is : %s",netPWD);\r
-\r
- OCConnectivityType connecitivityType;\r
- EnrolleeNWProvInfo_t netInfo =\r
- { 0};\r
- strncpy(netInfo.netAddressInfo.WIFI.ipAddress, ipAddress, IPV4_ADDR_SIZE-1);\r
- strncpy(netInfo.netAddressInfo.WIFI.ssid, netSSID, NET_WIFI_SSID_SIZE-1);\r
- strncpy(netInfo.netAddressInfo.WIFI.pwd, netPWD, NET_WIFI_PWD_SIZE-1);\r
- netInfo.connType = (OCConnectivityType)jConnectivityType;\r
-\r
- if(netInfo.connType==CT_ADAPTER_GATT_BTLE)\r
- {\r
- \r
- strncpy(netInfo.netAddressInfo.LE.leMacAddress,ipAddress,NET_MACADDR_SIZE-1);\r
- LOGI("MAC set=%s",netInfo.netAddressInfo.LE.leMacAddress);\r
-\r
- }\r
- netInfo.isSecured = true;\r
-\r
- ProvisionEnrollee(&netInfo);\r
-\r
- return;\r
-}\r
-\r
-JNIEXPORT void JNICALL JNIStopEnrolleeProvisioning(JNIEnv *env, jobject thisObj,\r
- jint jConnectivityType)\r
-{\r
- LOGI("JNI Stop Easy Setup: Entering");\r
-\r
- OCConnectivityType connecitivityType=OCConnectivityType::CT_DEFAULT;\r
-\r
- if(jConnectivityType == 0)\r
- {\r
- connecitivityType = OCConnectivityType::CT_ADAPTER_IP;\r
- }\r
-\r
- StopEnrolleeProvisioning(connecitivityType);\r
-\r
- return;\r
-}\r
-\r
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#include "jni_easy_setup.h"
+
+#include "jni_easy_setup_jvm.h"
+#include "prov_adapter.h"
+
+void JNIProvisioningStatusCallback(ProvisioningInfo * provInfo) {
+ JNIEnv *env = EasySetupJVM::getEnv();
+ if (env == NULL) {
+ LOGE("JNIProvisioningStatusCallback : Getting JNIEnv failed");
+ return;
+ }
+
+ // Get EasySetupHandler class reference
+ jclass easysetupCallbacks = GetJClass(EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);
+ if (NULL == easysetupCallbacks) {
+ LOGE("JNIProvisioningStatusCallback : GetJClass easysetupCallbacks failed");
+ EasySetupJVM::releaseEnv();
+ return;
+ }
+
+ // Get the easysetupCallback class instance
+ jobject jobjectCallback = GetJObjectInstance(EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);
+ if (NULL == jobjectCallback) {
+ LOGE("getInstance( %s) failed!", EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);
+ EasySetupJVM::releaseEnv();
+ return;
+ }
+
+ // Get onResourceCallback method reference
+ jmethodID method_id = env->GetMethodID(easysetupCallbacks, "ProvisioningStatusCallBack",
+ METHOD_PROVISIONING_STATUS_INTEGER_CALLBACK);
+ if (NULL == method_id) {
+ LOGE("JNIProvisioningStatusCallback: onResourceCallback : GetMethodID failed");
+ EasySetupJVM::releaseEnv();
+ return;
+ }
+
+ if ((env)->ExceptionCheck()) {
+ LOGE("JNIProvisioningStatusCallback : ExceptionCheck failed");
+ EasySetupJVM::releaseEnv();
+ return;
+ }
+
+ if (NULL == method_id) {
+ LOGI("JNI method_id is NULL");
+ }
+ else {
+ LOGI("JNI method_id is VALID");
+
+ jint result;
+ if (provInfo->provStatus == DEVICE_PROVISIONED) {
+ result = 0;
+ }
+ else {
+ result = -1;
+ }
+
+ env->CallVoidMethod(jobjectCallback, method_id, (jint) result);
+ }
+
+ EasySetupJVM::releaseEnv();
+}
+
+JNIEXPORT void JNICALL
+JNIInitEasySetup(JNIEnv
+*env,
+jobject thisObj
+)
+{
+LOGI("JNI JNIInitEasySetup: Enter");
+
+InitEasySetupManager();
+
+RegisterProvisioningStausCallback(JNIProvisioningStatusCallback);
+}
+
+JNIEXPORT void JNICALL
+JNITerminateEasySetup(JNIEnv
+*env,
+jobject thisObj
+)
+{
+LOGI("JNI JNITerminateEasySetup: Enter");
+
+TerminateEasySetupManager();
+
+}
+
+JNIEXPORT void JNICALL
+JNIProvisionEnrollee(JNIEnv
+*env,
+jobject thisObj,
+ jstring
+jIPAddress,
+jstring jNetSSID,
+ jstring
+jNetPWD,
+jint jConnectivityType
+)
+{
+LOGI("JNI JNIProvisionEnrollee: Enter");
+
+if (!jIPAddress)
+{
+LOGE("JNI JNIProvisionEnrollee : jIPAddress is NULL!");
+return;
+}
+
+const char *ipAddress = env->GetStringUTFChars(jIPAddress, NULL);
+if (NULL == ipAddress)
+{
+LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");
+}
+
+LOGI("JNI JNIProvisionEnrollee : ipAddress is : %s",ipAddress);
+
+const char *netSSID = env->GetStringUTFChars(jNetSSID, NULL);
+if (NULL == netSSID)
+{
+LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");
+}
+
+LOGI("JNI JNIProvisionEnrollee : netSSID is : %s",netSSID);
+
+const char *netPWD = env->GetStringUTFChars(jNetPWD, NULL);
+if (NULL == netPWD)
+{
+LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");
+}
+
+LOGI("JNI JNIProvisionEnrollee : netPWD is : %s",netPWD);
+
+OCConnectivityType connecitivityType;
+EnrolleeNWProvInfo_t netInfo =
+ {0};
+strncpy(netInfo
+.netAddressInfo.WIFI.ipAddress, ipAddress, IPV4_ADDR_SIZE-1);
+strncpy(netInfo
+.netAddressInfo.WIFI.ssid, netSSID, NET_WIFI_SSID_SIZE-1);
+strncpy(netInfo
+.netAddressInfo.WIFI.pwd, netPWD, NET_WIFI_PWD_SIZE-1);
+netInfo.
+connType = (OCConnectivityType) jConnectivityType;
+
+if(netInfo.connType==CT_ADAPTER_GATT_BTLE)
+{
+
+strncpy(netInfo
+.netAddressInfo.LE.leMacAddress,ipAddress,NET_MACADDR_SIZE-1);
+LOGI("MAC set=%s",netInfo.netAddressInfo.LE.leMacAddress);
+
+}
+netInfo.
+isSecured = true;
+
+ProvisionEnrollee(&netInfo);
+
+return;
+}
+
+JNIEXPORT void JNICALL
+JNIStopEnrolleeProvisioning(JNIEnv
+*env,
+jobject thisObj,
+ jint
+jConnectivityType)
+{
+LOGI("JNI Stop Easy Setup: Entering");
+
+OCConnectivityType connecitivityType = OCConnectivityType::CT_DEFAULT;
+
+if(jConnectivityType == 0)
+{
+connecitivityType = OCConnectivityType::CT_ADAPTER_IP;
+}
+
+StopEnrolleeProvisioning(connecitivityType);
+
+return;
+}
+
#include "octypes.h"
#include "common.h"
-#include "provisioninghandler.h"
+#include "provisioning.h"
//-----------------------------------------------------------------------------
OCStackResult TerminateProvisioningHandler();
-void listeningFunc(void*);
+void *listeningFunc(void *);
-OCStackApplicationResult ProvisionEnrolleeResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse);
+OCStackApplicationResult ProvisionEnrolleeResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse);
-OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char* query, const char* resUri,OCDevAddr *destination);
+OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char *query, const char *resUri,
+ OCDevAddr *destination);
-OCStackApplicationResult GetProvisioningStatusResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse);
+OCStackApplicationResult GetProvisioningStatusResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse);
-OCStackResult InvokeOCDoResource(const char* query, OCMethod method, const OCDevAddr *dest,
- OCQualityOfService qos, OCClientResponseHandler cb, OCRepPayload* payload,
- OCHeaderOption * options, uint8_t numOptions);
+OCStackResult InvokeOCDoResource(const char *query, OCMethod method, const OCDevAddr *dest,
+ OCQualityOfService qos, OCClientResponseHandler cb,
+ OCRepPayload *payload,
+ OCHeaderOption *options, uint8_t numOptions);
-OCStackResult GetProvisioningStatus(OCQualityOfService qos, const char* query,
- const OCDevAddr*destination);
+OCStackResult GetProvisioningStatus(OCQualityOfService qos, const char *query,
+ const OCDevAddr *destination);
OCStackResult StartProvisioningProcess(const EnrolleeNWProvInfo_t *netInfo,
- OCProvisioningStatusCB provisioningStatusCallback);
+ OCProvisioningStatusCB provisioningStatusCallback);
void StopProvisioningProcess();
-OCStackApplicationResult SubscribeProvPresenceCallback(void* ctx, OCDoHandle handle,
- OCClientResponse* clientResponse);
+OCStackApplicationResult SubscribeProvPresenceCallback(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse);
-OCStackResult SubscribeProvPresence(OCQualityOfService qos, const char* requestURI);
+OCStackResult SubscribeProvPresence(OCQualityOfService qos, const char *requestURI);
-OCStackApplicationResult FindProvisioningResourceResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse);
+OCStackApplicationResult FindProvisioningResourceResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse);
-void FindProvisioningResource(void *data);
+void *FindProvisioningResource(void *data);
//Invoke Provisioning Status Callback
-ProvisioningInfo* PrepareProvisioingStatusCB(OCClientResponse * clientResponse,
- ProvStatus provStatus);
+ProvisioningInfo *PrepareProvisioingStatusCB(OCClientResponse *clientResponse,
+ ProvStatus provStatus);
-void LogProvisioningResponse(OCRepPayloadValue* val);
+void LogProvisioningResponse(OCRepPayloadValue * val);
bool ConfigEnrolleeObject(const EnrolleeNWProvInfo_t *netInfo);
bool ValidateFinddResourceResponse(OCClientResponse * clientResponse);
-ProvisioningInfo* GetCallbackObjectOnSuccess(OCClientResponse * clientResponse,
- ProvStatus provStatus);
+ProvisioningInfo *GetCallbackObjectOnSuccess(OCClientResponse *clientResponse,
+ ProvStatus provStatus);
-ProvisioningInfo* GetCallbackObjectOnError(ProvStatus status);
+ProvisioningInfo *GetCallbackObjectOnError(ProvStatus status);
-ProvisioningInfo* CreateCallBackObject();
+ProvisioningInfo *CreateCallBackObject();
bool ResetProgress();
bool InProgress();
bool ValidateEasySetupParams(const EnrolleeNWProvInfo_t *netInfo,
- OCProvisioningStatusCB provisioningStatusCallback);
+ OCProvisioningStatusCB provisioningStatusCallback);
#endif
#include <string.h>
#include <signal.h>
#include <unistd.h>
+#include <pthread.h>
+
#include "ocpayload.h"
-#include "provisioninghandler.h"
+#include "provisioning.h"
#include "common.h"
// External includes
#include "cathreadpool.h"
#include "logger.h"
#include "oic_malloc.h"
+
static bool sent_provision_request = false;
-/**
- * @var g_provisioningMutex
- * @brief Mutex to synchronize access to g_caDtlsContext.
- */
-static ca_mutex g_provisioningMutex = NULL;
-static ca_cond g_provisioningCond = NULL;
+
bool g_provisioningCondFlag = false;
-static EnrolleeNWProvInfo_t* netProvInfo;
+static EnrolleeNWProvInfo_t *netProvInfo;
/**
* @var cbData
* @brief Callback for providing provisioning status callback to application
*/
static OCProvisioningStatusCB cbData = NULL;
-static ca_thread_pool_t g_threadPoolHandle = NULL;
-void ErrorCallback(ProvStatus status)
-{
+void ErrorCallback(ProvStatus status) {
ProvisioningInfo *provInfo = GetCallbackObjectOnError(status);
cbData(provInfo);
}
-OCStackResult InitProvisioningHandler()
-{
+OCStackResult InitProvisioningHandler() {
OCStackResult ret = OC_STACK_ERROR;
/* Initialize OCStack*/
- if (OCInit(NULL, 0, OC_CLIENT) != OC_STACK_OK)
- {
+ if (OCInit(NULL, 0, OC_CLIENT) != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack init error");
return ret;
}
- g_provisioningMutex = ca_mutex_new();
- OIC_LOG(DEBUG, TAG, "ca_thread_pool_init initializing");
+ char *string = "listeningFunc invoked in a thread";
- if (CA_STATUS_OK != ca_thread_pool_init(2, &g_threadPoolHandle))
- {
- OIC_LOG(DEBUG, TAG, "thread_pool_init failed");
- return OC_STACK_ERROR;
- }
+ pthread_t thread_handle;
- g_provisioningCond = ca_cond_new();
- if (NULL == g_provisioningCond)
- {
- OIC_LOG(DEBUG, TAG, "Failed to create condition");
- ca_mutex_free(g_provisioningMutex);
- ca_thread_pool_free(g_threadPoolHandle);
+ if (pthread_create(&thread_handle, NULL, listeningFunc, (void *) string)) {
+ OIC_LOG(DEBUG, TAG, "Thread creation failed");
return OC_STACK_ERROR;
}
- char *string = "listeningFunc invoked in a thread";
- if (CA_STATUS_OK != ca_thread_pool_add_task(g_threadPoolHandle, listeningFunc, (void *) string))
- {
- OIC_LOG(DEBUG, TAG, "thread_pool_add_task failed");
- ca_thread_pool_free(g_threadPoolHandle);
- ca_mutex_unlock(g_provisioningMutex);
- ca_mutex_free(g_provisioningMutex);
- ca_cond_free(g_provisioningCond);
- return OC_STACK_ERROR;
- }
+ pthread_join(thread_handle, NULL);
+
+ //TODO : Below call is done in wifi case
+ // ResetProgress();
+
+
return OC_STACK_OK;
}
-OCStackResult TerminateProvisioningHandler()
-{
+OCStackResult TerminateProvisioningHandler() {
OCStackResult ret = OC_STACK_ERROR;
- if (OCStop() != OC_STACK_OK)
- {
+ if (OCStop() != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack stop error");
}
- ca_mutex_lock(g_provisioningMutex);
g_provisioningCondFlag = true;
- //ca_cond_signal(g_provisioningCond);
- ca_mutex_unlock(g_provisioningMutex);
-
- ca_mutex_free(g_provisioningMutex);
- g_provisioningMutex = NULL;
- ca_thread_pool_free(g_threadPoolHandle);
- g_threadPoolHandle = NULL;
ret = OC_STACK_OK;
return ret;
}
-void listeningFunc(void *data)
-{
- while (!g_provisioningCondFlag)
- {
+void *listeningFunc(void *data) {
+ while (!g_provisioningCondFlag) {
OCStackResult result;
- ca_mutex_lock(g_provisioningMutex);
result = OCProcess();
- ca_mutex_unlock(g_provisioningMutex);
- if (result != OC_STACK_OK)
- {
+ if (result != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack stop error");
}
}
}
-OCStackApplicationResult ProvisionEnrolleeResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse)
-{
+OCStackApplicationResult ProvisionEnrolleeResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse) {
OIC_LOG_V(DEBUG, TAG, "INSIDE ProvisionEnrolleeResponse");
ProvisioningInfo *provInfo;
- if (!ValidateEnrolleResponse(clientResponse))
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (!ValidateEnrolleResponse(clientResponse)) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
- char* tnn;
- char* cd;
+ char *tnn;
+ char *cd;
- OCRepPayload* input = (OCRepPayload*) (clientResponse->payload);
+ OCRepPayload *input = (OCRepPayload * )(clientResponse->payload);
- while (input)
- {
+ while (input) {
int64_t ps;
- if (OCRepPayloadGetPropInt(input, OC_RSRVD_ES_PS, &ps))
- {
+ if (OCRepPayloadGetPropInt(input, OC_RSRVD_ES_PS, &ps)) {
- if (ps == 1)
- {
+ if (ps == 1) {
input = input->next;
continue;
}
- else
- {
+ else {
OIC_LOG_V(DEBUG, TAG, "PS is NOT proper");
goto Error;
}
}
- if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_TNN, &tnn))
- {
- if (!strcmp(tnn, netProvInfo->netAddressInfo.WIFI.ssid))
- {
+ if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_TNN, &tnn)) {
+ if (!strcmp(tnn, netProvInfo->netAddressInfo.WIFI.ssid)) {
OIC_LOG_V(DEBUG, TAG, "SSID is proper");
input = input->next;
continue;
}
- else
- {
+ else {
OIC_LOG_V(DEBUG, TAG, "SSID is NOT proper");
goto Error;
}
}
- if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd))
- {
- if (!strcmp(cd, netProvInfo->netAddressInfo.WIFI.pwd))
- {
+ if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd)) {
+ if (!strcmp(cd, netProvInfo->netAddressInfo.WIFI.pwd)) {
OIC_LOG_V(DEBUG, TAG, "Password is proper");
input = input->next;
continue;
}
- else
- {
+ else {
OIC_LOG_V(DEBUG, TAG, "Password is NOT proper");
goto Error;
}
Error:
{
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
}
-OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char* query, const char* resUri,
- OCDevAddr *destination)
-{
+OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char *query, const char *resUri,
+ OCDevAddr *destination) {
OIC_LOG_V(INFO, TAG, "Sleeping for 2 seconds");
sleep(2);
OIC_LOG_V(INFO, TAG, "\n\nExecuting ProvisionEnrollee%s", __func__);
- OCRepPayload* payload = OCRepPayloadCreate();
+ OCRepPayload *payload = OCRepPayloadCreate();
OCRepPayloadSetUri(payload, resUri);
OCRepPayloadSetPropString(payload, OC_RSRVD_ES_TNN, netProvInfo->netAddressInfo.WIFI.ssid);
OIC_LOG_V(DEBUG, TAG, "OCPayload ready for ProvisionEnrollee");
OCStackResult ret = InvokeOCDoResource(query, OC_REST_PUT, destination, OC_HIGH_QOS,
- ProvisionEnrolleeResponse, payload, NULL, 0);
+ ProvisionEnrolleeResponse, payload, NULL, 0);
return ret;
}
-OCStackApplicationResult GetProvisioningStatusResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse)
-{
+
+OCStackApplicationResult GetProvisioningStatusResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse) {
if (sent_provision_request == true)
return OC_STACK_DELETE_TRANSACTION;
sent_provision_request = true;
ProvisioningInfo *provInfo;
- if (!ValidateEnrolleResponse(clientResponse))
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (!ValidateEnrolleResponse(clientResponse)) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
ClearMemory();
return OC_STACK_DELETE_TRANSACTION;
}
- OCRepPayload* input = (OCRepPayload*) (clientResponse->payload);
+ OCRepPayload *input = (OCRepPayload * )(clientResponse->payload);
char query[OIC_STRING_MAX_VALUE] =
- { '\0' };
+ {'\0'};
char resURI[MAX_URI_LENGTH] =
- { '\0' };
+ {'\0'};
OIC_LOG_V(DEBUG, TAG, "resUri = %s", input->uri);
- strncpy(resURI, input->uri, sizeof(resURI))-1;
+ strncpy(resURI, input->uri, sizeof(resURI) - 1);
snprintf(query, sizeof(query), UNICAST_PROVISIONING_QUERY_BLE, clientResponse->addr->addr);
//OCPayloadLogRep(DEBUG,TAG,input);
- if (ProvisionEnrollee(OC_HIGH_QOS, query, OC_RSRVD_ES_URI_PROV, devaddress) != OC_STACK_OK)
- {
+ if (ProvisionEnrollee(OC_HIGH_QOS, query, OC_RSRVD_ES_URI_PROV, devaddress) != OC_STACK_OK) {
OIC_LOG(INFO, TAG,
"GetProvisioningStatusResponse received NULL clientResponse.Invoking Provisioing Status Callback");
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
ClearMemory();
return OC_STACK_DELETE_TRANSACTION;
}
}
-OCStackResult InvokeOCDoResource(const char* query, OCMethod method, const OCDevAddr *dest,
- OCQualityOfService qos, OCClientResponseHandler cb, OCRepPayload* payload,
- OCHeaderOption * options, uint8_t numOptions)
-{
+OCStackResult InvokeOCDoResource(const char *query, OCMethod method, const OCDevAddr *dest,
+ OCQualityOfService qos, OCClientResponseHandler cb,
+ OCRepPayload *payload,
+ OCHeaderOption *options, uint8_t numOptions) {
OCStackResult ret;
OCCallbackData cbData;
cbData.cb = cb;
- cbData.context = (void*) DEFAULT_CONTEXT_VALUE;
+ cbData.context = (void *) DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
- ret = OCDoResource(NULL, method, query, dest, (OCPayload*) payload, OC_CONNTYPE_BLE, qos,
- &cbData, options, numOptions);
+ ret = OCDoResource(NULL, method, query, dest, (OCPayload *) payload, OC_CONNTYPE_BLE, qos,
+ &cbData, options, numOptions);
- if (ret != OC_STACK_OK)
- {
+ if (ret != OC_STACK_OK) {
OIC_LOG_V(ERROR, TAG, "OCDoResource returns error %d with method %d", ret, method);
}
return ret;
}
-OCStackResult GetProvisioningStatus(OCQualityOfService qos, const char* query,
- const OCDevAddr *destination)
-{
+OCStackResult GetProvisioningStatus(OCQualityOfService qos, const char *query,
+ const OCDevAddr *destination) {
OCStackResult ret = OC_STACK_ERROR;
OIC_LOG_V(INFO, TAG, "\n\nExecuting %s %d", __func__, destination->adapter);
ret = InvokeOCDoResource(query, OC_REST_GET, destination, OC_HIGH_QOS,
- GetProvisioningStatusResponse, NULL, NULL, 0);
+ GetProvisioningStatusResponse, NULL, NULL, 0);
return ret;
}
OCStackResult StartProvisioningProcess(const EnrolleeNWProvInfo_t *netInfo,
- OCProvisioningStatusCB provisioningStatusCallback)
-{
+ OCProvisioningStatusCB provisioningStatusCallback) {
OCStackResult result = OC_STACK_ERROR;
- if (!ValidateEasySetupParams(netInfo, provisioningStatusCallback))
- {
+ char *string = "Starting provisioning process ";
+
+ pthread_t thread_handle;
+
+ if (!ValidateEasySetupParams(netInfo, provisioningStatusCallback)) {
goto Error;
}
//Only basis test is done for below API
- if (!SetProgress(provisioningStatusCallback))
- {
+ if (!SetProgress(provisioningStatusCallback)) {
// Device provisioning session is running already.
OIC_LOG(INFO, TAG, PCF("Device provisioning session is running already"));
goto Error;
}
- if (!ConfigEnrolleeObject(netInfo))
- {
+ if (!ConfigEnrolleeObject(netInfo)) {
goto Error;
}
- if (CA_STATUS_OK != ca_thread_pool_add_task(g_threadPoolHandle, FindProvisioningResource,
- (void *) ""))
- {
+ if (pthread_create(&thread_handle, NULL, FindProvisioningResource, (void *) string)) {
goto Error;
+
}
+ pthread_join(thread_handle, NULL);
+
+
return OC_STACK_OK;
Error:
{
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
ClearMemory();
return OC_STACK_ERROR;
}
}
-void StopProvisioningProcess()
-{
+void StopProvisioningProcess() {
//Only basis test is done for below API
ResetProgress();
}
// This is a function called back when a device is discovered
-OCStackApplicationResult FindProvisioningResourceResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse)
-{
+OCStackApplicationResult FindProvisioningResourceResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse) {
OIC_LOG(INFO, TAG, PCF("Entering FindProvisioningResourceResponse"));
- if (!ValidateFinddResourceResponse(clientResponse))
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (!ValidateFinddResourceResponse(clientResponse)) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
ProvisioningInfo *provInfo;
char szQueryUri[64] =
- { 0 };
+ {0};
- OCDiscoveryPayload* discoveryPayload = (OCDiscoveryPayload*) (clientResponse->payload);
+ OCDiscoveryPayload *discoveryPayload = (OCDiscoveryPayload * )(clientResponse->payload);
// Need to conform if below check is required or not. As Null check of clientResponse->payload is already performed above
- if (!discoveryPayload)
- {
+ if (!discoveryPayload) {
OIC_LOG_V(DEBUG, TAG, "Failed To parse");
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
OIC_LOG_V(DEBUG, TAG, "resUri = %s", discoveryPayload->resources->uri);
snprintf(szQueryUri, sizeof(szQueryUri), UNICAST_PROVISIONING_QUERY_BLE,
- clientResponse->addr->addr);
+ clientResponse->addr->addr);
OCDevAddr *devaddress = &clientResponse->devAddr;
devaddress->adapter = OC_ADAPTER_GATT_BTLE;
if (strcmp(netProvInfo->netAddressInfo.WIFI.ipAddress, clientResponse->devAddr.addr))
OIC_LOG_V(INFO, TAG, "unequal %s %s", netProvInfo->netAddressInfo.WIFI.ipAddress,
- clientResponse->devAddr.addr);
+ clientResponse->devAddr.addr);
else
OIC_LOG_V(INFO, TAG, "unequal %s %s", netProvInfo->netAddressInfo.WIFI.ipAddress,
- clientResponse->devAddr.addr);
+ clientResponse->devAddr.addr);
OIC_LOG_V(DEBUG, TAG, "query before GetProvisioningStatus call = %s %d", szQueryUri,
- devaddress->adapter);
+ devaddress->adapter);
- if (GetProvisioningStatus(OC_HIGH_QOS, szQueryUri, devaddress) != OC_STACK_OK)
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (GetProvisioningStatus(OC_HIGH_QOS, szQueryUri, devaddress) != OC_STACK_OK) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
}
-void FindProvisioningResource(void *data)
-{
+void *FindProvisioningResource(void *data) {
OCStackResult ret = OC_STACK_ERROR;
/* Start a discovery query*/
char szQueryUri[64] =
- { 0 };
+ {0};
snprintf(szQueryUri, sizeof(szQueryUri), MULTICAST_PROVISIONING_QUERY_BLE);
OCCallbackData ocCBData;
ocCBData.cb = FindProvisioningResourceResponse;
- ocCBData.context = (void*) DEFAULT_CONTEXT_VALUE;
+ ocCBData.context = (void *) DEFAULT_CONTEXT_VALUE;
ocCBData.cd = NULL;
ret = OCDoResource(NULL, OC_REST_DISCOVER, szQueryUri, NULL, NULL, OC_CONNTYPE_BLE, OC_LOW_QOS,
- &ocCBData, NULL, 0);
+ &ocCBData, NULL, 0);
- if (ret != OC_STACK_OK)
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (ret != OC_STACK_OK) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
ClearMemory();
}
}
-OCStackApplicationResult SubscribeProvPresenceCallback(void* ctx, OCDoHandle handle,
- OCClientResponse* clientResponse)
-{
+OCStackApplicationResult SubscribeProvPresenceCallback(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse) {
OIC_LOG(INFO, TAG, PCF("Entering SubscribeProvPresenceCallback"));
OCStackApplicationResult response = OC_STACK_DELETE_TRANSACTION;
- if (clientResponse == NULL)
- {
+ if (clientResponse == NULL) {
// clientResponse is invalid
OIC_LOG(ERROR, TAG, PCF("Client Response is NULL!"));
return response;
}
- else
- {
-
- OIC_LOG(INFO, TAG, PCF("Client Response exists"));
- if (clientResponse->result != OC_STACK_OK)
-
- {
+ else {
+ if (clientResponse->result != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack stop error");
return response;
}
- if (clientResponse->payload && clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION)
- {
+ if (clientResponse->payload &&
+ clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION) {
OIC_LOG_V(DEBUG, TAG, "Incoming payload not a representation");
return response;
}
- OCRepPayload* discoveryPayload = (OCRepPayload*) (clientResponse->payload);
- if (!discoveryPayload)
- {
+ OCRepPayload *discoveryPayload = (OCRepPayload * )(clientResponse->payload);
+ if (!discoveryPayload) {
OIC_LOG_V(DEBUG, TAG, "invalid payload");
return response;
}
char sourceIPAddr[OIC_STRING_MAX_VALUE] =
- { '\0' };
+ {'\0'};
snprintf(sourceIPAddr, sizeof(sourceIPAddr), "%s", clientResponse->addr->addr);
OIC_LOG_V(DEBUG, TAG, "Discovered %s @ %s", discoveryPayload->uri, sourceIPAddr);
/* Start a discovery query*/
char szQueryUri[64] =
- { 0 };
+ {0};
snprintf(szQueryUri, sizeof(szQueryUri), UNICAST_PROVISIONING_QUERY, sourceIPAddr, IP_PORT);
return OC_STACK_KEEP_TRANSACTION;
}*/
}
+
return OC_STACK_KEEP_TRANSACTION;
+
}
-OCStackResult SubscribeProvPresence(OCQualityOfService qos, const char* requestURI)
-{
+OCStackResult SubscribeProvPresence(OCQualityOfService qos, const char *requestURI) {
OCStackResult ret = OC_STACK_ERROR;
OCCallbackData cbData;
cbData.cb = &SubscribeProvPresenceCallback;
- cbData.context = (void*) DEFAULT_CONTEXT_VALUE;
+ cbData.context = (void *) DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
ret = OCDoResource(NULL, OC_REST_PRESENCE, requestURI, 0, 0, OC_CONNTYPE_BLE, OC_LOW_QOS,
- &cbData, NULL, 0);
+ &cbData, NULL, 0);
- if (ret != OC_STACK_OK)
- {
+ if (ret != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack resource error");
}
return ret;
}
-OCStackResult FindNetworkResource()
-{
+OCStackResult FindNetworkResource() {
OCStackResult ret = OC_STACK_ERROR;
- if (OCStop() != OC_STACK_OK)
- {
+ if (OCStop() != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack stop error");
}
return ret;
}
-ProvisioningInfo* PrepareProvisioingStatusCB(OCClientResponse * clientResponse,
- ProvStatus provStatus)
-{
+ProvisioningInfo *PrepareProvisioingStatusCB(OCClientResponse *clientResponse,
+ ProvStatus provStatus) {
ProvisioningInfo *provInfo = (ProvisioningInfo *) OICCalloc(1, sizeof(ProvisioningInfo));
- if (provInfo == NULL)
- {
+ if (provInfo == NULL) {
OIC_LOG_V(ERROR, TAG, "Failed to allocate memory");
return NULL;
}
OCDevAddr *devAddr = (OCDevAddr *) OICCalloc(1, sizeof(OCDevAddr));
- if (devAddr == NULL)
- {
+ if (devAddr == NULL) {
OIC_LOG_V(ERROR, TAG, "Failed to allocate memory");
return NULL;
}
}
bool ValidateEasySetupParams(const EnrolleeNWProvInfo_t *netInfo,
- OCProvisioningStatusCB provisioningStatusCallback)
-{
+ OCProvisioningStatusCB provisioningStatusCallback) {
- if (netInfo == NULL || netInfo->netAddressInfo.WIFI.ipAddress == NULL)
- {
+ if (netInfo == NULL || netInfo->netAddressInfo.WIFI.ipAddress == NULL) {
OIC_LOG(ERROR, TAG, "Request URI is NULL");
return false;
}
- if (provisioningStatusCallback == NULL)
- {
+ if (provisioningStatusCallback == NULL) {
OIC_LOG(ERROR, TAG, "ProvisioningStatusCallback is NULL");
return false;
}
}
-bool InProgress()
-{
+bool InProgress() {
// It means already Easy Setup provisioning session is going on.
- if (NULL != cbData)
- {
+ if (NULL != cbData) {
OIC_LOG(ERROR, TAG, "Easy setup session is already in progress");
return true;
}
return false;
}
-bool SetProgress(OCProvisioningStatusCB provisioningStatusCallback)
-{
- ca_mutex_lock(g_provisioningMutex);
+bool SetProgress(OCProvisioningStatusCB provisioningStatusCallback) {
+
if (InProgress())
return false;
cbData = provisioningStatusCallback;
- ca_mutex_unlock(g_provisioningMutex);
return true;
}
-bool ResetProgress()
-{
- ca_mutex_lock(g_provisioningMutex);
+bool ResetProgress() {
+
cbData = NULL;
- ca_mutex_unlock(g_provisioningMutex);
- return true;
+ return true;
}
-ProvisioningInfo* CreateCallBackObject()
-{
+ProvisioningInfo *CreateCallBackObject() {
ProvisioningInfo *provInfo = (ProvisioningInfo *) OICCalloc(1, sizeof(ProvisioningInfo));
- if (provInfo == NULL)
- {
+ if (provInfo == NULL) {
OIC_LOG_V(ERROR, TAG, "Failed to allocate memory");
return NULL;
}
OCDevAddr *devAddr = (OCDevAddr *) OICCalloc(1, sizeof(OCDevAddr));
- if (devAddr == NULL)
- {
+ if (devAddr == NULL) {
OIC_LOG_V(ERROR, TAG, "Failed to allocate memory");
return NULL;
}
}
-ProvisioningInfo* GetCallbackObjectOnError(ProvStatus status)
-{
+ProvisioningInfo *GetCallbackObjectOnError(ProvStatus status) {
ProvisioningInfo *provInfo = CreateCallBackObject();
strncpy(provInfo->provDeviceInfo.addr->addr, netProvInfo->netAddressInfo.WIFI.ipAddress,
return provInfo;
}
-ProvisioningInfo* GetCallbackObjectOnSuccess(OCClientResponse * clientResponse,
- ProvStatus provStatus)
-{
+ProvisioningInfo *GetCallbackObjectOnSuccess(OCClientResponse *clientResponse,
+ ProvStatus provStatus) {
ProvisioningInfo *provInfo = CreateCallBackObject();
strncpy(provInfo->provDeviceInfo.addr->addr, clientResponse->addr->addr,
sizeof(provInfo->provDeviceInfo.addr->addr));
return provInfo;
}
-bool ValidateFinddResourceResponse(OCClientResponse * clientResponse)
-{
+bool ValidateFinddResourceResponse(OCClientResponse * clientResponse) {
- if (!(clientResponse) || !(clientResponse->payload))
- {
+ if (!(clientResponse) || !(clientResponse->payload)) {
OIC_LOG_V(INFO, TAG, "ProvisionEnrolleeResponse received Null clientResponse");
return true;
}
-bool ValidateEnrolleResponse(OCClientResponse * clientResponse)
-{
+bool ValidateEnrolleResponse(OCClientResponse * clientResponse) {
- if (!(clientResponse) || !(clientResponse->payload))
- {
+ if (!(clientResponse) || !(clientResponse->payload)) {
OIC_LOG_V(INFO, TAG, "ProvisionEnrolleeResponse received Null clientResponse");
}
- if (clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION)
- {
+ if (clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION) {
OIC_LOG_V(DEBUG, TAG, "Incoming payload not a representation");
return false;
}
-void SuccessCallback(OCClientResponse * clientResponse)
-{
+void SuccessCallback(OCClientResponse * clientResponse) {
ProvisioningInfo *provInfo = GetCallbackObjectOnSuccess(clientResponse, DEVICE_PROVISIONED);
cbData(provInfo);
}
-bool ClearMemory()
-{
+bool ClearMemory() {
OIC_LOG(DEBUG, TAG, "thread_pool_add_task of FindProvisioningResource failed");
- ca_thread_pool_free(g_threadPoolHandle);
- ca_mutex_unlock(g_provisioningMutex);
- ca_mutex_free(g_provisioningMutex);
- ca_cond_free(g_provisioningCond);
return true;
}
-bool ConfigEnrolleeObject(const EnrolleeNWProvInfo_t *netInfo)
-{
+bool ConfigEnrolleeObject(const EnrolleeNWProvInfo_t *netInfo) {
//Copy Network Provisioning Information
netProvInfo = (EnrolleeNWProvInfo_t *) OICCalloc(1, sizeof(EnrolleeNWProvInfo_t));
- if (netProvInfo == NULL)
- {
+ if (netProvInfo == NULL) {
OIC_LOG(ERROR, TAG, "Invalid input..");
return false;
}
memcpy(netProvInfo, netInfo, sizeof(EnrolleeNWProvInfo_t));
OIC_LOG_V(DEBUG, TAG, "Network Provisioning Info. SSID = %s",
- netProvInfo->netAddressInfo.WIFI.ssid);
+ netProvInfo->netAddressInfo.WIFI.ssid);
OIC_LOG_V(DEBUG, TAG, "Network Provisioning Info. PWD = %s",
- netProvInfo->netAddressInfo.WIFI.pwd);
+ netProvInfo->netAddressInfo.WIFI.pwd);
OIC_LOG_V(DEBUG, TAG, "Network Provisioning Info. MAC ADDRESS = %s",
- netInfo->netAddressInfo.LE.leMacAddress);
+ netInfo->netAddressInfo.LE.leMacAddress);
return true;
}
-void LogProvisioningResponse(OCRepPayloadValue* val)
-{
+void LogProvisioningResponse(OCRepPayloadValue * val) {
- switch (val->type)
- {
+ switch (val->type) {
case OCREP_PROP_NULL:
OIC_LOG_V(DEBUG, TAG, "\t\t%s: NULL", val->name);
break;
OIC_LOG_V(DEBUG, TAG, "\t\t%s(OCRep):%s", val->name, val->obj->uri);
break;
case OCREP_PROP_ARRAY:
- switch (val->arr.type)
- {
+ switch (val->arr.type) {
case OCREP_PROP_INT:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(int array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
case OCREP_PROP_DOUBLE:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(double array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
case OCREP_PROP_BOOL:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(bool array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
case OCREP_PROP_STRING:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(string array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
case OCREP_PROP_OBJECT:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(OCRep array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
default:
//OIC_LOG_V(ERROR, TAG, "\t\t%s <-- Unknown/unsupported array type!",
+++ /dev/null
-//******************************************************************
-//
-// Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
-//
-//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-//
-//
-//*********************************************************************
-
-/**
- * @file
- * This file provides APIs related to mutex and semaphores.
- */
-
-// Defining _POSIX_C_SOURCE macro with 199309L (or greater) as value
-// causes header files to expose definitions
-// corresponding to the POSIX.1b, Real-time extensions
-// (IEEE Std 1003.1b-1993) specification
-//
-// For this specific file, see use of clock_gettime and PTHREAD_MUTEX_DEFAULT
-#ifndef _POSIX_C_SOURCE
-#define _POSIX_C_SOURCE 200809L
-#endif
-
-#include <string.h>
-#include <pthread.h>
-#include <errno.h>
-#include <unistd.h>
-#include <time.h>
-#include <sys/time.h>
-#include <assert.h>
-#include <oic_malloc.h>
-
-#include "camutex.h"
-#include "logger.h"
-
-/**
- * TAG
- * Logging tag for module name
- */
-#define TAG PCF("UMUTEX")
-
-static const uint64_t USECS_PER_SEC = 1000000;
-static const uint64_t NANOSECS_PER_USECS = 1000;
-static const uint64_t NANOSECS_PER_SEC = 1000000000L;
-
-typedef struct _tagMutexInfo_t {
- pthread_mutex_t mutex;
-} ca_mutex_internal;
-
-typedef struct _tagEventInfo_t {
- pthread_cond_t cond;
- pthread_condattr_t condattr;
-} ca_cond_internal;
-
-ca_mutex ca_mutex_new(void) {
- ca_mutex retVal = NULL;
- ca_mutex_internal *mutexInfo = (ca_mutex_internal*) OICMalloc(
- sizeof(ca_mutex_internal));
- if (NULL != mutexInfo) {
- // create the mutex with the attributes set
- int ret = pthread_mutex_init(&(mutexInfo->mutex),
- PTHREAD_MUTEX_DEFAULT);
- if (0 == ret) {
- retVal = (ca_mutex) mutexInfo;
- } else {
- OIC_LOG_V(ERROR, TAG, "%s Failed to initialize mutex !", __func__);
- OICFree(mutexInfo);
- }
- }
-
- return retVal;
-}
-
-bool ca_mutex_free(ca_mutex mutex) {
- bool bRet = false;
-
- ca_mutex_internal *mutexInfo = (ca_mutex_internal*) mutex;
- if (mutexInfo) {
- int ret = pthread_mutex_destroy(&mutexInfo->mutex);
- if (0 == ret) {
- OICFree(mutexInfo);
- bRet = true;
- } else {
- OIC_LOG_V(ERROR, TAG, "%s Failed to free mutex !", __func__);
- }
- } else {
- OIC_LOG_V(ERROR, TAG, "%s Invalid mutex !", __func__);
- }
-
- return bRet;
-}
-
-void ca_mutex_lock(ca_mutex mutex) {
- ca_mutex_internal *mutexInfo = (ca_mutex_internal*) mutex;
- if (mutexInfo) {
- int ret = pthread_mutex_lock(&mutexInfo->mutex);
- assert(0 == ret);
- (void) ret;
- } else {
- OIC_LOG_V(ERROR, TAG, "%s Invalid mutex !", __func__);
- return;
- }
-}
-
-bool ca_mutex_trylock(ca_mutex mutex) {
- if (NULL == mutex) {
- OIC_LOG_V(ERROR, TAG, "%s Invalid mutex !", __func__);
- return false;
- }
-
- bool bRet = false;
-
- ca_mutex_internal *mutexInfo = (ca_mutex_internal*) mutex;
-
- int result = pthread_mutex_trylock(&mutexInfo->mutex);
-
- switch (result) {
- case 0:
- // Success
- bRet = true;
- break;
- case EINVAL:
- OIC_LOG_V(ERROR, TAG, "%s: Invalid mutex !", __func__);
- break;
- case EBUSY:
- default:
- break;
- }
-
- return bRet;
-}
-
-void ca_mutex_unlock(ca_mutex mutex) {
- ca_mutex_internal *mutexInfo = (ca_mutex_internal*) mutex;
- if (mutexInfo) {
- int ret = pthread_mutex_unlock(&mutexInfo->mutex);
- assert(0 == ret);
- (void) ret;
- } else {
- OIC_LOG_V(ERROR, TAG, "%s: Invalid mutex !", __func__);
- return;
- }
-}
-
-ca_cond ca_cond_new(void) {
- ca_cond retVal = NULL;
- ca_cond_internal *eventInfo = (ca_cond_internal*) OICMalloc(
- sizeof(ca_cond_internal));
- if (NULL != eventInfo) {
- int ret = pthread_condattr_init(&(eventInfo->condattr));
- if (0 != ret) {
- OIC_LOG_V(ERROR, TAG,
- "%s: Failed to initialize condition variable attribute %d!",
- __func__, ret);
- return retVal;
- }
-
-#if defined(__ANDROID__) || _POSIX_TIMERS > 0
- ret = pthread_condattr_setclock(&(eventInfo->condattr), CLOCK_MONOTONIC);
-
- if(0 != ret)
- {
- OIC_LOG_V(ERROR, TAG, "%s: Failed to set condition variable clock %d!",
- __func__, ret);
- return retVal;
- }
-#endif
- ret = pthread_cond_init(&(eventInfo->cond), &(eventInfo->condattr));
- if (0 == ret) {
- retVal = (ca_cond) eventInfo;
- } else {
- OIC_LOG_V(ERROR, TAG,
- "%s: Failed to initialize condition variable %d!", __func__,
- ret);
- OICFree(eventInfo);
- }
- }
-
- return retVal;
-}
-
-void ca_cond_free(ca_cond cond) {
- ca_cond_internal *eventInfo = (ca_cond_internal*) cond;
- if (eventInfo != NULL) {
- int ret = pthread_cond_destroy(&(eventInfo->cond));
- int ret2 = pthread_condattr_destroy(&(eventInfo->condattr));
- if (0 == ret && 0 == ret2) {
- OICFree(cond);
- } else {
- OIC_LOG_V(ERROR, TAG,
- "%s: Failed to destroy condition variable %d, %d", __func__,
- ret, ret2);
- }
- } else {
- OIC_LOG_V(ERROR, TAG, "%s: Invalid parameter", __func__);
- }
-}
-
-void ca_cond_signal(ca_cond cond) {
- ca_cond_internal *eventInfo = (ca_cond_internal*) cond;
- if (eventInfo != NULL) {
- int ret = pthread_cond_signal(&(eventInfo->cond));
- if (0 != ret) {
- OIC_LOG_V(ERROR, TAG, "%s: Failed to signal condition variable",
- __func__);
- }
- } else {
- OIC_LOG_V(ERROR, TAG, "%s: Invalid parameter", __func__);
- }
-}
-
-void ca_cond_broadcast(ca_cond cond) {
- ca_cond_internal* eventInfo = (ca_cond_internal*) cond;
- if (eventInfo != NULL) {
- int ret = pthread_cond_broadcast(&(eventInfo->cond));
- if (0 != ret) {
- OIC_LOG_V(ERROR, TAG, "%s: failed to signal condition variable",
- __func__);
- }
- } else {
- OIC_LOG_V(ERROR, TAG, "%s: Invalid parameter", __func__);
- }
-}
-
-void ca_cond_wait(ca_cond cond, ca_mutex mutex) {
- ca_cond_wait_for(cond, mutex, 0L);
-}
-
-struct timespec ca_get_current_time() {
-#if defined(__ANDROID__) || _POSIX_TIMERS > 0
- struct timespec ts;
- clock_gettime(CLOCK_MONOTONIC, &ts);
- return ts;
-#else
- struct timeval tv;
- gettimeofday(&tv, NULL);
- struct timespec ts;
- TIMEVAL_TO_TIMESPEC(&tv, &ts);
- return ts;
-#endif
-}
-
-void ca_add_microseconds_to_timespec(struct timespec* ts,
- uint64_t microseconds) {
- time_t secPart = microseconds / USECS_PER_SEC;
- uint64_t nsecPart = (microseconds % USECS_PER_SEC) * NANOSECS_PER_USECS;
- uint64_t totalNs = ts->tv_nsec + nsecPart;
- time_t secOfNs = totalNs / NANOSECS_PER_SEC;
-
- ts->tv_nsec = (totalNs) % NANOSECS_PER_SEC;
- ts->tv_sec += secPart + secOfNs;
-}
-
-CAWaitResult_t ca_cond_wait_for(ca_cond cond, ca_mutex mutex,
- uint64_t microseconds) {
- CAWaitResult_t retVal = CA_WAIT_INVAL;
-
- ca_cond_internal *eventInfo = (ca_cond_internal*) cond;
- ca_mutex_internal *mutexInfo = (ca_mutex_internal*) mutex;
-
- if (NULL == mutexInfo) {
- OIC_LOG_V(ERROR, TAG, "%s: Invalid mutex", __func__);
- return CA_WAIT_INVAL;
- }
-
- if (NULL == eventInfo) {
- OIC_LOG_V(ERROR, TAG, "%s: Invalid condition", __func__);
- return CA_WAIT_INVAL;
- }
-
- if (microseconds > 0) {
- struct timespec abstime = ca_get_current_time();
- ca_add_microseconds_to_timespec(&abstime, microseconds);
-
- //Wait for the given time
- int ret = pthread_cond_timedwait(&(eventInfo->cond),
- &(mutexInfo->mutex), &abstime);
- switch (ret) {
- case 0:
- // Success
- retVal = CA_WAIT_SUCCESS;
- break;
- case ETIMEDOUT:
- retVal = CA_WAIT_TIMEDOUT;
- break;
- case EINVAL:
- OIC_LOG_V(ERROR, TAG, "%s: condition, mutex, or abstime is Invalid",
- __func__);
- retVal = CA_WAIT_INVAL;
- break;
- default:
- OIC_LOG_V(ERROR, TAG, "%s: pthread_cond_timedwait returned %d",
- __func__, retVal);
- retVal = CA_WAIT_INVAL;
- break;
- }
- } else {
- // Wait forever
- int ret = pthread_cond_wait(&eventInfo->cond, &mutexInfo->mutex);
- retVal = ret == 0 ? CA_WAIT_SUCCESS : CA_WAIT_INVAL;
- }
-
- return retVal;
-}
-
- //******************************************************************
+//******************************************************************
//
// Copyright 2015 Samsung Electronics All Rights Reserved.
//
#include <stdint.h>
#include <sstream>
-#include "easysetupmgr.h"
+#include "prov_adapter.h"
//Use ipv4addr for both InitDiscovery and InitDeviceDiscovery
-char ipv4addr[IPV4_ADDR_SIZE] = { 0 };
+char ipv4addr[IPV4_ADDR_SIZE] = {0};
static OCProvisioningStatusCB cbData = NULL;
} else {
result = OC_STACK_ERROR;
OIC_LOG_V(ERROR, TAG, "InitProvisioningHandler returned error = %s",
- result);
+ result);
}
return result;
OCProvisioningStatusCB provisioningStatusCallback) {
OCStackResult result = OC_STACK_OK;
- if(provisioningStatusCallback != NULL)
- {
+ if (provisioningStatusCallback != NULL) {
cbData = provisioningStatusCallback;
}
- else
- {
+ else {
result = OC_STACK_ERROR;
OIC_LOG(ERROR, TAG, "provisioningStatusCallback is NULL");
}
}
}
-OCStackResult ProvisionEnrollee(const EnrolleeNWProvInfo_t *netInfo)
-{
+OCStackResult ProvisionEnrollee(const EnrolleeNWProvInfo_t *netInfo) {
return StartProvisioningProcess(netInfo, cbData);
}
//
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-#include "provisioninghandler.h"
+#include "provisioning.h"
//Standard includes
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
+#include <pthread.h>
//EasySetup include files
#include "ocpayload.h"
#include "logger.h"
#include "oic_malloc.h"
-/**
- * @var g_provisioningMutex
- * @brief Mutex to synchronize access to g_caDtlsContext.
- */
-static ca_mutex g_provisioningMutex = NULL;
-static ca_cond g_provisioningCond = NULL;
bool g_provisioningCondFlag = false;
-static EnrolleeNWProvInfo_t* netProvInfo;
+static EnrolleeNWProvInfo_t *netProvInfo;
/**
* @var cbData
* @brief Callback for providing provisioning status callback to application
*/
static OCProvisioningStatusCB cbData = NULL;
-static ca_thread_pool_t g_threadPoolHandle = NULL;
-void ErrorCallback(ProvStatus status)
-{
+void ErrorCallback(ProvStatus status) {
ProvisioningInfo *provInfo = GetCallbackObjectOnError(status);
cbData(provInfo);
ResetProgress();
}
-OCStackResult InitProvisioningHandler()
-{
+
+OCStackResult InitProvisioningHandler() {
OCStackResult ret = OC_STACK_ERROR;
/* Initialize OCStack*/
- if (OCInit(NULL, 0, OC_CLIENT) != OC_STACK_OK)
- {
+ if (OCInit(NULL, 0, OC_CLIENT) != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack init error");
return ret;
}
- g_provisioningMutex = ca_mutex_new();
- OIC_LOG(DEBUG, TAG, "ca_thread_pool_init initializing");
+// start
- if (CA_STATUS_OK != ca_thread_pool_init(2, &g_threadPoolHandle))
- {
- OIC_LOG(DEBUG, TAG, "thread_pool_init failed");
- return OC_STACK_ERROR;
- }
+ char *string = "listeningFunc invoked in a thread";
- g_provisioningCond = ca_cond_new();
- if (NULL == g_provisioningCond)
- {
- OIC_LOG(DEBUG, TAG, "Failed to create condition");
- ca_mutex_free(g_provisioningMutex);
- ca_thread_pool_free(g_threadPoolHandle);
- return OC_STACK_ERROR;
- }
+ pthread_t thread_handle;
- char *string = "listeningFunc invoked in a thread";
- if (CA_STATUS_OK != ca_thread_pool_add_task(g_threadPoolHandle, listeningFunc, (void *) string))
- {
- OIC_LOG(DEBUG, TAG, "thread_pool_add_task failed");
- ca_thread_pool_free(g_threadPoolHandle);
- ca_mutex_unlock(g_provisioningMutex);
- ca_mutex_free(g_provisioningMutex);
- ca_cond_free(g_provisioningCond);
+ if (pthread_create(&thread_handle, NULL, listeningFunc, (void *) string)) {
+ OIC_LOG(DEBUG, TAG, "Thread creation failed");
return OC_STACK_ERROR;
}
+ pthread_join(thread_handle, NULL);
+
+// end
+
ResetProgress();
return OC_STACK_OK;
}
-OCStackResult TerminateProvisioningHandler()
-{
+OCStackResult TerminateProvisioningHandler() {
OCStackResult ret = OC_STACK_ERROR;
- if (OCStop() != OC_STACK_OK)
- {
+ if (OCStop() != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack stop error");
}
- ca_mutex_lock(g_provisioningMutex);
g_provisioningCondFlag = true;
- //ca_cond_signal(g_provisioningCond);
- ca_mutex_unlock(g_provisioningMutex);
-
- ca_mutex_free(g_provisioningMutex);
- g_provisioningMutex = NULL;
-
- ca_thread_pool_free(g_threadPoolHandle);
- g_threadPoolHandle = NULL;
ret = OC_STACK_OK;
return ret;
}
-void listeningFunc(void *data)
-{
- while (!g_provisioningCondFlag)
- {
+void *listeningFunc(void *data) {
+ while (!g_provisioningCondFlag) {
OCStackResult result;
- ca_mutex_lock(g_provisioningMutex);
result = OCProcess();
- ca_mutex_unlock(g_provisioningMutex);
- if (result != OC_STACK_OK)
- {
+ if (result != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack stop error");
}
}
}
-OCStackApplicationResult ProvisionEnrolleeResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse)
-{
+OCStackApplicationResult ProvisionEnrolleeResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse) {
ProvisioningInfo *provInfo;
- if (!ValidateEnrolleResponse(clientResponse))
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (!ValidateEnrolleResponse(clientResponse)) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
- char* tnn;
- char* cd;
+ char *tnn;
+ char *cd;
- OCRepPayload* input = (OCRepPayload*) (clientResponse->payload);
+ OCRepPayload *input = (OCRepPayload * )(clientResponse->payload);
- while (input)
- {
+ while (input) {
int64_t ps;
- if (OCRepPayloadGetPropInt(input, OC_RSRVD_ES_PS, &ps))
- {
+ if (OCRepPayloadGetPropInt(input, OC_RSRVD_ES_PS, &ps)) {
- if (ps == 1)
- {
+ if (ps == 1) {
OIC_LOG_V(DEBUG, TAG, "PS is proper");
input = input->next;
continue;
}
- else
- {
+ else {
OIC_LOG_V(DEBUG, TAG, "PS is NOT proper");
goto Error;
}
}
- if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_TNN, &tnn))
- {
- if (!strcmp(tnn, netProvInfo->netAddressInfo.WIFI.ssid))
- {
+ if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_TNN, &tnn)) {
+ if (!strcmp(tnn, netProvInfo->netAddressInfo.WIFI.ssid)) {
OIC_LOG_V(DEBUG, TAG, "SSID is proper");
input = input->next;
continue;
}
- else
- {
+ else {
OIC_LOG_V(DEBUG, TAG, "SSID is NOT proper");
goto Error;
}
}
- if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd))
- {
- if (!strcmp(cd, netProvInfo->netAddressInfo.WIFI.pwd))
- {
+ if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd)) {
+ if (!strcmp(cd, netProvInfo->netAddressInfo.WIFI.pwd)) {
OIC_LOG_V(DEBUG, TAG, "Password is proper");
input = input->next;
continue;
}
- else
- {
+ else {
OIC_LOG_V(DEBUG, TAG, "Password is NOT proper");
goto Error;
}
Error:
{
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
}
-OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char* query, const char* resUri,
- OCDevAddr *destination)
-{
+OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char *query, const char *resUri,
+ OCDevAddr *destination) {
OIC_LOG_V(INFO, TAG, "\n\nExecuting ProvisionEnrollee%s", __func__);
- OCRepPayload* payload = OCRepPayloadCreate();
+ OCRepPayload *payload = OCRepPayloadCreate();
OCRepPayloadSetUri(payload, resUri);
OCRepPayloadSetPropString(payload, OC_RSRVD_ES_TNN, netProvInfo->netAddressInfo.WIFI.ssid);
OIC_LOG_V(DEBUG, TAG, "OCPayload ready for ProvisionEnrollee");
OCStackResult ret = InvokeOCDoResource(query, OC_REST_PUT, destination, OC_HIGH_QOS,
- ProvisionEnrolleeResponse, payload, NULL, 0);
+ ProvisionEnrolleeResponse, payload, NULL, 0);
return ret;
}
-OCStackApplicationResult GetProvisioningStatusResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse)
-{
+OCStackApplicationResult GetProvisioningStatusResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse) {
ProvisioningInfo *provInfo;
- if (!ValidateEnrolleResponse(clientResponse))
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (!ValidateEnrolleResponse(clientResponse)) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
ClearMemory();
return OC_STACK_DELETE_TRANSACTION;
}
- OCRepPayload* input = (OCRepPayload*) (clientResponse->payload);
+ OCRepPayload *input = (OCRepPayload * )(clientResponse->payload);
char query[OIC_STRING_MAX_VALUE] =
- { '\0' };
+ {'\0'};
char resURI[MAX_URI_LENGTH] =
- { '\0' };
+ {'\0'};
OIC_LOG_V(DEBUG, TAG, "resUri = %s", input->uri);
- strncpy(resURI, input->uri, sizeof(resURI)-1);
+ strncpy(resURI, input->uri, sizeof(resURI) - 1);
snprintf(query, sizeof(query), UNICAST_PROV_STATUS_QUERY, clientResponse->addr->addr, IP_PORT,
- resURI);
+ resURI);
//OCPayloadLogRep(DEBUG,TAG,input);
if (ProvisionEnrollee(OC_HIGH_QOS, query, OC_RSRVD_ES_URI_PROV, clientResponse->addr)
- != OC_STACK_OK)
- {
+ != OC_STACK_OK) {
OIC_LOG(INFO, TAG,
"GetProvisioningStatusResponse received NULL clientResponse.Invoking Provisioing Status Callback");
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
ClearMemory();
return OC_STACK_DELETE_TRANSACTION;
}
}
-OCStackResult InvokeOCDoResource(const char* query, OCMethod method, const OCDevAddr *dest,
- OCQualityOfService qos, OCClientResponseHandler cb, OCRepPayload* payload,
- OCHeaderOption * options, uint8_t numOptions)
-{
+OCStackResult InvokeOCDoResource(const char *query, OCMethod method, const OCDevAddr *dest,
+ OCQualityOfService qos, OCClientResponseHandler cb,
+ OCRepPayload *payload,
+ OCHeaderOption *options, uint8_t numOptions) {
OCStackResult ret;
OCCallbackData cbData;
cbData.cb = cb;
- cbData.context = (void*) DEFAULT_CONTEXT_VALUE;
+ cbData.context = (void *) DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
- ret = OCDoResource(NULL, method, query, dest, (OCPayload*) payload, OC_CONNTYPE, qos, &cbData,
- options, numOptions);
+ ret = OCDoResource(NULL, method, query, dest, (OCPayload *) payload, OC_CONNTYPE, qos, &cbData,
+ options, numOptions);
- if (ret != OC_STACK_OK)
- {
+ if (ret != OC_STACK_OK) {
OIC_LOG_V(ERROR, TAG, "OCDoResource returns error %d with method %d", ret, method);
}
return ret;
}
-OCStackResult GetProvisioningStatus(OCQualityOfService qos, const char* query,
- const OCDevAddr *destination)
-{
+OCStackResult GetProvisioningStatus(OCQualityOfService qos, const char *query,
+ const OCDevAddr *destination) {
OCStackResult ret = OC_STACK_ERROR;
OCHeaderOption options[MAX_HEADER_OPTIONS];
OIC_LOG_V(INFO, TAG, "\n\nExecuting %s", __func__);
uint8_t option0[] =
- { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
uint8_t option1[] =
- { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
+ {11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
memset(options, 0, sizeof(OCHeaderOption) * MAX_HEADER_OPTIONS);
options[0].protocolID = OC_COAP_ID;
options[0].optionID = 2048;
options[1].optionLength = 10;
ret = InvokeOCDoResource(query, OC_REST_GET, destination, OC_HIGH_QOS,
- GetProvisioningStatusResponse, NULL, options, 2);
+ GetProvisioningStatusResponse, NULL, options, 2);
return ret;
}
OCStackResult StartProvisioningProcess(const EnrolleeNWProvInfo_t *netInfo,
- OCProvisioningStatusCB provisioningStatusCallback)
-{
+ OCProvisioningStatusCB provisioningStatusCallback) {
OCStackResult result = OC_STACK_ERROR;
- if (!ValidateEasySetupParams(netInfo, provisioningStatusCallback))
- {
+ char *string = "StartProvisioningProcess in a thread";
+
+ pthread_t thread_handle;
+
+ if (!ValidateEasySetupParams(netInfo, provisioningStatusCallback)) {
goto Error;
}
//Only basis test is done for below API
- if (!SetProgress(provisioningStatusCallback))
- {
+ if (!SetProgress(provisioningStatusCallback)) {
// Device provisioning session is running already.
OIC_LOG(INFO, TAG, PCF("Device provisioning session is running already"));
goto Error;
}
- if (!ConfigEnrolleeObject(netInfo))
- {
+ if (!ConfigEnrolleeObject(netInfo)) {
goto Error;
}
- if (CA_STATUS_OK != ca_thread_pool_add_task(g_threadPoolHandle, FindProvisioningResource,
- (void *) ""))
- {
+ if (pthread_create(&thread_handle, NULL, FindProvisioningResource, string)) {
+ OIC_LOG(DEBUG, TAG, "Thread creation failed");
goto Error;
}
+ pthread_join(thread_handle, NULL);
+
return OC_STACK_OK;
Error:
{
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
ClearMemory();
return OC_STACK_ERROR;
}
}
-void StopProvisioningProcess()
-{
+void StopProvisioningProcess() {
//Only basis test is done for below API
ResetProgress();
}
// This is a function called back when a device is discovered
-OCStackApplicationResult FindProvisioningResourceResponse(void* ctx, OCDoHandle handle,
- OCClientResponse * clientResponse)
-{
+OCStackApplicationResult FindProvisioningResourceResponse(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse) {
OIC_LOG(INFO, TAG, PCF("Entering FindProvisioningResourceResponse"));
- if (!ValidateFinddResourceResponse(clientResponse))
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (!ValidateFinddResourceResponse(clientResponse)) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
ProvisioningInfo *provInfo;
char szQueryUri[64] =
- { 0 };
+ {0};
- OCDiscoveryPayload* discoveryPayload = (OCDiscoveryPayload*) (clientResponse->payload);
+ OCDiscoveryPayload *discoveryPayload = (OCDiscoveryPayload * )(clientResponse->payload);
// Need to conform if below check is required or not. As Null check of clientResponse->payload is already performed above
- if (!discoveryPayload)
- {
+ if (!discoveryPayload) {
OIC_LOG_V(DEBUG, TAG, "Failed To parse");
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
OIC_LOG_V(DEBUG, TAG, "resUri = %s", discoveryPayload->resources->uri);
snprintf(szQueryUri, sizeof(szQueryUri), UNICAST_PROV_STATUS_QUERY,
- clientResponse->devAddr.addr, IP_PORT, discoveryPayload->resources->uri);
+ clientResponse->devAddr.addr, IP_PORT, discoveryPayload->resources->uri);
OIC_LOG_V(DEBUG, TAG, "query before GetProvisioningStatus call = %s", szQueryUri);
- if (GetProvisioningStatus(OC_HIGH_QOS, szQueryUri, &clientResponse->devAddr) != OC_STACK_OK)
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (GetProvisioningStatus(OC_HIGH_QOS, szQueryUri, &clientResponse->devAddr) != OC_STACK_OK) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
return OC_STACK_DELETE_TRANSACTION;
}
}
-void FindProvisioningResource(void *data)
-{
+void *FindProvisioningResource(void *data) {
OCStackResult ret = OC_STACK_ERROR;
/* Start a discovery query*/
char szQueryUri[64] =
- { 0 };
+ {0};
snprintf(szQueryUri, sizeof(szQueryUri), UNICAST_PROVISIONING_QUERY,
- netProvInfo->netAddressInfo.WIFI.ipAddress, IP_PORT);
+ netProvInfo->netAddressInfo.WIFI.ipAddress, IP_PORT);
OIC_LOG_V(DEBUG, TAG, "szQueryUri = %s", szQueryUri);
OCCallbackData ocCBData;
ocCBData.cb = FindProvisioningResourceResponse;
- ocCBData.context = (void*) DEFAULT_CONTEXT_VALUE;
+ ocCBData.context = (void *) DEFAULT_CONTEXT_VALUE;
ocCBData.cd = NULL;
ret = OCDoResource(NULL, OC_REST_DISCOVER, szQueryUri, NULL, NULL, OC_CONNTYPE, OC_LOW_QOS,
- &ocCBData, NULL, 0);
+ &ocCBData, NULL, 0);
- if (ret != OC_STACK_OK)
- {
- ErrorCallback( DEVICE_NOT_PROVISIONED);
+ if (ret != OC_STACK_OK) {
+ ErrorCallback(DEVICE_NOT_PROVISIONED);
ClearMemory();
}
}
-OCStackApplicationResult SubscribeProvPresenceCallback(void* ctx, OCDoHandle handle,
- OCClientResponse* clientResponse)
-{
+OCStackApplicationResult SubscribeProvPresenceCallback(void *ctx, OCDoHandle handle,
+ OCClientResponse *clientResponse) {
OIC_LOG(INFO, TAG, PCF("Entering SubscribeProvPresenceCallback"));
OCStackApplicationResult response = OC_STACK_DELETE_TRANSACTION;
- if (clientResponse->result != OC_STACK_OK)
- {
+ if (clientResponse->result != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack stop error");
return response;
}
- if (clientResponse)
- {
+ if (clientResponse) {
OIC_LOG(INFO, TAG, PCF("Client Response exists"));
- if (clientResponse->payload && clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION)
- {
+ if (clientResponse->payload &&
+ clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION) {
OIC_LOG_V(DEBUG, TAG, "Incoming payload not a representation");
return response;
}
- OCRepPayload* discoveryPayload = (OCRepPayload*) (clientResponse->payload);
- if (!discoveryPayload)
- {
+ OCRepPayload *discoveryPayload = (OCRepPayload * )(clientResponse->payload);
+ if (!discoveryPayload) {
OIC_LOG_V(DEBUG, TAG, "invalid payload");
return response;
}
char sourceIPAddr[OIC_STRING_MAX_VALUE] =
- { '\0' };
+ {'\0'};
snprintf(sourceIPAddr, sizeof(sourceIPAddr), "%s", clientResponse->addr->addr);
OIC_LOG_V(DEBUG, TAG, "Discovered %s @ %s", discoveryPayload->uri, sourceIPAddr);
/* Start a discovery query*/
char szQueryUri[64] =
- { 0 };
+ {0};
snprintf(szQueryUri, sizeof(szQueryUri), UNICAST_PROVISIONING_QUERY, sourceIPAddr, IP_PORT);
return OC_STACK_KEEP_TRANSACTION;
}*/
}
- else
- {
+ else {
// clientResponse is invalid
OIC_LOG(ERROR, TAG, PCF("Client Response is NULL!"));
}
return OC_STACK_KEEP_TRANSACTION;
}
-OCStackResult SubscribeProvPresence(OCQualityOfService qos, const char* requestURI)
-{
+OCStackResult SubscribeProvPresence(OCQualityOfService qos, const char *requestURI) {
OCStackResult ret = OC_STACK_ERROR;
OCCallbackData cbData;
cbData.cb = &SubscribeProvPresenceCallback;
- cbData.context = (void*) DEFAULT_CONTEXT_VALUE;
+ cbData.context = (void *) DEFAULT_CONTEXT_VALUE;
cbData.cd = NULL;
ret = OCDoResource(NULL, OC_REST_PRESENCE, requestURI, 0, 0, OC_CONNTYPE, OC_LOW_QOS, &cbData,
- NULL, 0);
+ NULL, 0);
- if (ret != OC_STACK_OK)
- {
+ if (ret != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack resource error");
}
return ret;
}
-OCStackResult FindNetworkResource()
-{
+OCStackResult FindNetworkResource() {
OCStackResult ret = OC_STACK_ERROR;
- if (OCStop() != OC_STACK_OK)
- {
+ if (OCStop() != OC_STACK_OK) {
OIC_LOG(ERROR, TAG, "OCStack stop error");
}
return ret;
}
-ProvisioningInfo* PrepareProvisioingStatusCB(OCClientResponse * clientResponse,
- ProvStatus provStatus)
-{
+ProvisioningInfo *PrepareProvisioingStatusCB(OCClientResponse *clientResponse,
+ ProvStatus provStatus) {
ProvisioningInfo *provInfo = (ProvisioningInfo *) OICCalloc(1, sizeof(ProvisioningInfo));
- if (provInfo == NULL)
- {
+ if (provInfo == NULL) {
OIC_LOG_V(ERROR, TAG, "Failed to allocate memory");
return NULL;
}
OCDevAddr *devAddr = (OCDevAddr *) OICCalloc(1, sizeof(OCDevAddr));
- if (devAddr == NULL)
- {
+ if (devAddr == NULL) {
OIC_LOG_V(ERROR, TAG, "Failed to allocate memory");
return NULL;
}
}
bool ValidateEasySetupParams(const EnrolleeNWProvInfo_t *netInfo,
- OCProvisioningStatusCB provisioningStatusCallback)
-{
+ OCProvisioningStatusCB provisioningStatusCallback) {
- if (netInfo == NULL || strlen(netInfo->netAddressInfo.WIFI.ipAddress) == 0)
- {
+ if (netInfo == NULL || strlen(netInfo->netAddressInfo.WIFI.ipAddress) == 0) {
OIC_LOG(ERROR, TAG, "Request URI is NULL");
return false;
}
- if (provisioningStatusCallback == NULL)
- {
+ if (provisioningStatusCallback == NULL) {
OIC_LOG(ERROR, TAG, "ProvisioningStatusCallback is NULL");
return false;
}
}
-bool InProgress()
-{
+bool InProgress() {
// It means already Easy Setup provisioning session is going on.
- if (NULL != cbData)
- {
+ if (NULL != cbData) {
OIC_LOG(ERROR, TAG, "Easy setup session is already in progress");
return true;
}
return false;
}
-bool SetProgress(OCProvisioningStatusCB provisioningStatusCallback)
-{
- ca_mutex_lock(g_provisioningMutex);
+bool SetProgress(OCProvisioningStatusCB provisioningStatusCallback) {
if (InProgress())
return false;
cbData = provisioningStatusCallback;
- ca_mutex_unlock(g_provisioningMutex);
return true;
}
-bool ResetProgress()
-{
- ca_mutex_lock(g_provisioningMutex);
+bool ResetProgress() {
cbData = NULL;
-
- ca_mutex_unlock(g_provisioningMutex);
- return true;
+ return true;
}
-ProvisioningInfo* CreateCallBackObject()
-{
+ProvisioningInfo *CreateCallBackObject() {
ProvisioningInfo *provInfo = (ProvisioningInfo *) OICCalloc(1, sizeof(ProvisioningInfo));
- if (provInfo == NULL)
- {
+ if (provInfo == NULL) {
OIC_LOG_V(ERROR, TAG, "Failed to allocate memory");
return NULL;
}
OCDevAddr *devAddr = (OCDevAddr *) OICCalloc(1, sizeof(OCDevAddr));
- if (devAddr == NULL)
- {
+ if (devAddr == NULL) {
OIC_LOG_V(ERROR, TAG, "Failed to allocate memory");
return NULL;
}
}
-ProvisioningInfo* GetCallbackObjectOnError(ProvStatus status)
-{
+ProvisioningInfo *GetCallbackObjectOnError(ProvStatus status) {
ProvisioningInfo *provInfo = CreateCallBackObject();
strncpy(provInfo->provDeviceInfo.addr->addr, netProvInfo->netAddressInfo.WIFI.ipAddress,
return provInfo;
}
-ProvisioningInfo* GetCallbackObjectOnSuccess(OCClientResponse * clientResponse,
- ProvStatus provStatus)
-{
+ProvisioningInfo *GetCallbackObjectOnSuccess(OCClientResponse *clientResponse,
+ ProvStatus provStatus) {
ProvisioningInfo *provInfo = CreateCallBackObject();
strncpy(provInfo->provDeviceInfo.addr->addr, clientResponse->addr->addr,
sizeof(provInfo->provDeviceInfo.addr->addr));
return provInfo;
}
-bool ValidateFinddResourceResponse(OCClientResponse * clientResponse)
-{
+bool ValidateFinddResourceResponse(OCClientResponse * clientResponse) {
- if (!(clientResponse) || !(clientResponse->payload))
- {
+ if (!(clientResponse) || !(clientResponse->payload)) {
OIC_LOG_V(INFO, TAG, "ProvisionEnrolleeResponse received Null clientResponse");
return false;
}
-return true;
+ return true;
}
-bool ValidateEnrolleResponse(OCClientResponse * clientResponse)
-{
+bool ValidateEnrolleResponse(OCClientResponse * clientResponse) {
- if (!(clientResponse) || !(clientResponse->payload))
- {
+ if (!(clientResponse) || !(clientResponse->payload)) {
OIC_LOG_V(INFO, TAG, "ProvisionEnrolleeResponse received Null clientResponse");
}
- if (clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION)
- {
+ if (clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION) {
OIC_LOG_V(DEBUG, TAG, "Incoming payload not a representation");
return false;
}
-void SuccessCallback(OCClientResponse * clientResponse)
-{
+void SuccessCallback(OCClientResponse * clientResponse) {
ProvisioningInfo *provInfo = GetCallbackObjectOnSuccess(clientResponse, DEVICE_PROVISIONED);
cbData(provInfo);
ResetProgress();
}
-bool ClearMemory()
-{
+bool ClearMemory() {
OIC_LOG(DEBUG, TAG, "thread_pool_add_task of FindProvisioningResource failed");
- ca_thread_pool_free(g_threadPoolHandle);
- ca_mutex_unlock(g_provisioningMutex);
- ca_mutex_free(g_provisioningMutex);
- ca_cond_free(g_provisioningCond);
-
return true;
}
-bool ConfigEnrolleeObject(const EnrolleeNWProvInfo_t *netInfo)
-{
+bool ConfigEnrolleeObject(const EnrolleeNWProvInfo_t *netInfo) {
//Copy Network Provisioning Information
netProvInfo = (EnrolleeNWProvInfo_t *) OICCalloc(1, sizeof(EnrolleeNWProvInfo_t));
- if (netProvInfo == NULL)
- {
+ if (netProvInfo == NULL) {
OIC_LOG(ERROR, TAG, "Invalid input..");
return false;
}
memcpy(netProvInfo, netInfo, sizeof(EnrolleeNWProvInfo_t));
OIC_LOG_V(DEBUG, TAG, "Network Provisioning Info. SSID = %s",
- netProvInfo->netAddressInfo.WIFI.ssid);
+ netProvInfo->netAddressInfo.WIFI.ssid);
OIC_LOG_V(DEBUG, TAG, "Network Provisioning Info. PWD = %s",
- netProvInfo->netAddressInfo.WIFI.pwd);
+ netProvInfo->netAddressInfo.WIFI.pwd);
return true;
}
-void LogProvisioningResponse(OCRepPayloadValue* val)
-{
+void LogProvisioningResponse(OCRepPayloadValue * val) {
- switch (val->type)
- {
+ switch (val->type) {
case OCREP_PROP_NULL:
OIC_LOG_V(DEBUG, TAG, "\t\t%s: NULL", val->name);
break;
OIC_LOG_V(DEBUG, TAG, "\t\t%s(OCRep):%s", val->name, val->obj->uri);
break;
case OCREP_PROP_ARRAY:
- switch (val->arr.type)
- {
+ switch (val->arr.type) {
case OCREP_PROP_INT:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(int array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
case OCREP_PROP_DOUBLE:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(double array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
case OCREP_PROP_BOOL:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(bool array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
case OCREP_PROP_STRING:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(string array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
case OCREP_PROP_OBJECT:
OIC_LOG_V(DEBUG, TAG, "\t\t%s(OCRep array):%lld x %lld x %lld", val->name,
- val->arr.dimensions[0], val->arr.dimensions[1], val->arr.dimensions[2]);
+ val->arr.dimensions[0], val->arr.dimensions[1],
+ val->arr.dimensions[2]);
break;
default:
//OIC_LOG_V(ERROR, TAG, "\t\t%s <-- Unknown/unsupported array type!",