Modify permissions for files in Things Manager
[platform/upstream/iotivity.git] / service / easy-setup / sdk / mediator / android / jni / jni_easy_setup.cpp
1 //******************************************************************\r
2 //\r
3 // Copyright 2015 Samsung Electronics All Rights Reserved.\r
4 //\r
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
6 //\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
10 //\r
11 //      http://www.apache.org/licenses/LICENSE-2.0\r
12 //\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
18 //\r
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
20 \r
21 #include "jni_easy_setup.h"\r
22 \r
23 #include "jni_easy_setup_jvm.h"\r
24 #include "easysetupmgr.h"\r
25 \r
26 void JNIProvisioningStatusCallback(ProvisioningInfo *provInfo) {\r
27     JNIEnv *env = EasySetupJVM::getEnv();\r
28     if (env == NULL) {\r
29         LOGE("JNIProvisioningStatusCallback : Getting JNIEnv failed");\r
30         return;\r
31     }\r
32 \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
37         LOGE(\r
38                 "JNIProvisioningStatusCallback : GetJClass easysetupCallbacks failed");\r
39         EasySetupJVM::releaseEnv();\r
40         return;\r
41     }\r
42 \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
50         return;\r
51     }\r
52 \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
58         LOGE(\r
59                 "JNIProvisioningStatusCallback: onResourceCallback : GetMethodID failed");\r
60         EasySetupJVM::releaseEnv();\r
61         return;\r
62     }\r
63 \r
64     if ((env)->ExceptionCheck()) {\r
65         LOGE("JNIProvisioningStatusCallback : ExceptionCheck failed");\r
66         EasySetupJVM::releaseEnv();\r
67         return;\r
68     }\r
69 \r
70     if (NULL == method_id) {\r
71         LOGI("JNI method_id is NULL");\r
72     } else {\r
73         LOGI("JNI method_id is VALID");\r
74 \r
75         jint result;\r
76         if (provInfo->provStatus == DEVICE_PROVISIONED) {\r
77             result = 0;\r
78         } else {\r
79             result = -1;\r
80         }\r
81 \r
82         env->CallVoidMethod(jobjectCallback, method_id, (jint) result);\r
83     }\r
84 \r
85     EasySetupJVM::releaseEnv();\r
86 }\r
87 \r
88 JNIEXPORT void JNICALL JNIInitEasySetup(JNIEnv *env, jobject thisObj)\r
89 {\r
90     LOGI("JNI JNIInitEasySetup: Enter");\r
91     InitEasySetupManager();\r
92     RegisterProvisioningStausCallback(JNIProvisioningStatusCallback);\r
93 }\r
94 \r
95 JNIEXPORT void JNICALL JNITerminateEasySetup(JNIEnv *env, jobject thisObj)\r
96 {\r
97     LOGI("JNI JNITerminateEasySetup: Enter");\r
98     TerminateEasySetupManager();\r
99 }\r
100 \r
101 \r
102 JNIEXPORT void JNICALL JNIProvisionEnrollee(JNIEnv *env, jobject thisObj,\r
103                                                     jstring jIPAddress,\r
104                                                     jstring jNetSSID,\r
105                                                     jstring jNetPWD,\r
106                                                     jint jConnectivityType)\r
107 {\r
108     LOGI("JNI JNIProvisionEnrollee: Enter");\r
109 \r
110     if (!jIPAddress)\r
111     {\r
112         LOGE("JNI JNIProvisionEnrollee : jIPAddress is NULL!");\r
113         return;\r
114     }\r
115 \r
116     const char *ipAddress = env->GetStringUTFChars(jIPAddress, NULL);\r
117     if (NULL == ipAddress)\r
118     {\r
119         LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");\r
120     }\r
121 \r
122     LOGI("JNI JNIProvisionEnrollee : ipAddress is : %s",ipAddress);\r
123 \r
124     const char *netSSID = env->GetStringUTFChars(jNetSSID, NULL);\r
125     if (NULL == netSSID)\r
126     {\r
127         LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");\r
128     }\r
129 \r
130     LOGI("JNI JNIProvisionEnrollee : netSSID is : %s",netSSID);\r
131 \r
132     const char *netPWD = env->GetStringUTFChars(jNetPWD, NULL);\r
133     if (NULL == netPWD)\r
134     {\r
135         LOGE("JNI JNIProvisionEnrollee : Failed to convert jstring to char string!");\r
136     }\r
137 \r
138     LOGI("JNI JNIProvisionEnrollee : netPWD is : %s",netPWD);\r
139 \r
140     OCConnectivityType connecitivityType;\r
141     EnrolleeNWProvInfo_t netInfo = {0};\r
142 \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)jConnectivityType;\r
147     netInfo.isSecured = true;\r
148 \r
149     ProvisionEnrollee(&netInfo);\r
150 \r
151     return;\r
152 }\r
153 \r
154 JNIEXPORT void JNICALL JNIStopEnrolleeProvisioning(JNIEnv *env, jobject thisObj,\r
155                                                     jint jConnectivityType)\r
156 {\r
157     LOGI("JNI Stop Easy Setup: Entering");\r
158 \r
159     OCConnectivityType connecitivityType;\r
160 \r
161     if(jConnectivityType == 0)\r
162     {\r
163         connecitivityType = OCConnectivityType::CT_ADAPTER_IP;\r
164     }\r
165 \r
166     StopEnrolleeProvisioning(connecitivityType);\r
167 \r
168     return;\r
169 }\r
170 \r
171 \r