1 //******************************************************************
3 // Copyright 2015 Intel Corporation.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include "JniOcPlatform.h"
22 #include "OCPlatform.h"
23 #include "JniOcResource.h"
24 #include "JniOcResourceHandle.h"
25 #include "JniOcPresenceHandle.h"
26 #include "JniOcResourceResponse.h"
27 #include "JniOcSecurity.h"
28 #include "JniOcDirectPairDevice.h"
30 #include "ocpayload.h"
34 #include "JniOcAccountManager.h"
39 JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener)
41 JniOnResourceFoundListener *onResourceFoundListener = nullptr;
43 resourceFoundMapLock.lock();
45 for (auto it = onResourceFoundListenerMap.begin();
46 it != onResourceFoundListenerMap.end();
49 if (env->IsSameObject(jListener, it->first))
51 auto refPair = it->second;
52 onResourceFoundListener = refPair.first;
55 onResourceFoundListenerMap.insert(*it);
56 LOGD("OnResourceFoundListener: ref. count incremented");
61 if (!onResourceFoundListener)
63 onResourceFoundListener =
64 new JniOnResourceFoundListener(env, jListener, RemoveOnResourceFoundListener);
65 jobject jgListener = env->NewGlobalRef(jListener);
67 onResourceFoundListenerMap.insert(
69 std::pair<JniOnResourceFoundListener*, int >>(
71 std::pair<JniOnResourceFoundListener*, int>(onResourceFoundListener,
73 LOGD("OnResourceFoundListener: new listener");
75 resourceFoundMapLock.unlock();
76 return onResourceFoundListener;
79 void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener)
81 resourceFoundMapLock.lock();
83 for (auto it = onResourceFoundListenerMap.begin();
84 it != onResourceFoundListenerMap.end();
87 if (env->IsSameObject(jListener, it->first))
89 auto refPair = it->second;
90 if (refPair.second > 1)
94 onResourceFoundListenerMap.insert(*it);
95 LOGI("OnResourceFoundListener: ref. count decremented");
99 env->DeleteGlobalRef(it->first);
100 JniOnResourceFoundListener* listener = refPair.first;
102 onResourceFoundListenerMap.erase(it);
103 LOGI("OnResourceFoundListener removed");
108 resourceFoundMapLock.unlock();
111 JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener)
113 JniOnDeviceInfoListener *onDeviceInfoListener = nullptr;
115 deviceInfoMapLock.lock();
117 for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
119 if (env->IsSameObject(jListener, it->first))
121 auto refPair = it->second;
122 onDeviceInfoListener = refPair.first;
124 it->second = refPair;
125 onDeviceInfoListenerMap.insert(*it);
126 LOGD("OnDeviceInfoListener: ref. count incremented");
131 if (!onDeviceInfoListener)
133 onDeviceInfoListener =
134 new JniOnDeviceInfoListener(env, jListener, RemoveOnDeviceInfoListener);
135 jobject jgListener = env->NewGlobalRef(jListener);
137 onDeviceInfoListenerMap.insert(
139 std::pair<JniOnDeviceInfoListener*, int>>(
141 std::pair<JniOnDeviceInfoListener*, int>(onDeviceInfoListener, 1)));
142 LOGI("OnDeviceInfoListener: new listener");
145 deviceInfoMapLock.unlock();
146 return onDeviceInfoListener;
149 void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener)
151 deviceInfoMapLock.lock();
152 bool isFound = false;
153 for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
155 if (env->IsSameObject(jListener, it->first))
157 auto refPair = it->second;
158 if (refPair.second > 1)
161 it->second = refPair;
162 onDeviceInfoListenerMap.insert(*it);
163 LOGI("OnDeviceInfoListener: ref. count decremented");
167 env->DeleteGlobalRef(it->first);
168 JniOnDeviceInfoListener* listener = refPair.first;
170 onDeviceInfoListenerMap.erase(it);
172 LOGI("OnDeviceInfoListener removed");
182 ThrowOcException(JNI_EXCEPTION, "OnDeviceInfoListenet not found");
184 deviceInfoMapLock.unlock();
187 JniOnPlatformInfoListener* AddOnPlatformInfoListener(JNIEnv* env, jobject jListener)
189 JniOnPlatformInfoListener *onPlatformInfoListener = nullptr;
191 platformInfoMapLock.lock();
193 for (auto it = onPlatformInfoListenerMap.begin(); it != onPlatformInfoListenerMap.end(); ++it)
195 if (env->IsSameObject(jListener, it->first))
197 auto refPair = it->second;
198 onPlatformInfoListener = refPair.first;
200 it->second = refPair;
201 onPlatformInfoListenerMap.insert(*it);
202 LOGD("OnPlatformInfoListener: ref. count incremented");
207 if (!onPlatformInfoListener)
209 onPlatformInfoListener =
210 new JniOnPlatformInfoListener(env, jListener, RemoveOnPlatformInfoListener);
211 jobject jgListener = env->NewGlobalRef(jListener);
213 onPlatformInfoListenerMap.insert(
214 std::pair<jobject, std::pair<JniOnPlatformInfoListener*, int>>(
216 std::pair<JniOnPlatformInfoListener*, int>(onPlatformInfoListener, 1)));
217 LOGI("OnPlatformInfoListener: new listener");
220 platformInfoMapLock.unlock();
221 return onPlatformInfoListener;
224 void RemoveOnPlatformInfoListener(JNIEnv* env, jobject jListener)
226 platformInfoMapLock.lock();
227 bool isFound = false;
228 for (auto it = onPlatformInfoListenerMap.begin(); it != onPlatformInfoListenerMap.end(); ++it)
230 if (env->IsSameObject(jListener, it->first))
232 auto refPair = it->second;
233 if (refPair.second > 1)
236 it->second = refPair;
237 onPlatformInfoListenerMap.insert(*it);
238 LOGI("OnPlatformInfoListener: ref. count decremented");
242 env->DeleteGlobalRef(it->first);
243 JniOnPlatformInfoListener* listener = refPair.first;
245 onPlatformInfoListenerMap.erase(it);
247 LOGI("OnPlatformInfoListener removed");
257 ThrowOcException(JNI_EXCEPTION, "OnPlatformInfoListenet not found");
259 platformInfoMapLock.unlock();
262 JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener)
264 JniOnPresenceListener *onPresenceListener = nullptr;
266 presenceMapLock.lock();
268 for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
270 if (env->IsSameObject(jListener, it->first))
272 auto refPair = it->second;
273 onPresenceListener = refPair.first;
275 it->second = refPair;
276 onPresenceListenerMap.insert(*it);
277 LOGD("OnPresenceListener: ref. count incremented");
281 if (!onPresenceListener)
283 onPresenceListener = new JniOnPresenceListener(env, jListener, RemoveOnPresenceListener);
284 jobject jgListener = env->NewGlobalRef(jListener);
285 onPresenceListenerMap.insert(
286 std::pair<jobject, std::pair<JniOnPresenceListener*, int>>(
288 std::pair<JniOnPresenceListener*, int>(onPresenceListener, 1)));
289 LOGI("OnPresenceListener: new listener");
291 presenceMapLock.unlock();
292 return onPresenceListener;
295 void RemoveOnPresenceListener(JNIEnv* env, jobject jListener)
297 presenceMapLock.lock();
298 bool isFound = false;
299 for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
301 if (env->IsSameObject(jListener, it->first))
303 auto refPair = it->second;
304 if (refPair.second > 1)
307 it->second = refPair;
308 onPresenceListenerMap.insert(*it);
309 LOGI("OnPresenceListener: ref. count decremented");
313 env->DeleteGlobalRef(it->first);
314 JniOnPresenceListener* listener = refPair.first;
316 onPresenceListenerMap.erase(it);
317 LOGI("OnPresenceListener is removed");
325 ThrowOcException(JNI_EXCEPTION, "OnPresenceListener not found");
327 presenceMapLock.unlock();
330 JniOnObserveListener* AddOnObserveListener(JNIEnv* env, jobject jListener)
332 JniOnObserveListener *onObserveListener = nullptr;
334 observeMapLock.lock();
336 for (auto it = onObserveListenerMap.begin(); it != onObserveListenerMap.end(); ++it)
338 if (env->IsSameObject(jListener, it->first))
340 auto refPair = it->second;
341 onObserveListener = refPair.first;
343 it->second = refPair;
344 onObserveListenerMap.insert(*it);
345 LOGD("OnObserveListener: ref. count incremented");
349 if (!onObserveListener)
351 onObserveListener = new JniOnObserveListener(env, jListener, (JniOcResource*)nullptr);
352 jobject jgListener = env->NewGlobalRef(jListener);
353 onObserveListenerMap.insert(
354 std::pair<jobject, std::pair<JniOnObserveListener*, int>>(
356 std::pair<JniOnObserveListener*, int>(onObserveListener, 1)));
357 LOGI("OnObserveListener: new listener");
359 observeMapLock.unlock();
360 return onObserveListener;
363 void RemoveOnObserveListener(JNIEnv* env, jobject jListener)
365 observeMapLock.lock();
366 bool isFound = false;
367 for (auto it = onObserveListenerMap.begin(); it != onObserveListenerMap.end(); ++it)
369 if (env->IsSameObject(jListener, it->first))
371 auto refPair = it->second;
372 if (refPair.second > 1)
375 it->second = refPair;
376 onObserveListenerMap.insert(*it);
377 LOGI("OnObserveListener: ref. count decremented");
381 env->DeleteGlobalRef(it->first);
382 JniOnObserveListener* listener = refPair.first;
384 onObserveListenerMap.erase(it);
385 LOGI("OnObserveListener is removed");
393 ThrowOcException(JNI_EXCEPTION, "OnObserveListener not found");
395 observeMapLock.unlock();
398 JniOnDPDevicesFoundListener* AddOnDPDevicesFoundListener(JNIEnv* env, jobject jListener)
400 JniOnDPDevicesFoundListener *onDPDeviceListener = nullptr;
402 dpDevicesFoundListenerMapLock.lock();
404 for (auto it = onDPDevicesFoundListenerMap.begin(); it !=
405 onDPDevicesFoundListenerMap.end(); ++it)
407 if (env->IsSameObject(jListener, it->first))
409 auto refPair = it->second;
410 onDPDeviceListener = refPair.first;
412 it->second = refPair;
413 onDPDevicesFoundListenerMap.insert(*it);
414 LOGD("onDPDeviceListener: ref. count incremented");
418 if (!onDPDeviceListener)
420 onDPDeviceListener = new JniOnDPDevicesFoundListener(env, jListener,
421 RemoveOnDPDevicesFoundListener);
422 jobject jgListener = env->NewGlobalRef(jListener);
423 onDPDevicesFoundListenerMap.insert(
424 std::pair<jobject, std::pair<JniOnDPDevicesFoundListener*, int>>(
426 std::pair<JniOnDPDevicesFoundListener*, int>(onDPDeviceListener, 1)));
427 LOGI("onDPDeviceListener: new listener");
429 dpDevicesFoundListenerMapLock.unlock();
430 return onDPDeviceListener;
433 void RemoveOnDPDevicesFoundListener(JNIEnv* env, jobject jListener)
435 dpDevicesFoundListenerMapLock.lock();
436 bool isFound = false;
437 for (auto it = onDPDevicesFoundListenerMap.begin(); it !=
438 onDPDevicesFoundListenerMap.end(); ++it)
440 if (env->IsSameObject(jListener, it->first))
442 auto refPair = it->second;
443 if (refPair.second > 1)
446 it->second = refPair;
447 onDPDevicesFoundListenerMap.insert(*it);
448 LOGI("onDPDeviceListener: ref. count decremented");
452 env->DeleteGlobalRef(it->first);
453 JniOnDPDevicesFoundListener* listener = refPair.first;
455 onDPDevicesFoundListenerMap.erase(it);
456 LOGI("onDPDeviceListener is removed");
464 ThrowOcException(JNI_EXCEPTION, "onDPDeviceListener not found");
466 dpDevicesFoundListenerMapLock.unlock();
469 JniOnDirectPairingListener* AddOnDirectPairingListener(JNIEnv* env, jobject jListener)
471 JniOnDirectPairingListener *onDirectPairingListener = nullptr;
473 directPairingListenerMapLock.lock();
475 for (auto it = directPairingListenerMap.begin(); it !=
476 directPairingListenerMap.end(); ++it)
478 if (env->IsSameObject(jListener, it->first))
480 auto refPair = it->second;
481 onDirectPairingListener = refPair.first;
483 it->second = refPair;
484 directPairingListenerMap.insert(*it);
485 LOGD("onDirectPairingListener: ref. count incremented");
489 if (!onDirectPairingListener)
491 onDirectPairingListener = new JniOnDirectPairingListener(env, jListener,
492 RemoveOnDirectPairingListener);
493 jobject jgListener = env->NewGlobalRef(jListener);
494 directPairingListenerMap.insert(
495 std::pair<jobject, std::pair<JniOnDirectPairingListener*, int>>(
497 std::pair<JniOnDirectPairingListener*, int>(onDirectPairingListener, 1)));
498 LOGI("onDirectPairingListener: new listener");
500 directPairingListenerMapLock.unlock();
501 return onDirectPairingListener;
504 void RemoveOnDirectPairingListener(JNIEnv* env, jobject jListener)
506 directPairingListenerMapLock.lock();
507 bool isFound = false;
508 for (auto it = directPairingListenerMap.begin(); it !=
509 directPairingListenerMap.end(); ++it)
511 if (env->IsSameObject(jListener, it->first))
513 auto refPair = it->second;
514 if (refPair.second > 1)
517 it->second = refPair;
518 directPairingListenerMap.insert(*it);
519 LOGI("onDirectPairingListener: ref. count decremented");
523 env->DeleteGlobalRef(it->first);
524 JniOnDirectPairingListener* listener = refPair.first;
526 directPairingListenerMap.erase(it);
527 LOGI("onDirectPairingListener is removed");
535 ThrowOcException(JNI_EXCEPTION, "onDirectPairingListener not found");
537 directPairingListenerMapLock.unlock();
541 * Class: org_iotivity_base_OcPlatform
543 * Signature: (IILjava/lang/String;II)V
545 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
546 (JNIEnv *env, jclass clazz, jint jServiceType, jint jModeType, jstring jIpAddress, jint jPort,
547 jint jQOS, jstring jDbPath)
549 LOGI("OcPlatform_configure");
551 std::string ipAddress;
555 ipAddress = env->GetStringUTFChars(jIpAddress, nullptr);
559 dbfile = env->GetStringUTFChars(jDbPath, nullptr);
560 JniOcSecurity::StoreDbPath(dbfile);
565 port = static_cast<uint16_t>(jPort);
569 JniUtils::getServiceType(env, jServiceType),
570 JniUtils::getModeType(env, jModeType),
573 JniUtils::getQOS(env, static_cast<int>(jQOS)),
574 JniOcSecurity::getOCPersistentStorage()
576 OCPlatform::Configure(cfg);
580 * Class: org_iotivity_base_OcPlatform
581 * Method: notifyAllObservers0
582 * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
584 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
585 (JNIEnv *env, jclass clazz, jobject jResourceHandle)
587 LOGI("OcPlatform_notifyAllObservers");
588 if (!jResourceHandle)
590 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
594 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
595 env, jResourceHandle);
596 if (!jniOcResourceHandle)
603 OCStackResult result =
604 OCPlatform::notifyAllObservers(jniOcResourceHandle->getOCResourceHandle());
606 if (OC_STACK_OK != result)
608 ThrowOcException(result, "Failed to notify all observers");
612 catch (OCException& e)
614 LOGE("%s", e.reason().c_str());
615 ThrowOcException(e.code(), e.reason().c_str());
620 * Class: org_iotivity_base_OcPlatform
621 * Method: notifyAllObservers1
622 * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V
624 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1
625 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jint jQoS)
627 LOGI("OcPlatform_notifyAllObservers1");
629 if (!jResourceHandle)
631 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
635 JniOcResourceHandle* jniOcResourceHandle =
636 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
637 if (!jniOcResourceHandle)
643 OCStackResult result = OCPlatform::notifyAllObservers(
644 jniOcResourceHandle->getOCResourceHandle(),
645 JniUtils::getQOS(env, static_cast<int>(jQoS)));
647 if (OC_STACK_OK != result)
649 ThrowOcException(result, "Failed to notify all observers");
653 catch (OCException& e)
655 LOGE("%s", e.reason().c_str());
656 ThrowOcException(e.code(), e.reason().c_str());
661 * Class: org_iotivity_base_OcPlatform
662 * Method: notifyListOfObservers2
663 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;)V
665 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2(
668 jobject jResourceHandle,
669 jbyteArray jObservationIdArr,
670 jobject jResourceResponse)
672 LOGD("OcPlatform_notifyListOfObservers2");
673 if (!jResourceHandle)
675 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
678 if (!jObservationIdArr)
680 ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
683 if (!jResourceResponse)
685 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
689 JniOcResourceHandle* jniOcResourceHandle =
690 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
691 if (!jniOcResourceHandle)
696 JniOcResourceResponse* jniOcResourceResponse =
697 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
698 if (!jniOcResourceResponse)
703 int len = env->GetArrayLength(jObservationIdArr);
704 uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
706 ObservationIds observationIds;
707 for (int i = 0; i < len; ++i)
709 observationIds.push_back(bArr[i]);
712 env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
716 OCStackResult result = OCPlatform::notifyListOfObservers(
717 jniOcResourceHandle->getOCResourceHandle(),
719 jniOcResourceResponse->getOCResourceResponse());
721 if (OC_STACK_OK != result)
723 ThrowOcException(result, "Failed to notify all observers");
726 catch (OCException& e)
728 LOGE("%s", e.reason().c_str());
729 ThrowOcException(e.code(), e.reason().c_str());
734 * Class: org_iotivity_base_OcPlatform
735 * Method: notifyListOfObservers3
736 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;I)V
738 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3(
741 jobject jResourceHandle,
742 jbyteArray jObservationIdArr,
743 jobject jResourceResponse,
746 LOGD("OcPlatform_notifyListOfObservers3");
747 if (!jResourceHandle)
749 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
752 if (!jObservationIdArr)
754 ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
757 if (!jResourceResponse)
759 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
763 JniOcResourceHandle* jniOcResourceHandle =
764 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
765 if (!jniOcResourceHandle)
770 JniOcResourceResponse* jniOcResourceResponse =
771 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
772 if (!jniOcResourceResponse)
777 int len = env->GetArrayLength(jObservationIdArr);
778 uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
780 ObservationIds observationIds;
781 for (int i = 0; i < len; ++i)
783 observationIds.push_back(bArr[i]);
786 env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
790 OCStackResult result = OCPlatform::notifyListOfObservers(
791 jniOcResourceHandle->getOCResourceHandle(),
793 jniOcResourceResponse->getOCResourceResponse(),
794 JniUtils::getQOS(env, static_cast<int>(jQoS)));
796 if (OC_STACK_OK != result)
798 ThrowOcException(result, "Failed to notify all observers");
801 catch (OCException& e)
803 LOGE("%s", e.reason().c_str());
804 ThrowOcException(e.code(), e.reason().c_str());
809 * Class: org_iotivity_base_OcPlatform
810 * Method: findResource0
811 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V
813 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0(
817 jstring jResourceUri,
818 jint jConnectivityType,
821 LOGD("OcPlatform_findResource");
825 host = env->GetStringUTFChars(jHost, nullptr);
827 std::string resourceUri;
830 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
834 ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
838 JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
840 FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
842 onResFoundListener->foundResourceCallback(resource);
845 FindErrorCallback findErrorCallback = [onResFoundListener](const std::string& uri, const int eCode)
847 onResFoundListener->findResourceErrorCallback(uri, eCode);
852 OCStackResult result = OCPlatform::findResource(
855 static_cast<OCConnectivityType>(jConnectivityType),
859 if (OC_STACK_OK != result)
861 ThrowOcException(result, "Find resource has failed");
865 catch (OCException& e)
867 LOGE("%s", e.reason().c_str());
868 ThrowOcException(e.code(), e.reason().c_str());
873 * Class: org_iotivity_base_OcPlatform
874 * Method: findResource1
875 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V
877 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1(
881 jstring jResourceUri,
882 jint jConnectivityType,
886 LOGD("OcPlatform_findResource");
890 host = env->GetStringUTFChars(jHost, nullptr);
892 std::string resourceUri;
895 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
899 ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
902 JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
904 FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
906 onResFoundListener->foundResourceCallback(resource);
909 FindErrorCallback findErrorCallback = [onResFoundListener](const std::string& uri, const int eCode)
911 onResFoundListener->findResourceErrorCallback(uri, eCode);
916 OCStackResult result = OCPlatform::findResource(
919 static_cast<OCConnectivityType>(jConnectivityType),
922 JniUtils::getQOS(env, static_cast<int>(jQoS)));
924 if (OC_STACK_OK != result)
926 ThrowOcException(result, "Find resource has failed");
930 catch (OCException& e)
932 LOGE("%s", e.reason().c_str());
933 ThrowOcException(e.code(), e.reason().c_str());
938 * Class: org_iotivity_base_OcPlatform
939 * Method: findDirectPairingDevices
940 * Signature: (ILorg/iotivity/base/OcPlatform/FindDirectPairingListener;)V
942 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findDirectPairingDevices
943 (JNIEnv * env, jclass clazz, jint jTimeout, jobject jListener)
945 LOGD("OcPlatform_findDirectPairingDevices");
949 ThrowOcException(OC_STACK_INVALID_PARAM, "onDPDevicesFoundListener cannot be null");
952 JniOnDPDevicesFoundListener *onDPDevsFoundListener = AddOnDPDevicesFoundListener(env,
955 GetDirectPairedCallback getDirectPairedCallback =
956 [onDPDevsFoundListener](PairedDevices pairingDevList)
958 onDPDevsFoundListener->directPairingDevicesCallback(pairingDevList,
959 DPFunc::FIND_DIRECT_PAIRED_DEV_LIST);
964 OCStackResult result = OCPlatform::findDirectPairingDevices(jTimeout,
965 getDirectPairedCallback);
966 if (OC_STACK_OK != result)
968 ThrowOcException(result, "OCPlatform::findDirectPairingDevices has failed");
972 catch (OCException& e)
974 LOGE("%s", e.reason().c_str());
975 ThrowOcException(e.code(), e.reason().c_str());
980 * Class: org_iotivity_base_OcPlatform
981 * Method: getDirectPairedDevices
982 * Signature: (Lorg/iotivity/base/OcDirectPairDevice/GetDirectPairedListener;)V
984 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDirectPairedDevices
985 (JNIEnv *env, jclass jclazz, jobject jListener)
987 LOGD("OcPlatform_getDirectPairedDevices");
991 ThrowOcException(OC_STACK_INVALID_PARAM, "getPairedDevList Callback cannot be null");
994 JniOnDPDevicesFoundListener *onGetPairedDevicesListener = AddOnDPDevicesFoundListener(env,
997 GetDirectPairedCallback getDirectPairedCallback =
998 [onGetPairedDevicesListener](PairedDevices pairedDevList)
1000 onGetPairedDevicesListener->directPairingDevicesCallback(pairedDevList,
1001 DPFunc::GET_PAIRED_DEV_LIST);
1006 OCStackResult result = OCPlatform::getDirectPairedDevices(getDirectPairedCallback);
1007 if (OC_STACK_OK != result)
1009 ThrowOcException(result, "OcDirectPairDevice_getDirectPairedDevices");
1013 catch (OCException& e)
1015 LOGE("%s", e.reason().c_str());
1016 ThrowOcException(e.code(), e.reason().c_str());
1021 * Class: org_iotivity_base_OcPlatform
1022 * Method: doDirectPairing
1023 * Signature: (Lorg/iotivity/base/OcDirectPairDevice;Lorg/iotivity/base/OcPrmType;
1024 * Ljava/lang/String;Lorg/iotivity/base/OcDirectPairDevice/DirectPairingListener;)V
1026 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_doDirectPairing0
1027 (JNIEnv *env, jclass clazz, jobject jpeer, jint jprmType, jstring jpin, jobject jListener)
1029 LOGD("OcPlatform_doDirectPairing");
1033 ThrowOcException(OC_STACK_INVALID_PARAM, "doDirectPairing Callback cannot be null");
1038 ThrowOcException(OC_STACK_INVALID_PARAM, "Peer cannot be null");
1042 JniOnDirectPairingListener *onDirectPairingListener = AddOnDirectPairingListener(env,
1045 DirectPairingCallback DirectPairingCB =
1046 [onDirectPairingListener](std::shared_ptr<OCDirectPairing> dpDev, OCStackResult result)
1048 onDirectPairingListener->doDirectPairingCB(dpDev, result);
1051 JniOcDirectPairDevice *dev = JniOcDirectPairDevice::getJniOcDirectPairDevicePtr(env, jpeer);
1057 std::string pin = env->GetStringUTFChars(jpin, 0);
1061 OCStackResult result = OCPlatform::doDirectPairing(dev->getPtr(), (OCPrm_t)jprmType,
1062 pin, DirectPairingCB);
1063 if (OC_STACK_OK != result)
1065 ThrowOcException(result, "OcPlatform_oDirectPairing");
1069 catch (OCException& e)
1071 LOGE("%s", e.reason().c_str());
1072 ThrowOcException(e.code(), e.reason().c_str());
1077 * Class: org_iotivity_base_OcPlatform
1078 * Method: getDeviceInfo0
1079 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V
1081 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0(
1085 jstring jResourceUri,
1086 jint jConnectivityType,
1089 LOGD("OcPlatform_getDeviceInfo0");
1093 host = env->GetStringUTFChars(jHost, nullptr);
1095 std::string resourceUri;
1098 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1102 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
1105 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
1107 FindDeviceCallback findDeviceCallback =
1108 [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
1110 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
1115 OCStackResult result = OCPlatform::getDeviceInfo(
1118 static_cast<OCConnectivityType>(jConnectivityType),
1119 findDeviceCallback);
1121 if (OC_STACK_OK != result)
1123 ThrowOcException(result, "Find device has failed");
1126 catch (OCException& e)
1128 LOGE("%s", e.reason().c_str());
1129 ThrowOcException(e.code(), e.reason().c_str());
1134 * Class: org_iotivity_base_OcPlatform
1135 * Method: getDeviceInfo1
1136 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V
1138 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1(
1142 jstring jResourceUri,
1143 jint jConnectivityType,
1147 LOGD("OcPlatform_getDeviceInfo1");
1151 host = env->GetStringUTFChars(jHost, nullptr);
1153 std::string resourceUri;
1156 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1160 ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
1163 JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
1165 FindDeviceCallback findDeviceCallback =
1166 [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
1168 onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
1173 OCStackResult result = OCPlatform::getDeviceInfo(
1176 static_cast<OCConnectivityType>(jConnectivityType),
1178 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1180 if (OC_STACK_OK != result)
1182 ThrowOcException(result, "Find device has failed");
1185 catch (OCException& e)
1187 LOGE("%s", e.reason().c_str());
1188 ThrowOcException(e.code(), e.reason().c_str());
1193 * Class: org_iotivity_base_OcPlatform
1194 * Method: getPlatformInfo0
1195 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;)V
1197 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo0(
1201 jstring jResourceUri,
1202 jint jConnectivityType,
1205 LOGD("OcPlatform_getPlatformInfo0");
1209 host = env->GetStringUTFChars(jHost, nullptr);
1211 std::string resourceUri;
1214 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1218 ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
1221 JniOnPlatformInfoListener *onPlatformInfoListener = AddOnPlatformInfoListener(env, jListener);
1223 FindPlatformCallback findPlatformCallback =
1224 [onPlatformInfoListener](const OCRepresentation& ocRepresentation)
1226 onPlatformInfoListener->foundPlatformCallback(ocRepresentation);
1231 OCStackResult result = OCPlatform::getPlatformInfo(
1234 static_cast<OCConnectivityType>(jConnectivityType),
1235 findPlatformCallback);
1237 if (OC_STACK_OK != result)
1239 ThrowOcException(result, "Find platform has failed");
1242 catch (OCException& e)
1244 LOGE("%s", e.reason().c_str());
1245 ThrowOcException(e.code(), e.reason().c_str());
1250 * Class: org_iotivity_base_OcPlatform
1251 * Method: getPlatformInfo1
1252 * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;I)V
1254 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1(
1258 jstring jResourceUri,
1259 jint jConnectivityType,
1263 LOGD("OcPlatform_getPlatformInfo1");
1267 host = env->GetStringUTFChars(jHost, nullptr);
1269 std::string resourceUri;
1272 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1276 ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
1279 JniOnPlatformInfoListener *onPlatformInfoListener = AddOnPlatformInfoListener(env, jListener);
1281 FindPlatformCallback findPlatformCallback =
1282 [onPlatformInfoListener](const OCRepresentation& ocRepresentation)
1284 onPlatformInfoListener->foundPlatformCallback(ocRepresentation);
1289 OCStackResult result = OCPlatform::getPlatformInfo(
1292 static_cast<OCConnectivityType>(jConnectivityType),
1293 findPlatformCallback,
1294 JniUtils::getQOS(env, static_cast<int>(jQoS)));
1296 if (OC_STACK_OK != result)
1298 ThrowOcException(result, "Find platform has failed");
1301 catch (OCException& e)
1303 LOGE("%s", e.reason().c_str());
1304 ThrowOcException(e.code(), e.reason().c_str());
1309 * Class: org_iotivity_base_OcPlatform
1310 * Method: registerResource0
1311 * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;
1313 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0(
1314 JNIEnv *env, jclass clazz, jobject jResource)
1316 LOGD("OcPlatform_registerResource");
1319 ThrowOcException(OC_STACK_INVALID_PARAM, "Resource cannot be null");
1322 JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, jResource);
1328 OCResourceHandle resourceHandle;
1331 OCStackResult result = OCPlatform::registerResource(
1333 resource->getOCResource());
1335 if (OC_STACK_OK != result)
1337 ThrowOcException(result, "register resource");
1340 catch (OCException& e)
1342 LOGE("%s", e.reason().c_str());
1343 ThrowOcException(e.code(), e.reason().c_str());
1346 JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
1347 jlong handle = reinterpret_cast<jlong>(jniHandle);
1348 jobject jResourceHandle =
1349 env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
1351 if (!jResourceHandle)
1353 LOGE("Failed to create OcResourceHandle");
1356 return jResourceHandle;
1360 * Class: org_iotivity_base_OcPlatform
1361 * Method: registerResource1
1362 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;
1364 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1(
1367 jstring jResourceUri,
1368 jstring jResourceTypeName,
1369 jstring jResourceInterface,
1370 jobject jListener, jint jResourceProperty)
1372 LOGI("OcPlatform_registerResource1");
1373 std::string resourceUri;
1376 resourceUri = env->GetStringUTFChars(jResourceUri, nullptr);
1378 std::string resourceTypeName;
1379 if (jResourceTypeName)
1381 resourceTypeName = env->GetStringUTFChars(jResourceTypeName, nullptr);
1383 std::string resourceInterface;
1384 if (jResourceInterface)
1386 resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
1388 JniEntityHandler* entityHandler = NULL;
1389 EntityHandler handleEntityCallback = NULL;
1392 entityHandler = new JniEntityHandler(env, jListener);
1393 handleEntityCallback =
1394 [entityHandler](const std::shared_ptr<OCResourceRequest> request) -> OCEntityHandlerResult
1396 return entityHandler->handleEntity(request);
1400 OCResourceHandle resourceHandle;
1403 OCStackResult result = OCPlatform::registerResource(
1408 handleEntityCallback,
1409 static_cast<int>(jResourceProperty));
1411 if (OC_STACK_OK != result)
1413 delete entityHandler;
1414 ThrowOcException(result, "register resource");
1418 catch (OCException& e)
1420 LOGE("%s", e.reason().c_str());
1421 delete entityHandler;
1422 ThrowOcException(e.code(), e.reason().c_str());
1426 JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
1427 jlong handle = reinterpret_cast<jlong>(jniHandle);
1428 jobject jResourceHandle =
1429 env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
1430 if (!jResourceHandle)
1432 LOGE("Failed to create OcResourceHandle");
1436 return jResourceHandle;
1440 * Class: org_iotivity_base_OcPlatform
1441 * Method: registerDeviceInfo0
1442 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
1444 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0(
1447 jstring jDeviceName,
1448 jobjectArray jDeviceTypes)
1450 LOGI("OcPlatform_registerDeviceInfo");
1454 ThrowOcException(OC_STACK_INVALID_PARAM, "deviceName cannot be null");
1460 ThrowOcException(OC_STACK_INVALID_PARAM, "deviceTypes cannot be null");
1464 OCDeviceInfo deviceInfo;
1465 memset(&deviceInfo, 0, sizeof(deviceInfo));
1468 DuplicateString(&deviceInfo.deviceName, env->GetStringUTFChars(jDeviceName, nullptr));
1470 jsize len = env->GetArrayLength(jDeviceTypes);
1471 for (jsize i = 0; i < len; ++i)
1473 jstring jStr = (jstring)env->GetObjectArrayElement(jDeviceTypes, i);
1476 delete deviceInfo.deviceName;
1477 ThrowOcException(OC_STACK_INVALID_PARAM, "device type cannot be null");
1481 OCResourcePayloadAddStringLL(&deviceInfo.types, env->GetStringUTFChars(jStr, nullptr));
1482 if (env->ExceptionCheck())
1484 delete deviceInfo.deviceName;
1488 env->DeleteLocalRef(jStr);
1491 catch (std::exception &e)
1493 ThrowOcException(JNI_EXCEPTION, "Failed to construct device info");
1499 OCStackResult result = OCPlatform::registerDeviceInfo(deviceInfo);
1501 delete deviceInfo.deviceName;
1503 if (OC_STACK_OK != result)
1505 ThrowOcException(result, "Failed to register device info");
1509 catch (OCException& e)
1511 LOGE("%s", e.reason().c_str());
1512 ThrowOcException(e.code(), e.reason().c_str());
1517 * Class: org_iotivity_base_OcPlatform
1518 * Method: registerPlatformInfo0
1519 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
1521 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0(
1524 jstring jPlatformID,
1525 jstring jManufacturerName,
1526 jstring jManufacturerUrl,
1527 jstring jModelNumber,
1528 jstring jDateOfManufacture,
1529 jstring jPlatformVersion,
1530 jstring jOperatingSystemVersion,
1531 jstring jHardwareVersion,
1532 jstring jFirmwareVersion,
1533 jstring jSupportUrl,
1534 jstring jSystemTime)
1536 LOGI("OcPlatform_registerPlatformInfo");
1539 std::string platformID;
1540 std::string manufacturerName;
1541 std::string manufacturerUrl;
1542 std::string modelNumber;
1543 std::string dateOfManufacture;
1544 std::string platformVersion;
1545 std::string operatingSystemVersion;
1546 std::string hardwareVersion;
1547 std::string firmwareVersion;
1548 std::string supportUrl;
1549 std::string systemTime;
1553 platformID = env->GetStringUTFChars(jPlatformID, nullptr);
1555 if (jManufacturerName)
1557 manufacturerName = env->GetStringUTFChars(jManufacturerName, nullptr);
1559 if (jManufacturerUrl)
1561 manufacturerUrl = env->GetStringUTFChars(jManufacturerUrl, nullptr);
1565 modelNumber = env->GetStringUTFChars(jModelNumber, nullptr);
1567 if (jDateOfManufacture)
1569 dateOfManufacture = env->GetStringUTFChars(jDateOfManufacture, nullptr);
1571 if (jPlatformVersion)
1573 platformVersion = env->GetStringUTFChars(jPlatformVersion, nullptr);
1575 if (jOperatingSystemVersion)
1577 operatingSystemVersion = env->GetStringUTFChars(jOperatingSystemVersion, nullptr);
1579 if (jHardwareVersion)
1581 hardwareVersion = env->GetStringUTFChars(jHardwareVersion, nullptr);
1583 if (jFirmwareVersion)
1585 firmwareVersion = env->GetStringUTFChars(jFirmwareVersion, nullptr);
1589 supportUrl = env->GetStringUTFChars(jSupportUrl, nullptr);
1593 systemTime = env->GetStringUTFChars(jSystemTime, nullptr);
1596 OCPlatformInfo platformInfo;
1599 DuplicateString(&platformInfo.platformID, platformID);
1600 DuplicateString(&platformInfo.manufacturerName, manufacturerName);
1601 DuplicateString(&platformInfo.manufacturerUrl, manufacturerUrl);
1602 DuplicateString(&platformInfo.modelNumber, modelNumber);
1603 DuplicateString(&platformInfo.dateOfManufacture, dateOfManufacture);
1604 DuplicateString(&platformInfo.platformVersion, platformVersion);
1605 DuplicateString(&platformInfo.operatingSystemVersion, operatingSystemVersion);
1606 DuplicateString(&platformInfo.hardwareVersion, hardwareVersion);
1607 DuplicateString(&platformInfo.firmwareVersion, firmwareVersion);
1608 DuplicateString(&platformInfo.supportUrl, supportUrl);
1609 DuplicateString(&platformInfo.systemTime, systemTime);
1611 catch (std::exception &e)
1613 ThrowOcException(JNI_EXCEPTION, "Failed to construct platform info");
1617 // __android_log_print(ANDROID_LOG_INFO, "Rahul", "platformID = %s", platformID);
1620 OCStackResult result = OCPlatform::registerPlatformInfo(platformInfo);
1622 delete platformInfo.platformID;
1623 delete platformInfo.manufacturerName;
1624 delete platformInfo.manufacturerUrl;
1625 delete platformInfo.modelNumber;
1626 delete platformInfo.dateOfManufacture;
1627 delete platformInfo.platformVersion;
1628 delete platformInfo.operatingSystemVersion;
1629 delete platformInfo.hardwareVersion;
1630 delete platformInfo.firmwareVersion;
1631 delete platformInfo.supportUrl;
1632 delete platformInfo.systemTime;
1634 if (OC_STACK_OK != result)
1636 ThrowOcException(result, "Failed to register platform info");
1640 catch (OCException& e)
1642 LOGE("Error is due to %s", e.reason().c_str());
1643 ThrowOcException(e.code(), e.reason().c_str());
1648 * Class: org_iotivity_base_OcPlatform
1649 * Method: unregisterResource0
1650 * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
1652 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0(
1653 JNIEnv *env, jclass clazz, jobject jResourceHandle)
1655 LOGI("OcPlatform_unregisterResource");
1656 if (!jResourceHandle)
1658 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1661 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
1662 env, jResourceHandle);
1663 if (!jniOcResourceHandle)
1670 OCResourceHandle resHandle = jniOcResourceHandle->getOCResourceHandle();
1671 OCStackResult result = OCPlatform::unregisterResource(resHandle);
1672 if (OC_STACK_OK != result)
1674 ThrowOcException(result, "Failed to unregister resource");
1677 catch (OCException& e)
1679 LOGE("%s", e.reason().c_str());
1680 ThrowOcException(e.code(), e.reason().c_str());
1685 * Class: org_iotivity_base_OcPlatform
1686 * Method: bindResource0
1687 * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
1689 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0
1690 (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)
1692 LOGI("OcPlatform_bindResource");
1693 if (!jResourceCollectionHandle)
1695 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1698 if (!jResourceHandle)
1700 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1703 JniOcResourceHandle* jniOcResourceCollectionHandle =
1704 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1705 if (!jniOcResourceCollectionHandle)
1710 JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
1711 env, jResourceHandle);
1712 if (!jniOcResourceHandle)
1719 OCStackResult result = OCPlatform::bindResource(
1720 jniOcResourceCollectionHandle->getOCResourceHandle(),
1721 jniOcResourceHandle->getOCResourceHandle()
1724 if (OC_STACK_OK != result)
1726 ThrowOcException(result, "Failed to bind resource");
1729 catch (OCException& e)
1731 LOGE("%s", e.reason().c_str());
1732 ThrowOcException(e.code(), e.reason().c_str());
1737 * Class: org_iotivity_base_OcPlatform
1738 * Method: bindResources0
1739 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
1741 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0(
1744 jobject jResourceCollectionHandle,
1745 jobjectArray jResourceHandleArray)
1747 LOGI("OcPlatform_bindResources");
1749 if (!jResourceCollectionHandle)
1751 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1754 if (!jResourceHandleArray)
1756 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
1760 JniOcResourceHandle* jniOcResourceCollectionHandle =
1761 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1762 if (!jniOcResourceCollectionHandle)
1767 std::vector<OCResourceHandle> resourceHandleList;
1768 int len = env->GetArrayLength(jResourceHandleArray);
1769 for (int i = 0; i < len; ++i)
1771 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
1772 if (!jResourceHandle)
1774 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
1778 JniOcResourceHandle* jniOcResourceHandle =
1779 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
1780 if (!jniOcResourceHandle)
1785 resourceHandleList.push_back(
1786 jniOcResourceHandle->getOCResourceHandle());
1791 OCStackResult result = OCPlatform::bindResources(
1792 jniOcResourceCollectionHandle->getOCResourceHandle(),
1796 if (OC_STACK_OK != result)
1798 ThrowOcException(result, "Failed to bind resources");
1801 catch (OCException& e)
1803 LOGE("%s", e.reason().c_str());
1804 ThrowOcException(e.code(), e.reason().c_str());
1809 * Class: org_iotivity_base_OcPlatform
1810 * Method: unbindResource0
1811 * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
1813 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0(
1816 jobject jResourceCollectionHandle,
1817 jobject jResourceHandle)
1819 LOGI("OcPlatform_unbindResource");
1820 if (!jResourceCollectionHandle)
1822 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1825 if (!jResourceHandle)
1827 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1831 JniOcResourceHandle* jniOcResourceCollectionHandle =
1832 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1833 if (!jniOcResourceCollectionHandle)
1838 JniOcResourceHandle* jniOcResourceHandle =
1839 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
1840 if (!jniOcResourceHandle)
1847 OCStackResult result = OCPlatform::unbindResource(
1848 jniOcResourceCollectionHandle->getOCResourceHandle(),
1849 jniOcResourceHandle->getOCResourceHandle());
1851 if (OC_STACK_OK != result)
1853 ThrowOcException(result, "Failed to unbind resource");
1856 catch (OCException& e)
1858 LOGE("%s", e.reason().c_str());
1859 ThrowOcException(e.code(), e.reason().c_str());
1864 * Class: org_iotivity_base_OcPlatform
1865 * Method: unbindResources0
1866 * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
1868 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0(
1871 jobject jResourceCollectionHandle,
1872 jobjectArray jResourceHandleArray)
1874 LOGI("OcPlatform_unbindResources");
1875 if (!jResourceCollectionHandle)
1877 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
1880 if (!jResourceHandleArray)
1882 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
1886 JniOcResourceHandle* jniOcResourceCollectionHandle =
1887 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceCollectionHandle);
1888 if (!jniOcResourceCollectionHandle)
1893 std::vector<OCResourceHandle> resourceHandleList;
1894 int len = env->GetArrayLength(jResourceHandleArray);
1895 for (int i = 0; i < len; ++i)
1897 jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
1898 if (!jResourceHandle)
1900 ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
1904 JniOcResourceHandle* jniOcResourceHandle =
1905 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
1906 if (!jniOcResourceHandle)
1911 resourceHandleList.push_back(
1912 jniOcResourceHandle->getOCResourceHandle());
1917 OCStackResult result = OCPlatform::unbindResources(
1918 jniOcResourceCollectionHandle->getOCResourceHandle(),
1922 if (OC_STACK_OK != result)
1924 ThrowOcException(result, "Failed to unbind resources");
1927 catch (OCException& e)
1929 LOGE("%s", e.reason().c_str());
1930 ThrowOcException(e.code(), e.reason().c_str());
1935 * Class: org_iotivity_base_OcPlatform
1936 * Method: bindTypeToResource0
1937 * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
1939 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0(
1942 jobject jResourceHandle,
1943 jstring jResourceTypeName)
1945 LOGI("OcPlatform_bindTypeToResource");
1946 if (!jResourceHandle)
1948 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1951 std::string typeName;
1952 if (jResourceTypeName)
1954 typeName = env->GetStringUTFChars(jResourceTypeName, nullptr);
1957 JniOcResourceHandle* jniOcResourceHandle =
1958 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
1959 if (!jniOcResourceHandle)
1966 OCStackResult result = OCPlatform::bindTypeToResource(
1967 jniOcResourceHandle->getOCResourceHandle(),
1971 if (OC_STACK_OK != result)
1973 ThrowOcException(result, "Failed to bind type to resource");
1976 catch (OCException& e)
1978 LOGE("%s", e.reason().c_str());
1979 ThrowOcException(e.code(), e.reason().c_str());
1984 * Class: org_iotivity_base_OcPlatform
1985 * Method: bindInterfaceToResource0
1986 * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
1988 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0
1989 (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceInterfaceName)
1991 LOGI("OcPlatform_bindInterfaceToResource");
1992 if (!jResourceHandle)
1994 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
1997 std::string interfaceName;
1998 if (jResourceInterfaceName)
2000 interfaceName = env->GetStringUTFChars(jResourceInterfaceName, nullptr);
2003 JniOcResourceHandle* jniOcResourceHandle =
2004 JniOcResourceHandle::getJniOcResourceHandlePtr(env, jResourceHandle);
2005 if (!jniOcResourceHandle)
2012 OCStackResult result = OCPlatform::bindInterfaceToResource(
2013 jniOcResourceHandle->getOCResourceHandle(),
2017 if (OC_STACK_OK != result)
2019 ThrowOcException(result, "Failed to bind interface to resource");
2022 catch (OCException& e)
2024 LOGE("%s", e.reason().c_str());
2025 ThrowOcException(e.code(), e.reason().c_str());
2030 * Class: org_iotivity_base_OcPlatform
2031 * Method: startPresence0
2034 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0(
2035 JNIEnv *env, jclass clazz, jint ttl)
2037 LOGI("OcPlatform_startPresence");
2041 OCStackResult result = OCPlatform::startPresence((unsigned int)ttl);
2043 if (OC_STACK_OK != result)
2045 ThrowOcException(result, "Failed to start presence");
2048 catch (OCException& e)
2050 LOGE("%s", e.reason().c_str());
2051 ThrowOcException(e.code(), e.reason().c_str());
2056 * Class: org_iotivity_base_OcPlatform
2057 * Method: stopPresence0
2060 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0(
2061 JNIEnv *env, jclass clazz)
2063 LOGI("OcPlatform_stopPresence");
2067 OCStackResult result = OCPlatform::stopPresence();
2069 if (OC_STACK_OK != result)
2071 ThrowOcException(result, "Failed to stop presence");
2074 catch (OCException& e)
2076 LOGE("%s", e.reason().c_str());
2077 ThrowOcException(e.code(), e.reason().c_str());
2082 * Class: org_iotivity_base_OcPlatform
2083 * Method: subscribePresence0
2084 * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
2086 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0(
2090 jint jConnectivityType,
2093 LOGD("OcPlatform_subscribePresence");
2097 host = env->GetStringUTFChars(jHost, nullptr);
2101 ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
2105 JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
2107 SubscribeCallback subscribeCallback =
2108 [onPresenceListener](OCStackResult result,
2109 const unsigned int nonce,
2110 const std::string& hostAddress)
2112 onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
2115 OCPlatform::OCPresenceHandle presenceHandle;
2118 OCStackResult result = OCPlatform::subscribePresence(
2121 static_cast<OCConnectivityType>(jConnectivityType),
2124 if (OC_STACK_OK != result)
2126 ThrowOcException(result, "subscribe presence has failed");
2129 catch (OCException& e)
2131 LOGE("%s", e.reason().c_str());
2132 ThrowOcException(e.code(), e.reason().c_str());
2136 JniOcPresenceHandle* jniPresenceHandle =
2137 new JniOcPresenceHandle(onPresenceListener, presenceHandle);
2138 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
2139 jobject jPresenceHandle =
2140 env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
2141 if (!jPresenceHandle)
2143 LOGE("Failed to create OcPresenceHandle");
2144 delete jniPresenceHandle;
2146 return jPresenceHandle;
2150 * Class: org_iotivity_base_OcPlatform
2151 * Method: subscribePresence1
2152 * Signature: (Ljava/lang/String;Ljava/lang/String;I
2153 Lorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
2155 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1(
2159 jstring jResourceType,
2160 jint jConnectivityType,
2163 LOGD("OcPlatform_subscribePresence1");
2167 host = env->GetStringUTFChars(jHost, nullptr);
2169 std::string resourceType;
2172 resourceType = env->GetStringUTFChars(jResourceType, nullptr);
2176 ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
2180 JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
2182 SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result,
2183 const unsigned int nonce, const std::string& hostAddress)
2185 onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
2188 OCPlatform::OCPresenceHandle presenceHandle;
2191 OCStackResult result = OCPlatform::subscribePresence(
2195 static_cast<OCConnectivityType>(jConnectivityType),
2198 if (OC_STACK_OK != result)
2200 ThrowOcException(result, "subscribe presence has failed");
2203 catch (OCException& e)
2205 LOGE("%s", e.reason().c_str());
2206 ThrowOcException(e.code(), e.reason().c_str());
2210 JniOcPresenceHandle* jniPresenceHandle =
2211 new JniOcPresenceHandle(onPresenceListener, presenceHandle);
2212 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
2213 jobject jPresenceHandle =
2214 env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
2215 if (!jPresenceHandle)
2217 LOGE("Failed to create OcPresenceHandle");
2218 delete jniPresenceHandle;
2220 return jPresenceHandle;
2224 * Class: org_iotivity_base_OcPlatform
2225 * Method: unsubscribePresence0
2226 * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V
2228 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0(
2229 JNIEnv *env, jclass clazz, jobject jPresenceHandle)
2231 LOGD("OcPlatform_unsubscribePresence");
2232 if (!jPresenceHandle)
2234 ThrowOcException(OC_STACK_INVALID_PARAM, "presenceHandle cannot be null");
2237 JniOcPresenceHandle* jniPresenceHandle =
2238 JniOcPresenceHandle::getJniOcPresenceHandlePtr(env, jPresenceHandle);
2239 if (!jniPresenceHandle)
2244 OCPresenceHandle presenceHandle = jniPresenceHandle->getOCPresenceHandle();
2248 OCStackResult result = OCPlatform::unsubscribePresence(presenceHandle);
2250 if (OC_STACK_OK != result)
2252 ThrowOcException(result, "unsubscribe presence has failed");
2256 JniOnPresenceListener* jniPresenceListener = jniPresenceHandle->getJniOnPresenceListener();
2257 if (jniPresenceListener)
2259 jweak jwOnPresenceListener = jniPresenceListener->getJWListener();
2260 if (jwOnPresenceListener)
2262 RemoveOnPresenceListener(env, jwOnPresenceListener);
2266 catch (OCException& e)
2268 LOGE("%s", e.reason().c_str());
2269 ThrowOcException(e.code(), e.reason().c_str());
2274 * Class: org_iotivity_base_OcPlatform
2275 * Method: subscribeDevicePresence0
2276 * Signature: (Ljava/lang/String;[Ljava/lang/String;I
2277 Lorg/iotivity/base/OcResource/OnObserveListener;)Lorg/iotivity/base/OcPresenceHandle;
2279 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribeDevicePresence0(
2283 jobjectArray jDiArray,
2284 jint jConnectivityType,
2287 LOGD("OcPlatform_subscribeDevicePresence0");
2292 host = env->GetStringUTFChars(jHost, nullptr);
2297 ThrowOcException(OC_STACK_INVALID_PARAM, "device id List cannot be null");
2301 std::vector<std::string> di;
2302 JniUtils::convertJavaStrArrToStrVector(env, jDiArray, di);
2306 ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
2310 JniOnObserveListener *onObserveListener = AddOnObserveListener(env, jListener);
2312 ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
2313 const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
2315 onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
2318 OCPlatform::OCPresenceHandle presenceHandle;
2321 OCStackResult result = OCPlatform::subscribeDevicePresence(
2325 static_cast<OCConnectivityType>(jConnectivityType),
2328 if (OC_STACK_OK != result)
2330 ThrowOcException(result, "subscribe device presence has failed");
2333 catch (OCException& e)
2335 LOGE("%s", e.reason().c_str());
2336 ThrowOcException(e.code(), e.reason().c_str());
2340 JniOcPresenceHandle* jniPresenceHandle =
2341 new JniOcPresenceHandle(onObserveListener, presenceHandle);
2342 jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
2343 jobject jPresenceHandle =
2344 env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
2345 if (!jPresenceHandle)
2347 LOGE("Failed to create OcPresenceHandle");
2348 delete jniPresenceHandle;
2350 return jPresenceHandle;
2352 ThrowOcException(JNI_NO_SUPPORT, "Not supported");
2358 * Class: org_iotivity_base_OcPlatform
2359 * Method: constructResourceObject0
2360 * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)
2361 Lorg/iotivity/base/OcResource;
2363 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0(
2368 jint jConnectivityType,
2369 jboolean jIsObservable,
2370 jobjectArray jResourceTypeArray,
2371 jobjectArray jInterfaceArray)
2373 LOGD("OcPlatform_constructResourceObject");
2377 host = env->GetStringUTFChars(jHost, nullptr);
2382 uri = env->GetStringUTFChars(jUri, nullptr);
2384 if (!jResourceTypeArray)
2386 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceTypeList cannot be null");
2389 if (!jInterfaceArray)
2391 ThrowOcException(OC_STACK_INVALID_PARAM, "interfaceList cannot be null");
2395 std::vector<std::string> resourceTypes;
2396 JniUtils::convertJavaStrArrToStrVector(env, jResourceTypeArray, resourceTypes);
2398 std::vector<std::string> interfaces;
2399 JniUtils::convertJavaStrArrToStrVector(env, jInterfaceArray, interfaces);
2401 std::shared_ptr<OCResource> resource = OCPlatform::constructResourceObject(
2404 static_cast<OCConnectivityType>(jConnectivityType),
2405 static_cast<bool>(jIsObservable),
2411 ThrowOcException(OC_STACK_ERROR, "Failed to create OCResource");
2415 JniOcResource *jniOcResource = new JniOcResource(resource);
2417 jobject jResource = env->NewObject(g_cls_OcResource, g_mid_OcResource_ctor);
2420 delete jniOcResource;
2423 SetHandle<JniOcResource>(env, jResource, jniOcResource);
2424 if (env->ExceptionCheck())
2426 delete jniOcResource;
2433 * Class: org_iotivity_base_OcPlatform
2434 * Method: sendResponse0
2435 * Signature: (Lorg/iotivity/base/OcResourceResponse;)V
2437 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0(
2438 JNIEnv *env, jclass clazz, jobject jResourceResponse)
2440 LOGD("OcPlatform_sendResponse");
2441 if (!jResourceResponse)
2443 ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
2447 JniOcResourceResponse *jniResponse =
2448 JniOcResourceResponse::getJniOcResourceResponsePtr(env, jResourceResponse);
2456 OCStackResult result =
2457 OCPlatform::sendResponse(jniResponse->getOCResourceResponse());
2459 if (OC_STACK_OK != result)
2461 ThrowOcException(result, "failed to send response");
2464 catch (OCException& e)
2466 LOGE("%s", e.reason().c_str());
2467 ThrowOcException(e.code(), e.reason().c_str());
2472 * Class: org_iotivity_base_OcPlatform
2473 * Method: constructAccountManagerObject0
2474 * Signature: (Ljava/lang/String;I)Lorg/iotivity/base/OcAccountManager;
2476 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructAccountManagerObject0(
2480 jint jConnectivityType)
2483 ThrowOcException(OC_STACK_ERROR,
2484 "OCAccountManager is not supported. (Please build with WITH_CLOUD=1 option)");
2487 LOGD("OcPlatform_constructAccountManagerObject");
2490 ThrowOcException(OC_STACK_INVALID_PARAM, "host cannot be null");
2494 const char* charHost = env->GetStringUTFChars(jHost, nullptr);
2497 ThrowOcException(JNI_EXCEPTION, "charHost is null");
2500 std::string host(charHost);
2501 env->ReleaseStringUTFChars(jHost, charHost);
2503 std::shared_ptr<OCAccountManager> accountManager = OCPlatform::constructAccountManagerObject(
2505 static_cast<OCConnectivityType>(jConnectivityType));
2507 if (!accountManager)
2509 ThrowOcException(OC_STACK_ERROR, "Failed to create OCAccountManager");
2513 JniOcAccountManager *jniOcAccountManager = new JniOcAccountManager(accountManager);
2515 jobject jAccountManager = env->NewObject(g_cls_OcAccountManager, g_mid_OcAccountManager_ctor);
2516 if (!jAccountManager)
2518 delete jniOcAccountManager;
2521 SetHandle<JniOcAccountManager>(env, jAccountManager, jniOcAccountManager);
2522 if (env->ExceptionCheck())
2524 delete jniOcAccountManager;
2527 return jAccountManager;
2532 * Class: org_iotivity_base_OcPlatform
2533 * Method: getDeviceId
2536 JNIEXPORT jbyteArray JNICALL Java_org_iotivity_base_OcPlatform_getDeviceId
2537 (JNIEnv *env, jobject thiz)
2539 LOGD("OcPlatform_getDeviceId");
2540 OCUUIdentity deviceId;
2542 jbyteArray ret = env->NewByteArray(UUID_IDENTITY_SIZE);
2543 jbyte uuid[UUID_IDENTITY_SIZE];
2547 OCStackResult result = OCPlatform::getDeviceId(&deviceId);
2548 LOGD("OcPlatform_getDeviceId return from CPP");
2549 if (OC_STACK_OK != result)
2551 ThrowOcException(result, "Error while getting my device Id");
2555 for(int i=0;i < UUID_IDENTITY_SIZE; i++)
2557 uuid[i] =(jbyte) deviceId.id[i];
2562 catch (OCException& e)
2564 LOGE("%s", e.reason().c_str());
2565 ThrowOcException(e.code(), e.reason().c_str());
2568 env->SetByteArrayRegion(ret, 0, UUID_IDENTITY_SIZE, uuid);
2574 * Class: org_iotivity_base_OcPlatform
2575 * Method: setDeviceId
2576 * Signature: (Ljava/lang/byte;)V
2578 JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_setDeviceId(
2579 JNIEnv *env, jobject thiz, jbyteArray data)
2581 LOGI("OcPlatform_setDeviceId");
2582 OCUUIdentity deviceId;
2585 OCStackResult result;
2586 jbyte* uuid = env->GetByteArrayElements(data, 0);
2587 jsize arrayLength = env->GetArrayLength(data);
2588 if(arrayLength!=UUID_IDENTITY_SIZE)
2590 ThrowOcException(OC_STACK_INVALID_PARAM, "Byte length not equal to UUID_IDENTITY_SIZE");
2594 for(int i=0;i < UUID_IDENTITY_SIZE; i++)
2596 deviceId.id[i]=(jchar)uuid[i];
2598 result = OCPlatform::setDeviceId(&deviceId);
2599 if (OC_STACK_OK != result)
2601 ThrowOcException(result, "Failed to set DeviceId");
2605 catch (OCException& e)
2607 LOGE("%s", e.reason().c_str());
2608 ThrowOcException(e.code(), e.reason().c_str());