1 //******************************************************************
\r
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
\r
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\r
7 // Licensed under the Apache License, Version 2.0 (the "License");
\r
8 // you may not use this file except in compliance with the License.
\r
9 // You may obtain a copy of the License at
\r
11 // http://www.apache.org/licenses/LICENSE-2.0
\r
13 // Unless required by applicable law or agreed to in writing, software
\r
14 // distributed under the License is distributed on an "AS IS" BASIS,
\r
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 // See the License for the specific language governing permissions and
\r
17 // limitations under the License.
\r
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\r
21 #include "jni_easy_setup.h"
\r
23 #include "jni_easy_setup_jvm.h"
\r
24 #include "easysetupmgr.h"
\r
26 void JNIProvisioningStatusCallback(ProvisioningInfo provInfo) {
\r
27 JNIEnv *env = EasySetupJVM::getEnv();
\r
29 LOGE("JNIProvisioningStatusCallback : Getting JNIEnv failed");
\r
33 // Get EasySetupHandler class reference
\r
34 jclass easysetupCallbacks = GetJClass(
\r
35 EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);
\r
36 if (NULL == easysetupCallbacks) {
\r
38 "JNIProvisioningStatusCallback : GetJClass easysetupCallbacks failed");
\r
39 EasySetupJVM::releaseEnv();
\r
43 // Get the easysetupCallback class instance
\r
44 jobject jobjectCallback = GetJObjectInstance(
\r
45 EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);
\r
46 if (NULL == jobjectCallback) {
\r
47 LOGE("getInstance( %s) failed!",
\r
48 EASY_SETUP_SERVICE_CALLBACK_NATIVE_API_CLASS_PATH);
\r
49 EasySetupJVM::releaseEnv();
\r
53 // Get onResourceCallback method reference
\r
54 jmethodID method_id = env->GetMethodID(easysetupCallbacks,
\r
55 "ProvisioningStatusCallBack",
\r
56 METHOD_PROVISIONING_STATUS_INTEGER_CALLBACK);
\r
57 if (NULL == method_id) {
\r
59 "JNIProvisioningStatusCallback: onResourceCallback : GetMethodID failed");
\r
60 EasySetupJVM::releaseEnv();
\r
64 if ((env)->ExceptionCheck()) {
\r
65 LOGE("JNIProvisioningStatusCallback : ExceptionCheck failed");
\r
66 EasySetupJVM::releaseEnv();
\r
70 if (NULL == method_id) {
\r
71 LOGI("JNI method_id is NULL");
\r
73 LOGI("JNI method_id is VALID");
\r
76 if (provInfo.provStatus == DEVICE_PROVISIONED) {
\r
82 env->CallVoidMethod(jobjectCallback, method_id, (jint) result);
\r
85 EasySetupJVM::releaseEnv();
\r
88 JNIEXPORT void JNICALL JNIInitEasySetup(JNIEnv *env, jobject thisObj)
\r
90 LOGI("JNI JNIInitEasySetup: Enter");
\r
91 InitEasySetupManager();
\r
92 RegisterProvisioningStausCallback(JNIProvisioningStatusCallback);
\r
95 JNIEXPORT void JNICALL JNITerminateEasySetup(JNIEnv *env, jobject thisObj)
\r
97 LOGI("JNI JNITerminateEasySetup: Enter");
\r
98 TerminateEasySetupManager();
\r
102 JNIEXPORT void JNICALL JNIProvisionEnrollee(JNIEnv *env, jobject thisObj,
\r
103 jstring jIPAddress,
\r
106 jint jConnectivityType)
\r
108 LOGI("JNI JNIProvisionEnrollee: Enter");
\r
112 LOGE("JNI JNIProvisionEnrollee : jIPAddress is NULL!");
\r
116 const char *ipAddress = env->GetStringUTFChars(jIPAddress, NULL);
\r
117 if (NULL == ipAddress)
\r
119 LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");
\r
122 LOGI("JNI JNIProvisionEnrollee : ipAddress is : %s",ipAddress);
\r
124 const char *netSSID = env->GetStringUTFChars(jNetSSID, NULL);
\r
125 if (NULL == netSSID)
\r
127 LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");
\r
130 LOGI("JNI JNIProvisionEnrollee : netSSID is : %s",netSSID);
\r
132 const char *netPWD = env->GetStringUTFChars(jNetPWD, NULL);
\r
133 if (NULL == netPWD)
\r
135 LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");
\r
138 LOGI("JNI JNIProvisionEnrollee : netPWD is : %s",netPWD);
\r
140 OCConnectivityType connecitivityType;
\r
141 EnrolleeNWProvInfo_t netInfo = {0};
\r
143 strncpy(netInfo.netAddressInfo.WIFI.ipAddress, ipAddress, IPV4_ADDR_SIZE);
\r
144 strncpy(netInfo.netAddressInfo.WIFI.ssid, netSSID, NET_WIFI_SSID_SIZE);
\r
145 strncpy(netInfo.netAddressInfo.WIFI.pwd, netPWD, NET_WIFI_PWD_SIZE);
\r
146 netInfo.connType = OCConnectivityType::OC_IPV4;
\r
147 netInfo.isSecured = true;
\r
149 ProvisionEnrollee(&netInfo);
\r
154 JNIEXPORT void JNICALL JNIStopEnrolleeProvisioning(JNIEnv *env, jobject thisObj,
\r
155 jint jConnectivityType)
\r
157 LOGI("JNI Stop Easy Setup: Entering");
\r
159 OCConnectivityType connecitivityType;
\r
161 if(jConnectivityType == 0)
\r
163 connecitivityType = OCConnectivityType::OC_IPV4;
\r
166 StopEnrolleeProvisioning(connecitivityType);
\r