Imported Upstream version 1.1.1
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniOcDirectPairDevice.cpp
1 /*
2 * //******************************************************************
3 * //
4 * // Copyright 2016 Samsung Electronics All Rights Reserved.
5 * //
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 * //
8 * // Licensed under the Apache License, Version 2.0 (the "License");
9 * // you may not use this file except in compliance with the License.
10 * // You may obtain a copy of the License at
11 * //
12 * //      http://www.apache.org/licenses/LICENSE-2.0
13 * //
14 * // Unless required by applicable law or agreed to in writing, software
15 * // distributed under the License is distributed on an "AS IS" BASIS,
16 * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * // See the License for the specific language governing permissions and
18 * // limitations under the License.
19 * //
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 */
22
23 #include "JniOcDirectPairDevice.h"
24 #include "OCDirectPairing.h"
25 #include "OCDirectPairing.h"
26 using namespace OC;
27 namespace PH = std::placeholders;
28
29 JniOcDirectPairDevice::JniOcDirectPairDevice(std::shared_ptr<OC::OCDirectPairing> directPairingDevice)
30     : m_sharedDirectPairDevice(directPairingDevice)
31 {}
32
33 JniOcDirectPairDevice::~JniOcDirectPairDevice()
34 {
35     LOGD("~JniOcDirectPairDevice()");
36     m_sharedDirectPairDevice = nullptr;
37 }
38
39 std::string JniOcDirectPairDevice::getHost()
40 {
41    return m_sharedDirectPairDevice->getHost();
42 }
43
44 std::vector<OCPrm_t> JniOcDirectPairDevice::getPairingMethods()
45 {
46
47    return m_sharedDirectPairDevice->getPairingMethods();
48 }
49
50 OCConnectivityType JniOcDirectPairDevice::connectivityType()
51 {
52     return m_sharedDirectPairDevice->getConnType();
53 }
54
55 JniOcDirectPairDevice* JniOcDirectPairDevice::getJniOcDirectPairDevicePtr(JNIEnv *env, jobject thiz)
56 {
57     JniOcDirectPairDevice *dpDev = GetHandle<JniOcDirectPairDevice>(env, thiz);
58     if (env->ExceptionCheck())
59     {
60         LOGE("Failed to get native handle from OcDirectPairingDevice");
61     }
62     if (!dpDev)
63     {
64         ThrowOcException(JNI_NO_NATIVE_POINTER, "");
65     }
66     return dpDev;
67 }
68 std::shared_ptr<OC::OCDirectPairing> JniOcDirectPairDevice::getPtr()
69 {
70     return m_sharedDirectPairDevice;
71 }
72
73 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcDirectPairDevice_getHost
74 (JNIEnv *env, jobject thiz)
75 {
76
77     LOGD("OcDirectPairing_getHost");
78
79     JniOcDirectPairDevice* device = JniOcDirectPairDevice::getJniOcDirectPairDevicePtr(env,thiz);
80     if (!device) return nullptr;
81
82     std::string dev  = device->getHost();
83     return env->NewStringUTF(dev.c_str());
84 }
85
86 JNIEXPORT jintArray JNICALL Java_org_iotivity_base_OcDirectPairDevice_getPairingMethods
87         (JNIEnv *env, jobject thiz)
88 {
89
90     LOGD("OcDirectPairing_getPairingMethods");
91
92     std::vector<jint> pairingMethodList;
93     JniOcDirectPairDevice* device = JniOcDirectPairDevice::getJniOcDirectPairDevicePtr(env,thiz);
94     if (!device) return nullptr;
95
96     std::vector<OCPrm_t> pairingMethods = device->getPairingMethods();
97     return JniOcDirectPairDevice::JconvertIntVectorToJavaList(env,pairingMethods);
98 }
99
100
101 jintArray JniOcDirectPairDevice::JconvertIntVectorToJavaList(JNIEnv *env, std::vector<OCPrm_t> &vector)
102 {
103
104     jsize len = static_cast<jsize>(vector.size());
105
106     jintArray intArray = env->NewIntArray(len);
107     if (!intArray) return nullptr;
108
109     env->SetIntArrayRegion(intArray, (jsize)0, len, (const jint*)&vector[0]);
110
111     if (env->ExceptionCheck())
112     {
113         LOGE("ArrayIndexOutOfBoundsException in  JconvertIntVectorToJavaList");
114     }
115     return intArray;
116 }
117
118 /*
119 * Class:     org_iotivity_base_OcDirectPairDevice
120 * Method:    getConnectivityTypeN
121 * Signature: ()I
122 */
123 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcDirectPairDevice_getConnectivityTypeN
124 (JNIEnv *env, jobject thiz)
125 {
126     LOGD("OcDirectPairDevice_getConnectivityType");
127     JniOcDirectPairDevice* device = JniOcDirectPairDevice::getJniOcDirectPairDevicePtr(env,thiz);
128     if (!device) return -1;
129
130     OCConnectivityType connectivityType = device->connectivityType();
131     return static_cast<jint>(connectivityType);
132 }