security-basecamp for 0.9.2 is merged in master brach.
Change-Id: Ia5cd2710a688d3e631009ed03f7e5eb97aba5d24
Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com>
JniEntityHandler.cpp \\r
JniOnResourceFoundListener.cpp \\r
JniOnDeviceInfoListener.cpp \\r
+ JniOnPlatformInfoListener.cpp \\r
JniOnPresenceListener.cpp \\r
JniOnGetListener.cpp \\r
JniOnPutListener.cpp \\r
JniOcResourceResponse.cpp \\r
JniOcPlatform.cpp \\r
JniOcResource.cpp \\r
- JniOcResourceIdentifier.cpp\r
+ JniOcResourceIdentifier.cpp \
+ JniOcSecurity.cpp
\r
LOCAL_LDLIBS := -llog\r
LOCAL_STATIC_LIBRARIES := android-oc\r
- /*
- * //******************************************************************
- * //
- * // Copyright 2015 Intel Corporation.
- * //
- * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- * //
- * // 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 "JniOcPlatform.h"
- #include "OCPlatform.h"
- #include "JniOcResource.h"
- #include "JniOcResourceHandle.h"
- #include "JniOcPresenceHandle.h"
- #include "JniOcResourceResponse.h"
- #include "JniUtils.h"
-
- using namespace OC;
-
- JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener)
- {
- JniOnResourceFoundListener *onResourceFoundListener = NULL;
-
- resourceFoundMapLock.lock();
-
- for (auto it = onResourceFoundListenerMap.begin(); it != onResourceFoundListenerMap.end(); ++it)
- {
- if (env->IsSameObject(jListener, it->first))
- {
- auto refPair = it->second;
- onResourceFoundListener = refPair.first;
- refPair.second++;
- it->second = refPair;
- onResourceFoundListenerMap.insert(*it);
- LOGD("OnResourceFoundListener: ref. count incremented");
- break;
- }
- }
-
- if (!onResourceFoundListener)
- {
- onResourceFoundListener = new JniOnResourceFoundListener(env, jListener, RemoveOnResourceFoundListener);
- jobject jgListener = env->NewGlobalRef(jListener);
-
- onResourceFoundListenerMap.insert(std::pair < jobject, std::pair < JniOnResourceFoundListener*,
- int >> (jgListener, std::pair<JniOnResourceFoundListener*, int>(onResourceFoundListener, 1)));
- LOGD("OnResourceFoundListener: new listener");
- }
- resourceFoundMapLock.unlock();
- return onResourceFoundListener;
- }
-
- void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener)
- {
- resourceFoundMapLock.lock();
-
- for (auto it = onResourceFoundListenerMap.begin(); it != onResourceFoundListenerMap.end(); ++it)
- {
- if (env->IsSameObject(jListener, it->first))
- {
- auto refPair = it->second;
- if (refPair.second > 1)
- {
- refPair.second--;
- it->second = refPair;
- onResourceFoundListenerMap.insert(*it);
- LOGI("OnResourceFoundListener: ref. count decremented");
- }
- else
- {
- env->DeleteGlobalRef(it->first);
- JniOnResourceFoundListener* listener = refPair.first;
- delete listener;
- onResourceFoundListenerMap.erase(it);
- LOGI("OnResourceFoundListener removed");
- }
- break;
- }
- }
- resourceFoundMapLock.unlock();
- }
-
- JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener)
- {
- JniOnDeviceInfoListener *onDeviceInfoListener = NULL;
-
- deviceInfoMapLock.lock();
-
- for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
- {
- if (env->IsSameObject(jListener, it->first))
- {
- auto refPair = it->second;
- onDeviceInfoListener = refPair.first;
- refPair.second++;
- it->second = refPair;
- onDeviceInfoListenerMap.insert(*it);
- LOGD("OnDeviceInfoListener: ref. count incremented");
- break;
- }
- }
-
- if (!onDeviceInfoListener)
- {
- onDeviceInfoListener = new JniOnDeviceInfoListener(env, jListener, RemoveOnDeviceInfoListener);
- jobject jgListener = env->NewGlobalRef(jListener);
-
- onDeviceInfoListenerMap.insert(std::pair < jobject, std::pair < JniOnDeviceInfoListener*,
- int >> (jgListener, std::pair<JniOnDeviceInfoListener*, int>(onDeviceInfoListener, 1)));
- LOGI("OnDeviceInfoListener: new listener");
- }
-
- deviceInfoMapLock.unlock();
- return onDeviceInfoListener;
- }
-
- void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener)
- {
- deviceInfoMapLock.lock();
- bool isFound = false;
- for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)
- {
- if (env->IsSameObject(jListener, it->first))
- {
- auto refPair = it->second;
- if (refPair.second > 1)
- {
- refPair.second--;
- it->second = refPair;
- onDeviceInfoListenerMap.insert(*it);
- LOGI("OnDeviceInfoListener: ref. count decremented");
- }
- else
- {
- env->DeleteGlobalRef(it->first);
- JniOnDeviceInfoListener* listener = refPair.first;
- delete listener;
- onDeviceInfoListenerMap.erase(it);
-
- LOGI("OnDeviceInfoListener removed");
- }
-
- isFound = true;
- break;
- }
- }
-
- if (!isFound)
- {
- ThrowOcException(JNI_EXCEPTION, "OnDeviceInfoListenet not found");
- }
- deviceInfoMapLock.unlock();
+ /*\r
+ * //******************************************************************\r
+ * //\r
+ * // Copyright 2015 Intel Corporation.\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 "JniOcPlatform.h"\r
+ #include "OCPlatform.h"\r
+ #include "JniOcResource.h"\r
+ #include "JniOcResourceHandle.h"\r
+ #include "JniOcPresenceHandle.h"\r
+ #include "JniOcResourceResponse.h"\r
+ #include "JniOcSecurity.h"
+ #include "JniUtils.h"\r
+ \r
+ using namespace OC;\r
+ \r
+ JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener)\r
+ {\r
+ JniOnResourceFoundListener *onResourceFoundListener = NULL;\r
+ \r
+ resourceFoundMapLock.lock();\r
+ \r
+ for (auto it = onResourceFoundListenerMap.begin(); it != onResourceFoundListenerMap.end(); ++it)\r
+ {\r
+ if (env->IsSameObject(jListener, it->first))\r
+ {\r
+ auto refPair = it->second;\r
+ onResourceFoundListener = refPair.first;\r
+ refPair.second++;\r
+ it->second = refPair;\r
+ onResourceFoundListenerMap.insert(*it);\r
+ LOGD("OnResourceFoundListener: ref. count incremented");\r
+ break;\r
+ }\r
+ }\r
+ \r
+ if (!onResourceFoundListener)\r
+ {\r
+ onResourceFoundListener = new JniOnResourceFoundListener(env, jListener, RemoveOnResourceFoundListener);\r
+ jobject jgListener = env->NewGlobalRef(jListener);\r
+ \r
+ onResourceFoundListenerMap.insert(std::pair < jobject, std::pair < JniOnResourceFoundListener*,\r
+ int >> (jgListener, std::pair<JniOnResourceFoundListener*, int>(onResourceFoundListener, 1)));\r
+ LOGD("OnResourceFoundListener: new listener");\r
+ }\r
+ resourceFoundMapLock.unlock();\r
+ return onResourceFoundListener;\r
+ }\r
+ \r
+ void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener)\r
+ {\r
+ resourceFoundMapLock.lock();\r
+ \r
+ for (auto it = onResourceFoundListenerMap.begin(); it != onResourceFoundListenerMap.end(); ++it)\r
+ {\r
+ if (env->IsSameObject(jListener, it->first))\r
+ {\r
+ auto refPair = it->second;\r
+ if (refPair.second > 1)\r
+ {\r
+ refPair.second--;\r
+ it->second = refPair;\r
+ onResourceFoundListenerMap.insert(*it);\r
+ LOGI("OnResourceFoundListener: ref. count decremented");\r
+ }\r
+ else\r
+ {\r
+ env->DeleteGlobalRef(it->first);\r
+ JniOnResourceFoundListener* listener = refPair.first;\r
+ delete listener;\r
+ onResourceFoundListenerMap.erase(it);\r
+ LOGI("OnResourceFoundListener removed");\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ resourceFoundMapLock.unlock();\r
+ }\r
+ \r
+ JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener)\r
+ {\r
+ JniOnDeviceInfoListener *onDeviceInfoListener = NULL;\r
+ \r
+ deviceInfoMapLock.lock();\r
+ \r
+ for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)\r
+ {\r
+ if (env->IsSameObject(jListener, it->first))\r
+ {\r
+ auto refPair = it->second;\r
+ onDeviceInfoListener = refPair.first;\r
+ refPair.second++;\r
+ it->second = refPair;\r
+ onDeviceInfoListenerMap.insert(*it);\r
+ LOGD("OnDeviceInfoListener: ref. count incremented");\r
+ break;\r
+ }\r
+ }\r
+ \r
+ if (!onDeviceInfoListener)\r
+ {\r
+ onDeviceInfoListener = new JniOnDeviceInfoListener(env, jListener, RemoveOnDeviceInfoListener);\r
+ jobject jgListener = env->NewGlobalRef(jListener);\r
+ \r
+ onDeviceInfoListenerMap.insert(std::pair < jobject, std::pair < JniOnDeviceInfoListener*,\r
+ int >> (jgListener, std::pair<JniOnDeviceInfoListener*, int>(onDeviceInfoListener, 1)));\r
+ LOGI("OnDeviceInfoListener: new listener");\r
+ }\r
+ \r
+ deviceInfoMapLock.unlock();\r
+ return onDeviceInfoListener;\r
+ }\r
+ \r
+ void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener)\r
+ {\r
+ deviceInfoMapLock.lock();\r
+ bool isFound = false;\r
+ for (auto it = onDeviceInfoListenerMap.begin(); it != onDeviceInfoListenerMap.end(); ++it)\r
+ {\r
+ if (env->IsSameObject(jListener, it->first))\r
+ {\r
+ auto refPair = it->second;\r
+ if (refPair.second > 1)\r
+ {\r
+ refPair.second--;\r
+ it->second = refPair;\r
+ onDeviceInfoListenerMap.insert(*it);\r
+ LOGI("OnDeviceInfoListener: ref. count decremented");\r
+ }\r
+ else\r
+ {\r
+ env->DeleteGlobalRef(it->first);\r
+ JniOnDeviceInfoListener* listener = refPair.first;\r
+ delete listener;\r
+ onDeviceInfoListenerMap.erase(it);\r
+ \r
+ LOGI("OnDeviceInfoListener removed");\r
+ }\r
+ \r
+ isFound = true;\r
+ break;\r
+ }\r
+ }\r
+ \r
+ if (!isFound)\r
+ {\r
+ ThrowOcException(JNI_EXCEPTION, "OnDeviceInfoListenet not found");\r
+ }\r
+ deviceInfoMapLock.unlock();\r
+}
+
+JniOnPlatformInfoListener* AddOnPlatformInfoListener(JNIEnv* env, jobject jListener)
+{
+ JniOnPlatformInfoListener *onPlatformInfoListener = NULL;
+
+ platformInfoMapLock.lock();
+
+ for (auto it = onPlatformInfoListenerMap.begin(); it != onPlatformInfoListenerMap.end(); ++it)
+ {
+ if (env->IsSameObject(jListener, it->first))
+ {
+ auto refPair = it->second;
+ onPlatformInfoListener = refPair.first;
+ refPair.second++;
+ it->second = refPair;
+ onPlatformInfoListenerMap.insert(*it);
+ LOGD("OnPlatformInfoListener: ref. count incremented");
+ break;
+ }
+ }
+
+ if (!onPlatformInfoListener)
+ {
+ onPlatformInfoListener = new JniOnPlatformInfoListener(env, jListener, RemoveOnPlatformInfoListener);
+ jobject jgListener = env->NewGlobalRef(jListener);
+
+ onPlatformInfoListenerMap.insert(std::pair < jobject, std::pair < JniOnPlatformInfoListener*,
+ int >> (jgListener, std::pair<JniOnPlatformInfoListener*, int>(onPlatformInfoListener, 1)));
+ LOGI("OnPlatformInfoListener: new listener");
+ }
+
+ platformInfoMapLock.unlock();
+ return onPlatformInfoListener;
+}
+
+void RemoveOnPlatformInfoListener(JNIEnv* env, jobject jListener)
+{
+ platformInfoMapLock.lock();
+ bool isFound = false;
+ for (auto it = onPlatformInfoListenerMap.begin(); it != onPlatformInfoListenerMap.end(); ++it)
+ {
+ if (env->IsSameObject(jListener, it->first))
+ {
+ auto refPair = it->second;
+ if (refPair.second > 1)
+ {
+ refPair.second--;
+ it->second = refPair;
+ onPlatformInfoListenerMap.insert(*it);
+ LOGI("OnPlatformInfoListener: ref. count decremented");
+ }
+ else
+ {
+ env->DeleteGlobalRef(it->first);
+ JniOnPlatformInfoListener* listener = refPair.first;
+ delete listener;
+ onPlatformInfoListenerMap.erase(it);
+
+ LOGI("OnPlatformInfoListener removed");
+ }
+
+ isFound = true;
+ break;
+ }
+ }
+
+ if (!isFound)
+ {
+ ThrowOcException(JNI_EXCEPTION, "OnPlatformInfoListenet not found");
+ }
+ platformInfoMapLock.unlock();
- }
-
- JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener)
- {
- JniOnPresenceListener *onPresenceListener = NULL;
-
- presenceMapLock.lock();
-
- for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
- {
- if (env->IsSameObject(jListener, it->first))
- {
- auto refPair = it->second;
- onPresenceListener = refPair.first;
- refPair.second++;
- it->second = refPair;
- onPresenceListenerMap.insert(*it);
- LOGD("OnPresenceListener: ref. count incremented");
- break;
- }
- }
- if (!onPresenceListener)
- {
- onPresenceListener = new JniOnPresenceListener(env, jListener, RemoveOnPresenceListener);
- jobject jgListener = env->NewGlobalRef(jListener);
- onPresenceListenerMap.insert(std::pair < jobject, std::pair < JniOnPresenceListener*,
- int >> (jgListener, std::pair<JniOnPresenceListener*, int>(onPresenceListener, 1)));
- LOGI("OnPresenceListener: new listener");
- }
- presenceMapLock.unlock();
- return onPresenceListener;
- }
-
- void RemoveOnPresenceListener(JNIEnv* env, jobject jListener)
- {
- presenceMapLock.lock();
- bool isFound = false;
- for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)
- {
- if (env->IsSameObject(jListener, it->first))
- {
- auto refPair = it->second;
- if (refPair.second > 1)
- {
- refPair.second--;
- it->second = refPair;
- onPresenceListenerMap.insert(*it);
- LOGI("OnPresenceListener: ref. count decremented");
- }
- else
- {
- env->DeleteGlobalRef(it->first);
- JniOnPresenceListener* listener = refPair.first;
- delete listener;
- onPresenceListenerMap.erase(it);
- LOGI("OnPresenceListener is removed");
- }
- isFound = true;
- break;
- }
- }
- if (!isFound)
- {
- ThrowOcException(JNI_EXCEPTION, "OnPresenceListener not found");
- }
- presenceMapLock.unlock();
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: configure
- * Signature: (IILjava/lang/String;II)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
- (JNIEnv *env, jclass clazz, jint jServiceType, jint jModeType, jstring jIpAddress, jint jPort, jint jQOS)
- {
- LOGI("OcPlatform_configure");
-
- std::string ipAddress;
- if (jIpAddress)
- {
- ipAddress = env->GetStringUTFChars(jIpAddress, NULL);
- }
- uint16_t port;
- if (jPort > 0)
- {
- port = static_cast<uint16_t>(jPort);
- }
- PlatformConfig cfg{
- JniUtils::getServiceType(env, jServiceType),
- JniUtils::getModeType(env, jModeType),
- ipAddress,
- port,
- JniUtils::getQOS(env, static_cast<int>(jQOS))
- };
-
- OCPlatform::Configure(cfg);
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: notifyAllObservers0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
- (JNIEnv *env, jclass clazz, jobject jResourceHandle)
- {
- LOGI("OcPlatform_notifyAllObservers");
- if (!jResourceHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
- }
-
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- try
- {
- OCStackResult result = OCPlatform::notifyAllObservers(jniOcResourceHandle->getOCResourceHandle());
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to notify all observers");
- return;
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: notifyAllObservers1
- * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1
- (JNIEnv *env, jclass clazz, jobject jResourceHandle, jint jQoS)
- {
- LOGI("OcPlatform_notifyAllObservers1");
-
- if (!jResourceHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
- }
-
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- try{
- OCStackResult result = OCPlatform::notifyAllObservers(
- jniOcResourceHandle->getOCResourceHandle(),
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to notify all observers");
- return;
+ }\r
+ \r
+ JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener)\r
+ {\r
+ JniOnPresenceListener *onPresenceListener = NULL;\r
+ \r
+ presenceMapLock.lock();\r
+ \r
+ for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)\r
+ {\r
+ if (env->IsSameObject(jListener, it->first))\r
+ {\r
+ auto refPair = it->second;\r
+ onPresenceListener = refPair.first;\r
+ refPair.second++;\r
+ it->second = refPair;\r
+ onPresenceListenerMap.insert(*it);\r
+ LOGD("OnPresenceListener: ref. count incremented");\r
+ break;\r
+ }\r
+ }\r
+ if (!onPresenceListener)\r
+ {\r
+ onPresenceListener = new JniOnPresenceListener(env, jListener, RemoveOnPresenceListener);\r
+ jobject jgListener = env->NewGlobalRef(jListener);\r
+ onPresenceListenerMap.insert(std::pair < jobject, std::pair < JniOnPresenceListener*,\r
+ int >> (jgListener, std::pair<JniOnPresenceListener*, int>(onPresenceListener, 1)));\r
+ LOGI("OnPresenceListener: new listener");\r
+ }\r
+ presenceMapLock.unlock();\r
+ return onPresenceListener;\r
+ }\r
+ \r
+ void RemoveOnPresenceListener(JNIEnv* env, jobject jListener)\r
+ {\r
+ presenceMapLock.lock();\r
+ bool isFound = false;\r
+ for (auto it = onPresenceListenerMap.begin(); it != onPresenceListenerMap.end(); ++it)\r
+ {\r
+ if (env->IsSameObject(jListener, it->first))\r
+ {\r
+ auto refPair = it->second;\r
+ if (refPair.second > 1)\r
+ {\r
+ refPair.second--;\r
+ it->second = refPair;\r
+ onPresenceListenerMap.insert(*it);\r
+ LOGI("OnPresenceListener: ref. count decremented");\r
+ }\r
+ else\r
+ {\r
+ env->DeleteGlobalRef(it->first);\r
+ JniOnPresenceListener* listener = refPair.first;\r
+ delete listener;\r
+ onPresenceListenerMap.erase(it);\r
+ LOGI("OnPresenceListener is removed");\r
+ }\r
+ isFound = true;\r
+ break;\r
+ }\r
+ }\r
+ if (!isFound)\r
+ {\r
+ ThrowOcException(JNI_EXCEPTION, "OnPresenceListener not found");\r
+ }\r
+ presenceMapLock.unlock();\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: configure\r
-* Signature: (IILjava/lang/String;IILjava/lang/String;)V
++* Signature: (IILjava/lang/String;II)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure\r
+ (JNIEnv *env, jclass clazz, jint jServiceType, jint jModeType, jstring jIpAddress, jint jPort,
+ jint jQOS, jstring jDbPath)
+ {\r
+ LOGI("OcPlatform_configure");\r
+ \r
+ std::string ipAddress;\r
+ std::string dbfile;
+ if (jIpAddress)\r
+ {\r
+ ipAddress = env->GetStringUTFChars(jIpAddress, NULL);\r
+ }\r
+ if (jDbPath)
+ {
+ dbfile = env->GetStringUTFChars(jDbPath, nullptr);
+ JniOcSecurity::StoreDbPath(dbfile);
+ }
+ uint16_t port;\r
+ if (jPort > 0)\r
+ {\r
+ port = static_cast<uint16_t>(jPort);\r
+ }\r
+ PlatformConfig cfg{\r
+ JniUtils::getServiceType(env, jServiceType),\r
+ JniUtils::getModeType(env, jModeType),\r
+ ipAddress,\r
+ port,\r
+ JniUtils::getQOS(env, static_cast<int>(jQOS)),
+ JniOcSecurity::getOCPersistentStorage()
+ };\r
+ \r
+ OCPlatform::Configure(cfg);\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: notifyAllObservers0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceHandle)\r
+ {\r
+ LOGI("OcPlatform_notifyAllObservers");\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::notifyAllObservers(jniOcResourceHandle->getOCResourceHandle());\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to notify all observers");\r
+ return;\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: notifyAllObservers1\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1\r
+ (JNIEnv *env, jclass clazz, jobject jResourceHandle, jint jQoS)\r
+ {\r
+ LOGI("OcPlatform_notifyAllObservers1");\r
+ \r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ try{\r
+ OCStackResult result = OCPlatform::notifyAllObservers(\r
+ jniOcResourceHandle->getOCResourceHandle(),\r
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to notify all observers");\r
+ return;\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: notifyListOfObservers2\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2\r
+ (JNIEnv *env, jclass clazz, jobject jResourceHandle, jbyteArray jObservationIdArr, jobject jResourceResponse)\r
+ {\r
+ LOGD("OcPlatform_notifyListOfObservers2");\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ if (!jObservationIdArr)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");\r
+ return;\r
+ }\r
+ if (!jResourceResponse)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ JniOcResourceResponse* jniOcResourceResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(\r
+ env, jResourceResponse);\r
+ if (!jniOcResourceResponse) return;\r
+ \r
+ int len = env->GetArrayLength(jObservationIdArr);\r
+ uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);\r
+ \r
+ ObservationIds observationIds;\r
+ for (int i = 0; i < len; ++i)\r
+ {\r
+ observationIds.push_back(bArr[i]);\r
+ }\r
+ \r
+ env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);\r
+ \r
+ try{\r
+ OCStackResult result = OCPlatform::notifyListOfObservers(\r
+ jniOcResourceHandle->getOCResourceHandle(),\r
+ observationIds,\r
+ jniOcResourceResponse->getOCResourceResponse());\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to notify all observers");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: notifyListOfObservers3\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3\r
+ (JNIEnv *env, jclass clazz, jobject jResourceHandle, jbyteArray jObservationIdArr, jobject jResourceResponse, jint jQoS)\r
+ {\r
+ LOGD("OcPlatform_notifyListOfObservers3");\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ if (!jObservationIdArr)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");\r
+ return;\r
+ }\r
+ if (!jResourceResponse)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ JniOcResourceResponse* jniOcResourceResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(\r
+ env, jResourceResponse);\r
+ if (!jniOcResourceResponse) return;\r
+ \r
+ int len = env->GetArrayLength(jObservationIdArr);\r
+ uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);\r
+ \r
+ ObservationIds observationIds;\r
+ for (int i = 0; i < len; ++i)\r
+ {\r
+ observationIds.push_back(bArr[i]);\r
+ }\r
+ \r
+ env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);\r
+ \r
+ try{\r
+ OCStackResult result = OCPlatform::notifyListOfObservers(\r
+ jniOcResourceHandle->getOCResourceHandle(),\r
+ observationIds,\r
+ jniOcResourceResponse->getOCResourceResponse(),\r
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to notify all observers");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: findResource0\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0\r
+ (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener)\r
+ {\r
+ LOGD("OcPlatform_findResource");\r
+ std::string host;\r
+ if (jHost)\r
+ {\r
+ host = env->GetStringUTFChars(jHost, NULL);\r
+ }\r
+ std::string resourceUri;\r
+ if (jResourceUri)\r
+ {\r
+ resourceUri = env->GetStringUTFChars(jResourceUri, NULL);\r
+ }\r
+ if (!jListener)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);\r
+ \r
+ FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)\r
+ {\r
+ onResFoundListener->foundResourceCallback(resource);\r
+ };\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::findResource(\r
+ host,\r
+ resourceUri,\r
+ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),\r
+ findCallback);\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Find resource has failed");\r
+ return;\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: findResource1\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1\r
+ (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener, jint jQoS)\r
+ {\r
+ LOGD("OcPlatform_findResource");\r
+ std::string host;\r
+ if (jHost)\r
+ {\r
+ host = env->GetStringUTFChars(jHost, NULL);\r
+ }\r
+ std::string resourceUri;\r
+ if (jResourceUri)\r
+ {\r
+ resourceUri = env->GetStringUTFChars(jResourceUri, NULL);\r
+ }\r
+ if (!jListener)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");\r
+ return;\r
+ }\r
+ JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);\r
+ \r
+ FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)\r
+ {\r
+ onResFoundListener->foundResourceCallback(resource);\r
+ };\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::findResource(\r
+ host,\r
+ resourceUri,\r
+ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),\r
+ findCallback,\r
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Find resource has failed");\r
+ return;\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: getDeviceInfo0\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0\r
+ (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener)\r
+ {\r
+ LOGD("OcPlatform_getDeviceInfo0");\r
+ std::string host;\r
+ if (jHost)\r
+ {\r
+ host = env->GetStringUTFChars(jHost, NULL);\r
+ }\r
+ std::string resourceUri;\r
+ if (jResourceUri)\r
+ {\r
+ resourceUri = env->GetStringUTFChars(jResourceUri, NULL);\r
+ }\r
+ if (!jListener)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");\r
+ return;\r
+ }\r
+ JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);\r
+ \r
+ FindDeviceCallback findDeviceCallback = [onDeviceInfoListener](const OCRepresentation& ocRepresentation)\r
+ {\r
+ onDeviceInfoListener->foundDeviceCallback(ocRepresentation);\r
+ };\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::getDeviceInfo(\r
+ host,\r
+ resourceUri,\r
+ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),\r
+ findDeviceCallback);\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Find device has failed");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: getDeviceInfo1\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1\r
+ (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener, jint jQoS)\r
+ {\r
+ LOGD("OcPlatform_getDeviceInfo1");\r
+ std::string host;\r
+ if (jHost)\r
+ {\r
+ host = env->GetStringUTFChars(jHost, NULL);\r
+ }\r
+ std::string resourceUri;\r
+ if (jResourceUri)\r
+ {\r
+ resourceUri = env->GetStringUTFChars(jResourceUri, NULL);\r
+ }\r
+ if (!jListener)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");\r
+ return;\r
+ }\r
+ JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);\r
+ \r
+ FindDeviceCallback findDeviceCallback = [onDeviceInfoListener](const OCRepresentation& ocRepresentation)\r
+ {\r
+ onDeviceInfoListener->foundDeviceCallback(ocRepresentation);\r
+ };\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::getDeviceInfo(\r
+ host,\r
+ resourceUri,\r
+ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),\r
+ findDeviceCallback,\r
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Find device has failed");\r
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcPlatform
- * Method: notifyListOfObservers2
- * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;)V
++* Method: getPlatformInfo0
++* Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;)V
+*/
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2
- (JNIEnv *env, jclass clazz, jobject jResourceHandle, jbyteArray jObservationIdArr, jobject jResourceResponse)
++JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo0
++(JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener)
+{
- LOGD("OcPlatform_notifyListOfObservers2");
- if (!jResourceHandle)
++ LOGD("OcPlatform_getPlatformInfo0");
++ std::string host;
++ if (jHost)
+ {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
++ host = env->GetStringUTFChars(jHost, NULL);
+ }
- if (!jObservationIdArr)
++ std::string resourceUri;
++ if (jResourceUri)
+ {
- ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
- return;
++ resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
+ }
- if (!jResourceResponse)
++ if (!jListener)
+ {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
++ ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
+ return;
+ }
++ JniOnPlatformInfoListener *onPlatformInfoListener = AddOnPlatformInfoListener(env, jListener);
+
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- JniOcResourceResponse* jniOcResourceResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(
- env, jResourceResponse);
- if (!jniOcResourceResponse) return;
-
- int len = env->GetArrayLength(jObservationIdArr);
- uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
-
- ObservationIds observationIds;
- for (int i = 0; i < len; ++i)
++ FindPlatformCallback findPlatformCallback = [onPlatformInfoListener](const OCRepresentation& ocRepresentation)
+ {
- observationIds.push_back(bArr[i]);
- }
-
- env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
++ onPlatformInfoListener->foundPlatformCallback(ocRepresentation);
++ };
+
- try{
- OCStackResult result = OCPlatform::notifyListOfObservers(
- jniOcResourceHandle->getOCResourceHandle(),
- observationIds,
- jniOcResourceResponse->getOCResourceResponse());
++ try
++ {
++ OCStackResult result = OCPlatform::getPlatformInfo(
++ host,
++ resourceUri,
++ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
++ findPlatformCallback);
+
+ if (OC_STACK_OK != result)
+ {
- ThrowOcException(result, "Failed to notify all observers");
++ ThrowOcException(result, "Find platform has failed");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcPlatform
- * Method: notifyListOfObservers3
- * Signature: (Lorg/iotivity/base/OcResourceHandle;[Ljava/lang/Byte;Lorg/iotivity/base/OcResourceResponse;I)V
++* Method: getPlatformInfo1
++* Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;I)V
+*/
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3
- (JNIEnv *env, jclass clazz, jobject jResourceHandle, jbyteArray jObservationIdArr, jobject jResourceResponse, jint jQoS)
++JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1
++(JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener, jint jQoS)
+{
- LOGD("OcPlatform_notifyListOfObservers3");
- if (!jResourceHandle)
++ LOGD("OcPlatform_getPlatformInfo1");
++ std::string host;
++ if (jHost)
+ {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
++ host = env->GetStringUTFChars(jHost, NULL);
+ }
- if (!jObservationIdArr)
++ std::string resourceUri;
++ if (jResourceUri)
+ {
- ThrowOcException(OC_STACK_INVALID_PARAM, "observationIdList cannot be null");
- return;
++ resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
+ }
- if (!jResourceResponse)
++ if (!jListener)
+ {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
++ ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
+ return;
+ }
++ JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
+
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- JniOcResourceResponse* jniOcResourceResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(
- env, jResourceResponse);
- if (!jniOcResourceResponse) return;
-
- int len = env->GetArrayLength(jObservationIdArr);
- uint8_t* bArr = (uint8_t*)env->GetByteArrayElements(jObservationIdArr, 0);
-
- ObservationIds observationIds;
- for (int i = 0; i < len; ++i)
++ FindDeviceCallback findDeviceCallback = [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
+ {
- observationIds.push_back(bArr[i]);
- }
-
- env->ReleaseByteArrayElements(jObservationIdArr, (jbyte*)bArr, 0);
++ onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
++ };
+
- try{
- OCStackResult result = OCPlatform::notifyListOfObservers(
- jniOcResourceHandle->getOCResourceHandle(),
- observationIds,
- jniOcResourceResponse->getOCResourceResponse(),
++ try
++ {
++ OCStackResult result = OCPlatform::getPlatformInfo(
++ host,
++ resourceUri,
++ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
++ findDeviceCallback,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
- ThrowOcException(result, "Failed to notify all observers");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: findResource0
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0
- (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener)
- {
- LOGD("OcPlatform_findResource");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- std::string resourceUri;
- if (jResourceUri)
- {
- resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
- return;
- }
-
- JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
-
- FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
- {
- onResFoundListener->foundResourceCallback(resource);
- };
-
- try
- {
- OCStackResult result = OCPlatform::findResource(
- host,
- resourceUri,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- findCallback);
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Find resource has failed");
- return;
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: findResource1
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1
- (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener, jint jQoS)
- {
- LOGD("OcPlatform_findResource");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- std::string resourceUri;
- if (jResourceUri)
- {
- resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onResourceFoundListener cannot be null");
- return;
- }
- JniOnResourceFoundListener *onResFoundListener = AddOnResourceFoundListener(env, jListener);
-
- FindCallback findCallback = [onResFoundListener](std::shared_ptr<OCResource> resource)
- {
- onResFoundListener->foundResourceCallback(resource);
- };
-
- try
- {
- OCStackResult result = OCPlatform::findResource(
- host,
- resourceUri,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- findCallback,
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Find resource has failed");
- return;
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: getDeviceInfo0
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0
- (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener)
- {
- LOGD("OcPlatform_getDeviceInfo0");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- std::string resourceUri;
- if (jResourceUri)
- {
- resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
- return;
- }
- JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
-
- FindDeviceCallback findDeviceCallback = [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
- {
- onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
- };
-
- try
- {
- OCStackResult result = OCPlatform::getDeviceInfo(
- host,
- resourceUri,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- findDeviceCallback);
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Find device has failed");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: getDeviceInfo1
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1
- (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener, jint jQoS)
- {
- LOGD("OcPlatform_getDeviceInfo1");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- std::string resourceUri;
- if (jResourceUri)
- {
- resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onDeviceFoundListener cannot be null");
- return;
- }
- JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
-
- FindDeviceCallback findDeviceCallback = [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
- {
- onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
- };
-
- try
- {
- OCStackResult result = OCPlatform::getDeviceInfo(
- host,
- resourceUri,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- findDeviceCallback,
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Find device has failed");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: getPlatformInfo0
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo0
- (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener)
- {
- LOGD("OcPlatform_getPlatformInfo0");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- std::string resourceUri;
- if (jResourceUri)
- {
- resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
- return;
- }
- JniOnPlatformInfoListener *onPlatformInfoListener = AddOnPlatformInfoListener(env, jListener);
-
- FindPlatformCallback findPlatformCallback = [onPlatformInfoListener](const OCRepresentation& ocRepresentation)
- {
- onPlatformInfoListener->foundPlatformCallback(ocRepresentation);
- };
-
- try
- {
- OCStackResult result = OCPlatform::getPlatformInfo(
- host,
- resourceUri,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- findPlatformCallback);
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Find platform has failed");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: getPlatformInfo1
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1
- (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceUri, jint jConnectivityType, jobject jListener, jint jQoS)
- {
- LOGD("OcPlatform_getPlatformInfo1");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- std::string resourceUri;
- if (jResourceUri)
- {
- resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPlatformFoundListener cannot be null");
- return;
- }
- JniOnDeviceInfoListener *onDeviceInfoListener = AddOnDeviceInfoListener(env, jListener);
-
- FindDeviceCallback findDeviceCallback = [onDeviceInfoListener](const OCRepresentation& ocRepresentation)
- {
- onDeviceInfoListener->foundDeviceCallback(ocRepresentation);
- };
-
- try
- {
- OCStackResult result = OCPlatform::getPlatformInfo(
- host,
- resourceUri,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- findDeviceCallback,
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Find platform has failed");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: registerResource0
- * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0
- (JNIEnv *env, jclass clazz, jobject jResource)
- {
- LOGD("OcPlatform_registerResource");
- if (!jResource)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "Resource cannot be null");
- return nullptr;
- }
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, jResource);
- if (!resource) return nullptr;
- LOGD("OcPlatform_registerResource1");
- OCResourceHandle resourceHandle;
- try
- {
- LOGD("OcPlatform_registerResource2");
- OCStackResult result = OCPlatform::registerResource(
- resourceHandle,
- resource->getOCResource());
- LOGD("OcPlatform_registerResource3");
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "register resource");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- return nullptr;
- }
- LOGD("OcPlatform_registerResource4");
- JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
- jlong handle = reinterpret_cast<jlong>(jniHandle);
- jobject jResourceHandle = env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
- LOGD("OcPlatform_registerResource5");
- if (!jResourceHandle)
- {
- LOGE("Failed to create OcResourceHandle");
- delete jniHandle;
- }
- return jResourceHandle;
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: registerResource1
- * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1
- (JNIEnv *env, jclass clazz, jstring jResourceUri, jstring jResourceTypeName, jstring jResourceInterface,
- jobject jListener, jint jResourceProperty)
- {
- LOGI("OcPlatform_registerResource1");
- std::string resourceUri;
- if (jResourceUri)
- {
- resourceUri = env->GetStringUTFChars(jResourceUri, NULL);
- }
- std::string resourceTypeName;
- if (jResourceTypeName)
- {
- resourceTypeName = env->GetStringUTFChars(jResourceTypeName, NULL);
- }
- std::string resourceInterface;
- if (jResourceInterface)
- {
- resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "entityHandler cannot be null");
- return nullptr;
- }
- JniEntityHandler* entityHandler = new JniEntityHandler(env, jListener);
- EntityHandler handleEntityCallback = [entityHandler](const std::shared_ptr<OCResourceRequest> request) ->
- OCEntityHandlerResult{
- return entityHandler->handleEntity(request);
- };
-
- OCResourceHandle resourceHandle;
- try
- {
- OCStackResult result = OCPlatform::registerResource(
- resourceHandle,
- resourceUri,
- resourceTypeName,
- resourceInterface,
- handleEntityCallback,
- static_cast<int>(jResourceProperty));
-
- if (OC_STACK_OK != result)
- {
- delete entityHandler;
- ThrowOcException(result, "register resource");
- return nullptr;
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- delete entityHandler;
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- return nullptr;
- }
-
- JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);
- jlong handle = reinterpret_cast<jlong>(jniHandle);
- jobject jResourceHandle = env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
- if (!jResourceHandle)
- {
- LOGE("Failed to create OcResourceHandle");
- delete jniHandle;
- }
-
- return jResourceHandle;
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: registerDeviceInfo0
- * 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
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0
- (JNIEnv *env,
- jclass clazz,
- jstring jDeviceName)
- {
- LOGI("OcPlatform_registerDeviceInfo");
-
- std::string deviceName;
- if (jDeviceName)
- {
- deviceName = env->GetStringUTFChars(jDeviceName, NULL);
- }
-
- OCDeviceInfo deviceInfo;
- try
- {
- DuplicateString(&deviceInfo.deviceName, deviceName);
- }
- catch (std::exception &e)
- {
- ThrowOcException(JNI_EXCEPTION, "Failed to construct device info");
- return;
- }
-
- try
- {
- OCStackResult result = OCPlatform::registerDeviceInfo(deviceInfo);
-
- delete deviceInfo.deviceName;
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to register device info");
- return;
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
++ ThrowOcException(result, "Find platform has failed");
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: registerResource0\r
+ * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0\r
+ (JNIEnv *env, jclass clazz, jobject jResource)\r
+ {\r
+ LOGD("OcPlatform_registerResource");\r
+ if (!jResource)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "Resource cannot be null");\r
+ return nullptr;\r
+ }\r
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, jResource);\r
+ if (!resource) return nullptr;\r
-\r
++ LOGD("OcPlatform_registerResource1");
+ OCResourceHandle resourceHandle;\r
+ try\r
+ {\r
++ LOGD("OcPlatform_registerResource2");
+ OCStackResult result = OCPlatform::registerResource(\r
+ resourceHandle,\r
+ resource->getOCResource());\r
++ LOGD("OcPlatform_registerResource3");
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "register resource");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ return nullptr;\r
+ }\r
-\r
++ LOGD("OcPlatform_registerResource4");
+ JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);\r
+ jlong handle = reinterpret_cast<jlong>(jniHandle);\r
+ jobject jResourceHandle = env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);\r
++ LOGD("OcPlatform_registerResource5");
+ if (!jResourceHandle)\r
+ {\r
+ LOGE("Failed to create OcResourceHandle");\r
+ delete jniHandle;\r
+ }\r
+ return jResourceHandle;\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: registerResource1\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1\r
+ (JNIEnv *env, jclass clazz, jstring jResourceUri, jstring jResourceTypeName, jstring jResourceInterface,\r
+ jobject jListener, jint jResourceProperty)\r
+ {\r
+ LOGI("OcPlatform_registerResource1");\r
+ std::string resourceUri;\r
+ if (jResourceUri)\r
+ {\r
+ resourceUri = env->GetStringUTFChars(jResourceUri, NULL);\r
+ }\r
+ std::string resourceTypeName;\r
+ if (jResourceTypeName)\r
+ {\r
+ resourceTypeName = env->GetStringUTFChars(jResourceTypeName, NULL);\r
+ }\r
+ std::string resourceInterface;\r
+ if (jResourceInterface)\r
+ {\r
+ resourceInterface = env->GetStringUTFChars(jResourceInterface, NULL);\r
+ }\r
+ if (!jListener)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "entityHandler cannot be null");\r
+ return nullptr;\r
+ }\r
+ JniEntityHandler* entityHandler = new JniEntityHandler(env, jListener);\r
+ EntityHandler handleEntityCallback = [entityHandler](const std::shared_ptr<OCResourceRequest> request) ->\r
+ OCEntityHandlerResult{\r
+ return entityHandler->handleEntity(request);\r
+ };\r
+ \r
+ OCResourceHandle resourceHandle;\r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::registerResource(\r
+ resourceHandle,\r
+ resourceUri,\r
+ resourceTypeName,\r
+ resourceInterface,\r
+ handleEntityCallback,\r
+ static_cast<int>(jResourceProperty));\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ delete entityHandler;\r
+ ThrowOcException(result, "register resource");\r
+ return nullptr;\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ delete entityHandler;\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ return nullptr;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniHandle = new JniOcResourceHandle(resourceHandle);\r
+ jlong handle = reinterpret_cast<jlong>(jniHandle);\r
+ jobject jResourceHandle = env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);\r
+ if (!jResourceHandle)\r
+ {\r
+ LOGE("Failed to create OcResourceHandle");\r
+ delete jniHandle;\r
+ }\r
+ \r
+ return jResourceHandle;\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: registerDeviceInfo0\r
+ * 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\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0\r
+ (JNIEnv *env,\r
+ jclass clazz,\r
+ jstring jDeviceName)\r
+ {\r
+ LOGI("OcPlatform_registerDeviceInfo");\r
+ \r
+ std::string deviceName;\r
+ if (jDeviceName)\r
+ {\r
+ deviceName = env->GetStringUTFChars(jDeviceName, NULL);\r
+ }\r
+ \r
+ OCDeviceInfo deviceInfo;\r
+ try\r
+ {\r
+ DuplicateString(&deviceInfo.deviceName, deviceName);\r
+ }\r
+ catch (std::exception &e)\r
+ {\r
+ ThrowOcException(JNI_EXCEPTION, "Failed to construct device info");\r
+ return;\r
+ }\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::registerDeviceInfo(deviceInfo);\r
+ \r
+ delete deviceInfo.deviceName;\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to register device info");\r
+ return;\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+* Method: registerPlatformInfo0
+* 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
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0
+(JNIEnv *env,
+jclass clazz,
+jstring jPlatformID,
+jstring jManufacturerName,
+jstring jManufacturerUrl,
+jstring jModelNumber,
+jstring jDateOfManufacture,
+jstring jPlatformVersion,
+jstring jOperatingSystemVersion,
+jstring jHardwareVersion,
+jstring jFirmwareVersion,
+jstring jSupportUrl,
+jstring jSystemTime)
+{
+ LOGI("OcPlatform_registerPlatformInfo");
+
+
+ std::string platformID;
+ std::string manufacturerName;
+ std::string manufacturerUrl;
+ std::string modelNumber;
+ std::string dateOfManufacture;
+ std::string platformVersion;
+ std::string operatingSystemVersion;
+ std::string hardwareVersion;
+ std::string firmwareVersion;
+ std::string supportUrl;
+ std::string systemTime;
+
+ if (jPlatformID)
+ {
+ platformID = env->GetStringUTFChars(jPlatformID, NULL);
+ }
+ if (jManufacturerName)
+ {
+ manufacturerName = env->GetStringUTFChars(jManufacturerName, NULL);
+ }
+ if (jManufacturerUrl)
+ {
+ manufacturerUrl = env->GetStringUTFChars(jManufacturerUrl, NULL);
+ }
+ if (jModelNumber)
+ {
- modelNumber = env->GetStringUTFChars(jModelNumber, NULL);
- }
- if (jDateOfManufacture)
- {
- dateOfManufacture = env->GetStringUTFChars(jDateOfManufacture, NULL);
- }
- if (jPlatformVersion)
- {
- platformVersion = env->GetStringUTFChars(jPlatformVersion, NULL);
- }
- if (jOperatingSystemVersion)
- {
- operatingSystemVersion = env->GetStringUTFChars(jOperatingSystemVersion, NULL);
- }
- if (jHardwareVersion)
- {
- hardwareVersion = env->GetStringUTFChars(jHardwareVersion, NULL);
- }
- if (jFirmwareVersion)
- {
- firmwareVersion = env->GetStringUTFChars(jFirmwareVersion, NULL);
- }
- if (jSupportUrl)
- {
- supportUrl = env->GetStringUTFChars(jSupportUrl, NULL);
- }
- if (jSystemTime)
- {
- systemTime = env->GetStringUTFChars(jSystemTime, NULL);
- }
-
- OCPlatformInfo platformInfo;
- try
- {
- DuplicateString(&platformInfo.platformID, platformID);
- DuplicateString(&platformInfo.manufacturerName, manufacturerName);
- DuplicateString(&platformInfo.manufacturerUrl, manufacturerUrl);
- DuplicateString(&platformInfo.modelNumber, modelNumber);
- DuplicateString(&platformInfo.dateOfManufacture, dateOfManufacture);
- DuplicateString(&platformInfo.platformVersion, platformVersion);
- DuplicateString(&platformInfo.operatingSystemVersion, operatingSystemVersion);
- DuplicateString(&platformInfo.hardwareVersion, hardwareVersion);
- DuplicateString(&platformInfo.firmwareVersion, firmwareVersion);
- DuplicateString(&platformInfo.supportUrl, supportUrl);
- DuplicateString(&platformInfo.systemTime, systemTime);
- }
- catch (std::exception &e)
- {
- ThrowOcException(JNI_EXCEPTION, "Failed to construct platform info");
- return;
- }
-
- // __android_log_print(ANDROID_LOG_INFO, "Rahul", "platformID = %s", platformID);
- try
- {
- OCStackResult result = OCPlatform::registerPlatformInfo(platformInfo);
-
- delete platformInfo.platformID;
- delete platformInfo.manufacturerName;
- delete platformInfo.manufacturerUrl;
- delete platformInfo.modelNumber;
- delete platformInfo.dateOfManufacture;
- delete platformInfo.platformVersion;
- delete platformInfo.operatingSystemVersion;
- delete platformInfo.hardwareVersion;
- delete platformInfo.firmwareVersion;
- delete platformInfo.supportUrl;
- delete platformInfo.systemTime;
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to register platform info");
- return;
- }
- }
- catch (OCException& e)
- {
- LOGE("Error is due to %s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
-
-
-
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: unregisterResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0
- (JNIEnv *env, jclass clazz, jobject jResourceHandle)
- {
- LOGI("OcPlatform_unregisterResource");
- if (!jResourceHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
- }
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- try
- {
- OCResourceHandle resHandle = jniOcResourceHandle->getOCResourceHandle();
- OCStackResult result = OCPlatform::unregisterResource(resHandle);
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to unregister resource");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: bindResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0
- (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)
- {
- LOGI("OcPlatform_bindResource");
- if (!jResourceCollectionHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
- return;
- }
- if (!jResourceHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
- }
- JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceCollectionHandle);
- if (!jniOcResourceCollectionHandle) return;
-
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- try
- {
- OCStackResult result = OCPlatform::bindResource(
- jniOcResourceCollectionHandle->getOCResourceHandle(),
- jniOcResourceHandle->getOCResourceHandle()
- );
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to bind resource");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: bindResources0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0
- (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobjectArray jResourceHandleArray)
- {
- LOGI("OcPlatform_bindResources");
-
- if (!jResourceCollectionHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
- return;
- }
- if (!jResourceHandleArray)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
- return;
- }
-
- JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceCollectionHandle);
- if (!jniOcResourceCollectionHandle) return;
-
- std::vector<OCResourceHandle> resourceHandleList;
- int len = env->GetArrayLength(jResourceHandleArray);
- for (int i = 0; i < len; ++i)
- {
- jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
- if (!jResourceHandle)
- {
- ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
- return;
- }
-
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- resourceHandleList.push_back(
- jniOcResourceHandle->getOCResourceHandle());
- }
-
- try
- {
- OCStackResult result = OCPlatform::bindResources(
- jniOcResourceCollectionHandle->getOCResourceHandle(),
- resourceHandleList
- );
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to bind resources");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: unbindResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0
- (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)
- {
- LOGI("OcPlatform_unbindResource");
- if (!jResourceCollectionHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
- return;
- }
- if (!jResourceHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
- }
-
- JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceCollectionHandle);
- if (!jniOcResourceCollectionHandle) return;
-
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- try
- {
- OCStackResult result = OCPlatform::unbindResource(
- jniOcResourceCollectionHandle->getOCResourceHandle(),
- jniOcResourceHandle->getOCResourceHandle()
- );
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to unbind resource");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: unbindResources0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0
- (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobjectArray jResourceHandleArray)
- {
- LOGI("OcPlatform_unbindResources");
- if (!jResourceCollectionHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");
- return;
- }
- if (!jResourceHandleArray)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");
- return;
- }
-
- JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceCollectionHandle);
- if (!jniOcResourceCollectionHandle) return;
-
- std::vector<OCResourceHandle> resourceHandleList;
- int len = env->GetArrayLength(jResourceHandleArray);
- for (int i = 0; i < len; ++i)
- {
- jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);
- if (!jResourceHandle)
- {
- ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");
- return;
- }
-
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- resourceHandleList.push_back(
- jniOcResourceHandle->getOCResourceHandle());
- }
-
- try
- {
- OCStackResult result = OCPlatform::unbindResources(
- jniOcResourceCollectionHandle->getOCResourceHandle(),
- resourceHandleList
- );
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "Failed to unbind resources");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: bindTypeToResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0
- (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceTypeName)
- {
- LOGI("OcPlatform_bindTypeToResource");
- if (!jResourceHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
- }
- std::string typeName;
- if (jResourceTypeName)
- {
- typeName = env->GetStringUTFChars(jResourceTypeName, NULL);
- }
-
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- try
- {
- OCStackResult result = OCPlatform::bindTypeToResource(
- jniOcResourceHandle->getOCResourceHandle(),
- typeName
- );
-
- if (OC_STACK_OK != result)
++ modelNumber = env->GetStringUTFChars(jModelNumber, NULL);
++ }
++ if (jDateOfManufacture)
+ {
- ThrowOcException(result, "Failed to bind type to resource");
++ dateOfManufacture = env->GetStringUTFChars(jDateOfManufacture, NULL);
+ }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: bindInterfaceToResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0
- (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceInterfaceName)
- {
- LOGI("OcPlatform_bindInterfaceToResource");
- if (!jResourceHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");
- return;
- }
- std::string interfaceName;
- if (jResourceInterfaceName)
- {
- interfaceName = env->GetStringUTFChars(jResourceInterfaceName, NULL);
- }
-
- JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(
- env, jResourceHandle);
- if (!jniOcResourceHandle) return;
-
- try
- {
- OCStackResult result = OCPlatform::bindInterfaceToResource(
- jniOcResourceHandle->getOCResourceHandle(),
- interfaceName
- );
-
- if (OC_STACK_OK != result)
++ if (jPlatformVersion)
+ {
- ThrowOcException(result, "Failed to bind interface to resource");
++ platformVersion = env->GetStringUTFChars(jPlatformVersion, NULL);
+ }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: startPresence0
- * Signature: (I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0
- (JNIEnv *env, jclass clazz, jint ttl)
- {
- LOGI("OcPlatform_startPresence");
-
- try
- {
- OCStackResult result = OCPlatform::startPresence((unsigned int)ttl);
-
- if (OC_STACK_OK != result)
++ if (jOperatingSystemVersion)
+ {
- ThrowOcException(result, "Failed to start presence");
++ operatingSystemVersion = env->GetStringUTFChars(jOperatingSystemVersion, NULL);
+ }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: stopPresence0
- * Signature: ()V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0
- (JNIEnv *env, jclass clazz)
- {
- LOGI("OcPlatform_stopPresence");
-
- try
- {
- OCStackResult result = OCPlatform::stopPresence();
-
- if (OC_STACK_OK != result)
++ if (jHardwareVersion)
+ {
- ThrowOcException(result, "Failed to stop presence");
++ hardwareVersion = env->GetStringUTFChars(jHardwareVersion, NULL);
+ }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: subscribePresence0
- * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0
- (JNIEnv *env, jclass clazz, jstring jHost, jint jConnectivityType, jobject jListener)
- {
- LOGD("OcPlatform_subscribePresence");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
- return nullptr;
- }
-
- JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
-
- SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result, const unsigned int nonce,
- const std::string& hostAddress)
- {
- onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
- };
-
- OCPlatform::OCPresenceHandle presenceHandle;
- try
- {
- OCStackResult result = OCPlatform::subscribePresence(
- presenceHandle,
- host,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- subscribeCallback);
-
- if (OC_STACK_OK != result)
++ if (jFirmwareVersion)
+ {
- ThrowOcException(result, "subscribe presence has failed");
++ firmwareVersion = env->GetStringUTFChars(jFirmwareVersion, NULL);
+ }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- return nullptr;
- }
-
- JniOcPresenceHandle* jniPresenceHandle = new JniOcPresenceHandle(onPresenceListener, presenceHandle);
- jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
- jobject jPresenceHandle = env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
- if (!jPresenceHandle)
- {
- LOGE("Failed to create OcPresenceHandle");
- delete jniPresenceHandle;
- }
- return jPresenceHandle;
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: subscribePresence1
- * Signature: (Ljava/lang/String;Ljava/lang/String;I
- Lorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1
- (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceType, jint jConnectivityType, jobject jListener)
- {
- LOGD("OcPlatform_subscribePresence1");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- std::string resourceType;
- if (jResourceType)
- {
- resourceType = env->GetStringUTFChars(jResourceType, NULL);
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");
- return nullptr;
- }
-
- JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);
-
- SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result,
- const unsigned int nonce, const std::string& hostAddress)
- {
- onPresenceListener->onPresenceCallback(result, nonce, hostAddress);
- };
-
- OCPlatform::OCPresenceHandle presenceHandle;
- try
- {
- OCStackResult result = OCPlatform::subscribePresence(
- presenceHandle,
- host,
- resourceType,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- subscribeCallback);
-
- if (OC_STACK_OK != result)
++ if (jSupportUrl)
+ {
- ThrowOcException(result, "subscribe presence has failed");
++ supportUrl = env->GetStringUTFChars(jSupportUrl, NULL);
++ }
++ if (jSystemTime)
++ {
++ systemTime = env->GetStringUTFChars(jSystemTime, NULL);
+ }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- return nullptr;
- }
-
- JniOcPresenceHandle* jniPresenceHandle = new JniOcPresenceHandle(onPresenceListener, presenceHandle);
- jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);
- jobject jPresenceHandle = env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);
- if (!jPresenceHandle)
- {
- LOGE("Failed to create OcPresenceHandle");
- delete jniPresenceHandle;
- }
- return jPresenceHandle;
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: unsubscribePresence0
- * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0
- (JNIEnv *env, jclass clazz, jobject jPresenceHandle)
- {
- LOGD("OcPlatform_unsubscribePresence");
- if (!jPresenceHandle)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "presenceHandle cannot be null");
- return;
- }
- JniOcPresenceHandle* jniPresenceHandle = JniOcPresenceHandle::getJniOcPresenceHandlePtr(env, jPresenceHandle);
- if (!jniPresenceHandle) return;
-
- OCPresenceHandle presenceHandle = jniPresenceHandle->getOCPresenceHandle();
-
- try
- {
- OCStackResult result = OCPlatform::unsubscribePresence(presenceHandle);
+
- if (OC_STACK_OK != result)
++ OCPlatformInfo platformInfo;
++ try
+ {
- ThrowOcException(result, "unsubscribe presence has failed");
- return;
++ DuplicateString(&platformInfo.platformID, platformID);
++ DuplicateString(&platformInfo.manufacturerName, manufacturerName);
++ DuplicateString(&platformInfo.manufacturerUrl, manufacturerUrl);
++ DuplicateString(&platformInfo.modelNumber, modelNumber);
++ DuplicateString(&platformInfo.dateOfManufacture, dateOfManufacture);
++ DuplicateString(&platformInfo.platformVersion, platformVersion);
++ DuplicateString(&platformInfo.operatingSystemVersion, operatingSystemVersion);
++ DuplicateString(&platformInfo.hardwareVersion, hardwareVersion);
++ DuplicateString(&platformInfo.firmwareVersion, firmwareVersion);
++ DuplicateString(&platformInfo.supportUrl, supportUrl);
++ DuplicateString(&platformInfo.systemTime, systemTime);
+ }
- jweak jwOnPresenceListener = jniPresenceHandle->getJniOnPresenceListener()->getJWListener();
- if (jwOnPresenceListener)
++ catch (std::exception &e)
+ {
- RemoveOnPresenceListener(env, jwOnPresenceListener);
++ ThrowOcException(JNI_EXCEPTION, "Failed to construct platform info");
++ return;
+ }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
- }
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: constructResourceObject0
- * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)
- Lorg/iotivity/base/OcResource;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0
- (JNIEnv *env, jclass clazz, jstring jHost, jstring jUri, jint jConnectivityType,
- jboolean jIsObservable, jobjectArray jResourceTypeArray, jobjectArray jInterfaceArray)
- {
- LOGD("OcPlatform_constructResourceObject");
- std::string host;
- if (jHost)
- {
- host = env->GetStringUTFChars(jHost, NULL);
- }
- std::string uri;
- if (jUri)
- {
- uri = env->GetStringUTFChars(jUri, NULL);
- }
- if (!jResourceTypeArray)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceTypeList cannot be null");
- return nullptr;
- }
- if (!jInterfaceArray)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "interfaceList cannot be null");
- return nullptr;
- }
+
- std::vector<std::string> resourceTypes;
- JniUtils::convertJavaStrArrToStrVector(env, jResourceTypeArray, resourceTypes);
++ // __android_log_print(ANDROID_LOG_INFO, "Rahul", "platformID = %s", platformID);
++ try
++ {
++ OCStackResult result = OCPlatform::registerPlatformInfo(platformInfo);
+
- std::vector<std::string> interfaces;
- JniUtils::convertJavaStrArrToStrVector(env, jInterfaceArray, interfaces);
++ delete platformInfo.platformID;
++ delete platformInfo.manufacturerName;
++ delete platformInfo.manufacturerUrl;
++ delete platformInfo.modelNumber;
++ delete platformInfo.dateOfManufacture;
++ delete platformInfo.platformVersion;
++ delete platformInfo.operatingSystemVersion;
++ delete platformInfo.hardwareVersion;
++ delete platformInfo.firmwareVersion;
++ delete platformInfo.supportUrl;
++ delete platformInfo.systemTime;
+
- std::shared_ptr<OCResource> resource = OCPlatform::constructResourceObject(
- host,
- uri,
- JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),
- static_cast<bool>(jIsObservable),
- resourceTypes,
- interfaces);
++ if (OC_STACK_OK != result)
++ {
++ ThrowOcException(result, "Failed to register platform info");
++ return;
++ }
++ }
++ catch (OCException& e)
++ {
++ LOGE("Error is due to %s", e.reason().c_str());
++ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
++ }
+
- if (!resource)
- {
- ThrowOcException(OC_STACK_ERROR, "Failed to create OCResource");
- return nullptr;
- }
+
- JniOcResource *jniOcResource = new JniOcResource(resource);
- jlong handle = reinterpret_cast<jlong>(jniOcResource);
+
- jobject jResource = env->NewObject(g_cls_OcResource, g_mid_OcResource_ctor);
- if (!jResource)
- {
- delete jniOcResource;
- return nullptr;
- }
- SetHandle<JniOcResource>(env, jResource, jniOcResource);
- if (env->ExceptionCheck())
- {
- delete jniOcResource;
- return nullptr;
- }
- return jResource;
+}
+
+/*
+* Class: org_iotivity_base_OcPlatform
- * Method: sendResponse0
- * Signature: (Lorg/iotivity/base/OcResourceResponse;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0
- (JNIEnv *env, jclass clazz, jobject jResourceResponse)
- {
- LOGD("OcPlatform_sendResponse");
- if (!jResourceResponse)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");
- return;
- }
-
- JniOcResourceResponse *jniResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(
- env, jResourceResponse);
- if (!jniResponse) return;
-
- try
- {
- OCStackResult result = OCPlatform::sendResponse(jniResponse->getOCResourceResponse());
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "failed to send response");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(OC_STACK_ERROR, e.reason().c_str());
- }
+ * Method: unregisterResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceHandle)\r
+ {\r
+ LOGI("OcPlatform_unregisterResource");\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ try\r
+ {\r
+ OCResourceHandle resHandle = jniOcResourceHandle->getOCResourceHandle();\r
+ OCStackResult result = OCPlatform::unregisterResource(resHandle);\r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to unregister resource");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: bindResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)\r
+ {\r
+ LOGI("OcPlatform_bindResource");\r
+ if (!jResourceCollectionHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");\r
+ return;\r
+ }\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceCollectionHandle);\r
+ if (!jniOcResourceCollectionHandle) return;\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::bindResource(\r
+ jniOcResourceCollectionHandle->getOCResourceHandle(),\r
+ jniOcResourceHandle->getOCResourceHandle()\r
+ );\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to bind resource");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: bindResources0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobjectArray jResourceHandleArray)\r
+ {\r
+ LOGI("OcPlatform_bindResources");\r
+ \r
+ if (!jResourceCollectionHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");\r
+ return;\r
+ }\r
+ if (!jResourceHandleArray)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceCollectionHandle);\r
+ if (!jniOcResourceCollectionHandle) return;\r
+ \r
+ std::vector<OCResourceHandle> resourceHandleList;\r
+ int len = env->GetArrayLength(jResourceHandleArray);\r
+ for (int i = 0; i < len; ++i)\r
+ {\r
+ jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ resourceHandleList.push_back(\r
+ jniOcResourceHandle->getOCResourceHandle());\r
+ }\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::bindResources(\r
+ jniOcResourceCollectionHandle->getOCResourceHandle(),\r
+ resourceHandleList\r
+ );\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to bind resources");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: unbindResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobject jResourceHandle)\r
+ {\r
+ LOGI("OcPlatform_unbindResource");\r
+ if (!jResourceCollectionHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");\r
+ return;\r
+ }\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceCollectionHandle);\r
+ if (!jniOcResourceCollectionHandle) return;\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::unbindResource(\r
+ jniOcResourceCollectionHandle->getOCResourceHandle(),\r
+ jniOcResourceHandle->getOCResourceHandle()\r
+ );\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to unbind resource");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: unbindResources0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceCollectionHandle, jobjectArray jResourceHandleArray)\r
+ {\r
+ LOGI("OcPlatform_unbindResources");\r
+ if (!jResourceCollectionHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceCollectionHandle cannot be null");\r
+ return;\r
+ }\r
+ if (!jResourceHandleArray)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandleList cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceCollectionHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceCollectionHandle);\r
+ if (!jniOcResourceCollectionHandle) return;\r
+ \r
+ std::vector<OCResourceHandle> resourceHandleList;\r
+ int len = env->GetArrayLength(jResourceHandleArray);\r
+ for (int i = 0; i < len; ++i)\r
+ {\r
+ jobject jResourceHandle = env->GetObjectArrayElement(jResourceHandleArray, i);\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(JNI_EXCEPTION, "resource handle cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ resourceHandleList.push_back(\r
+ jniOcResourceHandle->getOCResourceHandle());\r
+ }\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::unbindResources(\r
+ jniOcResourceCollectionHandle->getOCResourceHandle(),\r
+ resourceHandleList\r
+ );\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to unbind resources");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: bindTypeToResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceTypeName)\r
+ {\r
+ LOGI("OcPlatform_bindTypeToResource");\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ std::string typeName;\r
+ if (jResourceTypeName)\r
+ {\r
+ typeName = env->GetStringUTFChars(jResourceTypeName, NULL);\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::bindTypeToResource(\r
+ jniOcResourceHandle->getOCResourceHandle(),\r
+ typeName\r
+ );\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to bind type to resource");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: bindInterfaceToResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceHandle, jstring jResourceInterfaceName)\r
+ {\r
+ LOGI("OcPlatform_bindInterfaceToResource");\r
+ if (!jResourceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceHandle cannot be null");\r
+ return;\r
+ }\r
+ std::string interfaceName;\r
+ if (jResourceInterfaceName)\r
+ {\r
+ interfaceName = env->GetStringUTFChars(jResourceInterfaceName, NULL);\r
+ }\r
+ \r
+ JniOcResourceHandle* jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(\r
+ env, jResourceHandle);\r
+ if (!jniOcResourceHandle) return;\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::bindInterfaceToResource(\r
+ jniOcResourceHandle->getOCResourceHandle(),\r
+ interfaceName\r
+ );\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to bind interface to resource");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: startPresence0\r
+ * Signature: (I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0\r
+ (JNIEnv *env, jclass clazz, jint ttl)\r
+ {\r
+ LOGI("OcPlatform_startPresence");\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::startPresence((unsigned int)ttl);\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to start presence");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: stopPresence0\r
+ * Signature: ()V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0\r
+ (JNIEnv *env, jclass clazz)\r
+ {\r
+ LOGI("OcPlatform_stopPresence");\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::stopPresence();\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "Failed to stop presence");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: subscribePresence0\r
+ * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0\r
+ (JNIEnv *env, jclass clazz, jstring jHost, jint jConnectivityType, jobject jListener)\r
+ {\r
+ LOGD("OcPlatform_subscribePresence");\r
+ std::string host;\r
+ if (jHost)\r
+ {\r
+ host = env->GetStringUTFChars(jHost, NULL);\r
+ }\r
+ if (!jListener)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");\r
+ return nullptr;\r
+ }\r
+ \r
+ JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);\r
+ \r
+ SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result, const unsigned int nonce,\r
+ const std::string& hostAddress)\r
+ {\r
+ onPresenceListener->onPresenceCallback(result, nonce, hostAddress);\r
+ };\r
+ \r
+ OCPlatform::OCPresenceHandle presenceHandle;\r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::subscribePresence(\r
+ presenceHandle,\r
+ host,\r
+ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),\r
+ subscribeCallback);\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "subscribe presence has failed");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ return nullptr;\r
+ }\r
+ \r
+ JniOcPresenceHandle* jniPresenceHandle = new JniOcPresenceHandle(onPresenceListener, presenceHandle);\r
+ jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);\r
+ jobject jPresenceHandle = env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);\r
+ if (!jPresenceHandle)\r
+ {\r
+ LOGE("Failed to create OcPresenceHandle");\r
+ delete jniPresenceHandle;\r
+ }\r
-\r
+ return jPresenceHandle;\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: subscribePresence1\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;I\r
+ Lorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1\r
+ (JNIEnv *env, jclass clazz, jstring jHost, jstring jResourceType, jint jConnectivityType, jobject jListener)\r
+ {\r
+ LOGD("OcPlatform_subscribePresence1");\r
+ std::string host;\r
+ if (jHost)\r
+ {\r
+ host = env->GetStringUTFChars(jHost, NULL);\r
+ }\r
+ std::string resourceType;\r
+ if (jResourceType)\r
+ {\r
+ resourceType = env->GetStringUTFChars(jResourceType, NULL);\r
+ }\r
+ if (!jListener)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPresenceListener cannot be null");\r
+ return nullptr;\r
+ }\r
+ \r
+ JniOnPresenceListener *onPresenceListener = AddOnPresenceListener(env, jListener);\r
+ \r
+ SubscribeCallback subscribeCallback = [onPresenceListener](OCStackResult result,\r
+ const unsigned int nonce, const std::string& hostAddress)\r
+ {\r
+ onPresenceListener->onPresenceCallback(result, nonce, hostAddress);\r
+ };\r
+ \r
+ OCPlatform::OCPresenceHandle presenceHandle;\r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::subscribePresence(\r
+ presenceHandle,\r
+ host,\r
+ resourceType,\r
+ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),\r
+ subscribeCallback);\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "subscribe presence has failed");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ return nullptr;\r
+ }\r
+ \r
+ JniOcPresenceHandle* jniPresenceHandle = new JniOcPresenceHandle(onPresenceListener, presenceHandle);\r
+ jlong jhandle = reinterpret_cast<jlong>(jniPresenceHandle);\r
+ jobject jPresenceHandle = env->NewObject(g_cls_OcPresenceHandle, g_mid_OcPresenceHandle_N_ctor, jhandle);\r
+ if (!jPresenceHandle)\r
+ {\r
+ LOGE("Failed to create OcPresenceHandle");\r
+ delete jniPresenceHandle;\r
+ }\r
+ return jPresenceHandle;\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: unsubscribePresence0\r
+ * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0\r
+ (JNIEnv *env, jclass clazz, jobject jPresenceHandle)\r
+ {\r
+ LOGD("OcPlatform_unsubscribePresence");\r
+ if (!jPresenceHandle)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "presenceHandle cannot be null");\r
+ return;\r
+ }\r
+ JniOcPresenceHandle* jniPresenceHandle = JniOcPresenceHandle::getJniOcPresenceHandlePtr(env, jPresenceHandle);\r
+ if (!jniPresenceHandle) return;\r
+ \r
+ OCPresenceHandle presenceHandle = jniPresenceHandle->getOCPresenceHandle();\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::unsubscribePresence(presenceHandle);\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "unsubscribe presence has failed");\r
+ return;\r
+ }\r
+ jweak jwOnPresenceListener = jniPresenceHandle->getJniOnPresenceListener()->getJWListener();\r
+ if (jwOnPresenceListener)\r
+ {\r
+ RemoveOnPresenceListener(env, jwOnPresenceListener);\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: constructResourceObject0\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)\r
+ Lorg/iotivity/base/OcResource;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0\r
+ (JNIEnv *env, jclass clazz, jstring jHost, jstring jUri, jint jConnectivityType,\r
+ jboolean jIsObservable, jobjectArray jResourceTypeArray, jobjectArray jInterfaceArray)\r
+ {\r
+ LOGD("OcPlatform_constructResourceObject");\r
+ std::string host;\r
+ if (jHost)\r
+ {\r
+ host = env->GetStringUTFChars(jHost, NULL);\r
+ }\r
+ std::string uri;\r
+ if (jUri)\r
+ {\r
+ uri = env->GetStringUTFChars(jUri, NULL);\r
+ }\r
+ if (!jResourceTypeArray)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceTypeList cannot be null");\r
+ return nullptr;\r
+ }\r
+ if (!jInterfaceArray)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "interfaceList cannot be null");\r
+ return nullptr;\r
+ }\r
+ \r
+ std::vector<std::string> resourceTypes;\r
+ JniUtils::convertJavaStrArrToStrVector(env, jResourceTypeArray, resourceTypes);\r
+ \r
+ std::vector<std::string> interfaces;\r
+ JniUtils::convertJavaStrArrToStrVector(env, jInterfaceArray, interfaces);\r
+ \r
+ std::shared_ptr<OCResource> resource = OCPlatform::constructResourceObject(\r
+ host,\r
+ uri,\r
+ JniUtils::getConnectivityType(env, static_cast<int>(jConnectivityType)),\r
+ static_cast<bool>(jIsObservable),\r
+ resourceTypes,\r
+ interfaces);\r
+ \r
+ if (!resource)\r
+ {\r
+ ThrowOcException(OC_STACK_ERROR, "Failed to create OCResource");\r
+ return nullptr;\r
+ }\r
+ \r
+ JniOcResource *jniOcResource = new JniOcResource(resource);\r
+ jlong handle = reinterpret_cast<jlong>(jniOcResource);\r
+ \r
+ jobject jResource = env->NewObject(g_cls_OcResource, g_mid_OcResource_ctor);\r
+ if (!jResource)\r
+ {\r
+ delete jniOcResource;\r
+ return nullptr;\r
+ }\r
+ SetHandle<JniOcResource>(env, jResource, jniOcResource);\r
+ if (env->ExceptionCheck())\r
+ {\r
+ delete jniOcResource;\r
+ return nullptr;\r
+ }\r
+ return jResource;\r
+ }\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: sendResponse0\r
+ * Signature: (Lorg/iotivity/base/OcResourceResponse;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0\r
+ (JNIEnv *env, jclass clazz, jobject jResourceResponse)\r
+ {\r
+ LOGD("OcPlatform_sendResponse");\r
+ if (!jResourceResponse)\r
+ {\r
+ ThrowOcException(OC_STACK_INVALID_PARAM, "resourceResponse cannot be null");\r
+ return;\r
+ }\r
+ \r
+ JniOcResourceResponse *jniResponse = JniOcResourceResponse::getJniOcResourceResponsePtr(\r
+ env, jResourceResponse);\r
+ if (!jniResponse) return;\r
+ \r
+ try\r
+ {\r
+ OCStackResult result = OCPlatform::sendResponse(jniResponse->getOCResourceResponse());\r
+ \r
+ if (OC_STACK_OK != result)\r
+ {\r
+ ThrowOcException(result, "failed to send response");\r
+ }\r
+ }\r
+ catch (OCException& e)\r
+ {\r
+ LOGE("%s", e.reason().c_str());\r
+ ThrowOcException(OC_STACK_ERROR, e.reason().c_str());\r
+ }\r
}
- /*
- * //******************************************************************
- * //
- * // Copyright 2015 Intel Corporation.
- * //
- * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- * //
- * // 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 "JniOcStack.h"
- #include "JniOnResourceFoundListener.h"
- #include "JniOnDeviceInfoListener.h"
+ /*\r
+ * //******************************************************************\r
+ * //\r
+ * // Copyright 2015 Intel Corporation.\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 "JniOcStack.h"\r
+ #include "JniOnResourceFoundListener.h"\r
+ #include "JniOnDeviceInfoListener.h"\r
+#include "JniOnPlatformInfoListener.h"
- #include "JniOnPresenceListener.h"
- #include <mutex>
-
- #ifndef _Included_org_iotivity_base_OcPlatform
- #define _Included_org_iotivity_base_OcPlatform
-
- using namespace OC;
-
- JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener);
- void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener);
-
- JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener);
- void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener);
-
+ #include "JniOnPresenceListener.h"\r
+ #include <mutex>\r
+ \r
+ #ifndef _Included_org_iotivity_base_OcPlatform\r
+ #define _Included_org_iotivity_base_OcPlatform\r
+ \r
+ using namespace OC;\r
+ \r
+ JniOnResourceFoundListener* AddOnResourceFoundListener(JNIEnv* env, jobject jListener);\r
+ void RemoveOnResourceFoundListener(JNIEnv* env, jobject jListener);\r
+ \r
+ JniOnDeviceInfoListener* AddOnDeviceInfoListener(JNIEnv* env, jobject jListener);\r
+ void RemoveOnDeviceInfoListener(JNIEnv* env, jobject jListener);\r
+ \r
+JniOnPlatformInfoListener* AddOnPlatformInfoListener(JNIEnv* env, jobject jListener);
+void RemoveOnPlatformInfoListener(JNIEnv* env, jobject jListener);
+
- JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener);
- void RemoveOnPresenceListener(JNIEnv* env, jobject jListener);
-
- std::map<jobject, std::pair<JniOnResourceFoundListener*, int>> onResourceFoundListenerMap;
- std::map<jobject, std::pair<JniOnDeviceInfoListener*, int>> onDeviceInfoListenerMap;
+ JniOnPresenceListener* AddOnPresenceListener(JNIEnv* env, jobject jListener);\r
+ void RemoveOnPresenceListener(JNIEnv* env, jobject jListener);\r
+ \r
+ std::map<jobject, std::pair<JniOnResourceFoundListener*, int>> onResourceFoundListenerMap;\r
+ std::map<jobject, std::pair<JniOnDeviceInfoListener*, int>> onDeviceInfoListenerMap;\r
+std::map<jobject, std::pair<JniOnPlatformInfoListener*, int>> onPlatformInfoListenerMap;
- std::map<jobject, std::pair<JniOnPresenceListener*, int>> onPresenceListenerMap;
-
- std::mutex resourceFoundMapLock;
- std::mutex deviceInfoMapLock;
+ std::map<jobject, std::pair<JniOnPresenceListener*, int>> onPresenceListenerMap;\r
+ \r
+ std::mutex resourceFoundMapLock;\r
+ std::mutex deviceInfoMapLock;\r
+std::mutex platformInfoMapLock;
- std::mutex presenceMapLock;
-
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: configure
- * Signature: (IILjava/lang/String;II)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure
- (JNIEnv *, jclass, jint, jint, jstring, jint, jint);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: notifyAllObservers0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0
- (JNIEnv *, jclass, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: notifyAllObservers1
- * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1
- (JNIEnv *, jclass, jobject, jint);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: notifyListOfObservers2
- * Signature: (Lorg/iotivity/base/OcResourceHandle;[BLorg/iotivity/base/OcResourceResponse;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2
- (JNIEnv *, jclass, jobject, jbyteArray, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: notifyListOfObservers3
- * Signature: (Lorg/iotivity/base/OcResourceHandle;[BLorg/iotivity/base/OcResourceResponse;I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3
- (JNIEnv *, jclass, jobject, jbyteArray, jobject, jint);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: findResource0
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0
- (JNIEnv *, jclass, jstring, jstring, jint, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: findResource1
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1
- (JNIEnv *, jclass, jstring, jstring, jint, jobject, jint);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: getDeviceInfo0
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0
- (JNIEnv *, jclass, jstring, jstring, jint, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: getDeviceInfo1
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1
+ std::mutex presenceMapLock;\r
+ \r
+ #ifdef __cplusplus\r
+ extern "C" {\r
+ #endif\r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: configure\r
+ * Signature: (IILjava/lang/String;II)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_configure\r
+ (JNIEnv *, jclass, jint, jint, jstring, jint, jint, jstring);
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: notifyAllObservers0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers0\r
+ (JNIEnv *, jclass, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: notifyAllObservers1\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyAllObservers1\r
+ (JNIEnv *, jclass, jobject, jint);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: notifyListOfObservers2\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;[BLorg/iotivity/base/OcResourceResponse;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers2\r
+ (JNIEnv *, jclass, jobject, jbyteArray, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: notifyListOfObservers3\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;[BLorg/iotivity/base/OcResourceResponse;I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_notifyListOfObservers3\r
+ (JNIEnv *, jclass, jobject, jbyteArray, jobject, jint);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: findResource0\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource0\r
+ (JNIEnv *, jclass, jstring, jstring, jint, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: findResource1\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_findResource1\r
+ (JNIEnv *, jclass, jstring, jstring, jint, jobject, jint);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: getDeviceInfo0\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo0\r
+ (JNIEnv *, jclass, jstring, jstring, jint, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: getDeviceInfo1\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnDeviceFoundListener;I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getDeviceInfo1\r
+ (JNIEnv *, jclass, jstring, jstring, jint, jobject, jint);
+
+ /*
+ * Class: org_iotivity_base_OcPlatform
+ * Method: getPlatformInfo0
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;)V
+ */
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo0
+ (JNIEnv *, jclass, jstring, jstring, jint, jobject);
+
+ /*
+ * Class: org_iotivity_base_OcPlatform
+ * Method: getPlatformInfo1
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPlatformFoundListener;I)V
+ */
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_getPlatformInfo1
- (JNIEnv *, jclass, jstring, jstring, jint, jobject, jint);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: registerResource0
- * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0
- (JNIEnv *, jclass, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: registerResource1
- * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1
- (JNIEnv *, jclass, jstring, jstring, jstring, jobject, jint);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: registerDeviceInfo0
+ (JNIEnv *, jclass, jstring, jstring, jint, jobject, jint);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: registerResource0\r
+ * Signature: (Lorg/iotivity/base/OcResource;)Lorg/iotivity/base/OcResourceHandle;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource0\r
+ (JNIEnv *, jclass, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: registerResource1\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcPlatform/EntityHandler;I)Lorg/iotivity/base/OcResourceHandle;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_registerResource1\r
+ (JNIEnv *, jclass, jstring, jstring, jstring, jobject, jint);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: registerDeviceInfo0\r
- * 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\r
+ * Signature: (Ljava/lang/String;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerDeviceInfo0\r
- (JNIEnv *, jclass, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring);\r
+ (JNIEnv *, jclass, jstring);
+
+ /*
+ * Class: org_iotivity_base_OcPlatform
+ * Method: registerPlatformInfo0
+ * 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
+ */
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_registerPlatformInfo0
+ (JNIEnv *, jclass, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: unregisterResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0
- (JNIEnv *, jclass, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: bindResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0
- (JNIEnv *, jclass, jobject, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: bindResources0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0
- (JNIEnv *, jclass, jobject, jobjectArray);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: unbindResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0
- (JNIEnv *, jclass, jobject, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: unbindResources0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0
- (JNIEnv *, jclass, jobject, jobjectArray);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: bindTypeToResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0
- (JNIEnv *, jclass, jobject, jstring);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: bindInterfaceToResource0
- * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0
- (JNIEnv *, jclass, jobject, jstring);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: startPresence0
- * Signature: (I)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0
- (JNIEnv *, jclass, jint);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: stopPresence0
- * Signature: ()V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0
- (JNIEnv *, jclass);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: subscribePresence0
- * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0
- (JNIEnv *, jclass, jstring, jint, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: subscribePresence1
- * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1
- (JNIEnv *, jclass, jstring, jstring, jint, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: unsubscribePresence0
- * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0
- (JNIEnv *, jclass, jobject);
-
- /*
- * Class: org_iotivity_base_OcPlatform
- * Method: constructResourceObject0
- * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)Lorg/iotivity/base/OcResource;
- */
- JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0
- (JNIEnv *, jclass, jstring, jstring, jint, jboolean, jobjectArray, jobjectArray);
-
- /*
- * Class: org_iotivity_base_OcPlatform0
- * Method: sendResponse0
- * Signature: (Lorg/iotivity/base/OcResourceResponse;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0
- (JNIEnv *, jclass, jobject);
-
- #ifdef __cplusplus
- }
- #endif
- #endif
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: unregisterResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unregisterResource0\r
+ (JNIEnv *, jclass, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: bindResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResource0\r
+ (JNIEnv *, jclass, jobject, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: bindResources0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindResources0\r
+ (JNIEnv *, jclass, jobject, jobjectArray);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: unbindResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResource0\r
+ (JNIEnv *, jclass, jobject, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: unbindResources0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;[Lorg/iotivity/base/OcResourceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unbindResources0\r
+ (JNIEnv *, jclass, jobject, jobjectArray);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: bindTypeToResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindTypeToResource0\r
+ (JNIEnv *, jclass, jobject, jstring);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: bindInterfaceToResource0\r
+ * Signature: (Lorg/iotivity/base/OcResourceHandle;Ljava/lang/String;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_bindInterfaceToResource0\r
+ (JNIEnv *, jclass, jobject, jstring);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: startPresence0\r
+ * Signature: (I)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_startPresence0\r
+ (JNIEnv *, jclass, jint);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: stopPresence0\r
+ * Signature: ()V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_stopPresence0\r
+ (JNIEnv *, jclass);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: subscribePresence0\r
+ * Signature: (Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence0\r
+ (JNIEnv *, jclass, jstring, jint, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: subscribePresence1\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;ILorg/iotivity/base/OcPlatform/OnPresenceListener;)Lorg/iotivity/base/OcPresenceHandle;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_subscribePresence1\r
+ (JNIEnv *, jclass, jstring, jstring, jint, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: unsubscribePresence0\r
+ * Signature: (Lorg/iotivity/base/OcPresenceHandle;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_unsubscribePresence0\r
+ (JNIEnv *, jclass, jobject);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform\r
+ * Method: constructResourceObject0\r
+ * Signature: (Ljava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;[Ljava/lang/String;)Lorg/iotivity/base/OcResource;\r
+ */\r
+ JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcPlatform_constructResourceObject0\r
+ (JNIEnv *, jclass, jstring, jstring, jint, jboolean, jobjectArray, jobjectArray);\r
+ \r
+ /*\r
+ * Class: org_iotivity_base_OcPlatform0\r
+ * Method: sendResponse0\r
+ * Signature: (Lorg/iotivity/base/OcResourceResponse;)V\r
+ */\r
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcPlatform_sendResponse0\r
+ (JNIEnv *, jclass, jobject);\r
+ \r
+ #ifdef __cplusplus\r
+ }\r
+ #endif\r
+ #endif\r
+
- /*
- * //******************************************************************
- * //
- * // Copyright 2015 Intel Corporation.
- * //
- * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- * //
- * // 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.
- * //
- * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- */
-
- package org.iotivity.base;
-
- import org.iotivity.ca.CaInterface;
-
- import java.util.EnumSet;
- import java.util.Iterator;
- import java.util.List;
-
- /**
- * Contains the main entrance/functionality of the product. To set a custom configuration, the
- * implementer must make a call to OcPlatform.Configure before the first usage of a function in this
- * class.
- */
- public final class OcPlatform {
-
- static {
- System.loadLibrary("oc_logger");
- System.loadLibrary("octbstack");
- System.loadLibrary("connectivity_abstraction");
- System.loadLibrary("oc");
- System.loadLibrary("ocstack-jni");
- }
-
- /**
- * Default interface
- */
- public static final String DEFAULT_INTERFACE = "oic.if.baseline";
-
- /**
- * Used in discovering (GET) links to other resources of a collection
- */
- public static final String LINK_INTERFACE = "oic.if.ll";
-
- /**
- * Used in GET, PUT, POST, DELETE methods on links to other resources of a collection
- */
- public static final String BATCH_INTERFACE = "oic.if.b";
-
- /**
- * Used in GET, PUT, POST methods on links to other remote resources of a group
- */
- public static final String GROUP_INTERFACE = "oic.mi.grp";
-
- public static final String WELL_KNOWN_QUERY = "224.0.1.187:5683/oic/res";
- public static final String MULTICAST_PREFIX = "224.0.1.187:5683";
- public static final String MULTICAST_IP = "224.0.1.187";
- public static final int MULTICAST_PORT = 5683;
- public static final int DEFAULT_PRESENCE_TTL = 60;
- public static final String DEVICE_URI = "/oic/d";
- public static final String PRESENCE_URI = "/oic/ad";
-
- private static volatile boolean sIsPlatformInitialized = false;
-
- private OcPlatform() {
- }
-
- /**
- * API for setting the configuration of the OcPlatform.
- * Note: Any calls made to this AFTER the first call to OcPlatform.Configure will have no affect
- *
- * @param platformConfig platform configuration
- */
- public synchronized static void Configure(PlatformConfig platformConfig) {
- if (!sIsPlatformInitialized) {
- CaInterface.initialize(platformConfig.getContext());
-
- OcPlatform.configure(
- platformConfig.getServiceType().getValue(),
- platformConfig.getModeType().getValue(),
- platformConfig.getIpAddress(),
- platformConfig.getPort(),
- platformConfig.getQualityOfService().getValue()
- );
-
- sIsPlatformInitialized = true;
- }
- }
-
- private static native void configure(int serviceType,
- int modeType,
- String ipAddress,
- int port,
- int qualityOfService);
-
- /**
- * API for notifying base that resource's attributes have changed.
- *
- * @param ocResourceHandle resource handle of the resource
- * @throws OcException
- */
- public static void notifyAllObservers(
- OcResourceHandle ocResourceHandle) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.notifyAllObservers0(ocResourceHandle);
- }
-
- private static native void notifyAllObservers0(
- OcResourceHandle ocResourceHandle) throws OcException;
-
- /**
- * API for notifying base that resource's attributes have changed.
- *
- * @param ocResourceHandle resource handle of the resource
- * @param qualityOfService the quality of communication
- * @throws OcException
- */
- public static void notifyAllObservers(
- OcResourceHandle ocResourceHandle,
- QualityOfService qualityOfService) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.notifyAllObservers1(ocResourceHandle, qualityOfService.getValue());
- }
-
- private static native void notifyAllObservers1(
- OcResourceHandle ocResourceHandle,
- int qualityOfService) throws OcException;
-
- /**
- * API for notifying only specific clients that resource's attributes have changed.
- *
- * @param ocResourceHandle resource handle of the resource
- * @param ocObservationIdList These set of ids are ones which which will be notified upon
- * resource change.
- * @param ocResourceResponse OcResourceResponse object used by app to fill the response for
- * this resource change
- * @throws OcException
- */
- public static void notifyListOfObservers(
- OcResourceHandle ocResourceHandle,
- List<Byte> ocObservationIdList,
- OcResourceResponse ocResourceResponse) throws OcException {
- OcPlatform.initCheck();
-
- byte[] idArr = new byte[ocObservationIdList.size()];
- Iterator<Byte> it = ocObservationIdList.iterator();
- int i = 0;
- while (it.hasNext()) {
- idArr[i++] = (byte) it.next();
- }
-
- OcPlatform.notifyListOfObservers2(
- ocResourceHandle,
- idArr,
- ocResourceResponse);
- }
-
- private static native void notifyListOfObservers2(
- OcResourceHandle ocResourceHandle,
- byte[] ocObservationIdArray,
- OcResourceResponse ocResourceResponse) throws OcException;
-
- /**
- * API for notifying only specific clients that resource's attributes have changed.
- *
- * @param ocResourceHandle resource handle of the resource
- * @param ocObservationIdList These set of ids are ones which which will be notified upon
- * resource change.
- * @param ocResourceResponse OcResourceResponse object used by app to fill the response for
- * this resource change
- * @param qualityOfService the quality of communication
- * @throws OcException
- */
- public static void notifyListOfObservers(
- OcResourceHandle ocResourceHandle,
- List<Byte> ocObservationIdList,
- OcResourceResponse ocResourceResponse,
- QualityOfService qualityOfService) throws OcException {
- OcPlatform.initCheck();
-
- byte[] idArr = new byte[ocObservationIdList.size()];
- Iterator<Byte> it = ocObservationIdList.iterator();
- int i = 0;
- while (it.hasNext()) {
- idArr[i++] = (byte) it.next();
- }
-
- OcPlatform.notifyListOfObservers3(
- ocResourceHandle,
- idArr,
- ocResourceResponse,
- qualityOfService.getValue()
- );
- }
-
- private static native void notifyListOfObservers3(
- OcResourceHandle ocResourceHandle,
- byte[] ocObservationIdArray,
- OcResourceResponse ocResourceResponse,
- int qualityOfService) throws OcException;
-
- /**
- * API for Service and Resource Discovery. NOTE: This API applies to client side only
- *
- * @param host Host IP Address of a service to direct resource discovery query.
- * If empty, performs multicast resource discovery query
- * @param resourceUri name of the resource. If null or empty, performs search for all
- * resource names
- * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
- * IPV6, ALL
- * @param onResourceFoundListener Handles events, success states and failure states.
- * @throws OcException
- */
- public static void findResource(
- String host,
- String resourceUri,
- OcConnectivityType connectivityType,
- OnResourceFoundListener onResourceFoundListener) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.findResource0(
- host,
- resourceUri,
- connectivityType.getValue(),
- onResourceFoundListener
- );
- }
-
- private static native void findResource0(
- String host,
- String resourceUri,
- int connectivityType,
- OnResourceFoundListener onResourceFoundListener) throws OcException;
-
- /**
- * API for Service and Resource Discovery. NOTE: This API applies to client side only
- *
- * @param host Host IP Address of a service to direct resource discovery query.
- * If empty, performs multicast resource discovery query
- * @param resourceUri name of the resource. If null or empty, performs search for all
- * resource names
- * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
- * IPV6, ALL
- * @param onResourceFoundListener Handles events, success states and failure states.
- * @param qualityOfService the quality of communication
- * @throws OcException
- */
- public static void findResource(
- String host,
- String resourceUri,
- OcConnectivityType connectivityType,
- OnResourceFoundListener onResourceFoundListener,
- QualityOfService qualityOfService) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.findResource1(host,
- resourceUri,
- connectivityType.getValue(),
- onResourceFoundListener,
- qualityOfService.getValue()
- );
- }
-
- private static native void findResource1(
- String host,
- String resourceUri,
- int connectivityType,
- OnResourceFoundListener onResourceFoundListener,
- int qualityOfService) throws OcException;
-
- /**
- * API for Device Discovery
- *
- * @param host Host IP Address. If null or empty, Multicast is performed.
- * @param deviceUri Uri containing address to the virtual device
- * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
- * IPV6, ALL
- * @param onDeviceFoundListener Handles events, success states and failure states.
- * @throws OcException
- */
- public static void getDeviceInfo(
- String host,
- String deviceUri,
- OcConnectivityType connectivityType,
- OnDeviceFoundListener onDeviceFoundListener) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.getDeviceInfo0(
- host,
- deviceUri,
- connectivityType.getValue(),
- onDeviceFoundListener
- );
- }
-
- private static native void getDeviceInfo0(
- String host,
- String deviceUri,
- int connectivityType,
- OnDeviceFoundListener onDeviceFoundListener) throws OcException;
-
- /**
- * API for Device Discovery
- *
- * @param host Host IP Address. If null or empty, Multicast is performed.
- * @param deviceUri Uri containing address to the virtual device
- * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
- * IPV6, ALL
- * @param onDeviceFoundListener Handles events, success states and failure states.
- * @param qualityOfService the quality of communication
- * @throws OcException
- */
- public static void getDeviceInfo(
- String host,
- String deviceUri,
- OcConnectivityType connectivityType,
- OnDeviceFoundListener onDeviceFoundListener,
- QualityOfService qualityOfService) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.getDeviceInfo1(
- host,
- deviceUri,
- connectivityType.getValue(),
- onDeviceFoundListener,
- qualityOfService.getValue()
- );
- }
-
- private static native void getDeviceInfo1(
- String host,
- String deviceUri,
- int connectivityType,
- OnDeviceFoundListener onDeviceFoundListener,
+ /*\r
+ * //******************************************************************\r
+ * //\r
+ * // Copyright 2015 Intel Corporation.\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
+ \r
+ package org.iotivity.base;\r
+ \r
+ import org.iotivity.ca.CaInterface;\r
+ \r
+ import java.util.EnumSet;\r
+ import java.util.Iterator;\r
+ import java.util.List;\r
+ \r
+ /**\r
+ * Contains the main entrance/functionality of the product. To set a custom configuration, the\r
+ * implementer must make a call to OcPlatform.Configure before the first usage of a function in this\r
+ * class.\r
+ */\r
+ public final class OcPlatform {\r
+ \r
+ static {\r
+ System.loadLibrary("oc_logger");\r
+ System.loadLibrary("octbstack");\r
+ System.loadLibrary("connectivity_abstraction");\r
+ System.loadLibrary("oc");\r
+ System.loadLibrary("ocstack-jni");\r
+ }\r
+ \r
+ /**\r
+ * Default interface\r
+ */\r
+ public static final String DEFAULT_INTERFACE = "oic.if.baseline";\r
+ \r
+ /**\r
+ * Used in discovering (GET) links to other resources of a collection\r
+ */\r
+ public static final String LINK_INTERFACE = "oic.if.ll";\r
+ \r
+ /**\r
+ * Used in GET, PUT, POST, DELETE methods on links to other resources of a collection\r
+ */\r
+ public static final String BATCH_INTERFACE = "oic.if.b";\r
+ \r
+ /**\r
+ * Used in GET, PUT, POST methods on links to other remote resources of a group\r
+ */\r
+ public static final String GROUP_INTERFACE = "oic.mi.grp";\r
+ \r
+ public static final String WELL_KNOWN_QUERY = "224.0.1.187:5683/oic/res";\r
+ public static final String MULTICAST_PREFIX = "224.0.1.187:5683";\r
+ public static final String MULTICAST_IP = "224.0.1.187";\r
+ public static final int MULTICAST_PORT = 5683;\r
+ public static final int DEFAULT_PRESENCE_TTL = 60;\r
+ public static final String DEVICE_URI = "/oic/d";\r
+ public static final String PRESENCE_URI = "/oic/ad";\r
+ \r
+ private static volatile boolean sIsPlatformInitialized = false;\r
+ \r
+ private OcPlatform() {\r
+ }\r
+ \r
+ /**\r
+ * API for setting the configuration of the OcPlatform.\r
+ * Note: Any calls made to this AFTER the first call to OcPlatform.Configure will have no affect\r
+ *\r
+ * @param platformConfig platform configuration\r
+ */\r
+ public synchronized static void Configure(PlatformConfig platformConfig) {\r
+ if (!sIsPlatformInitialized) {\r
+ CaInterface.initialize(platformConfig.getContext());\r
+ \r
+ OcPlatform.configure(\r
+ platformConfig.getServiceType().getValue(),\r
+ platformConfig.getModeType().getValue(),\r
+ platformConfig.getIpAddress(),\r
+ platformConfig.getPort(),\r
+ platformConfig.getQualityOfService().getValue(),
+ platformConfig.getSvrDbPath()
+ );\r
+ \r
+ sIsPlatformInitialized = true;\r
+ }\r
+ }\r
+ \r
+ private static native void configure(int serviceType,\r
+ int modeType,\r
+ String ipAddress,\r
+ int port,\r
+ int qualityOfService,
+ String dbPath);
+ \r
+ /**\r
+ * API for notifying base that resource's attributes have changed.\r
+ *\r
+ * @param ocResourceHandle resource handle of the resource\r
+ * @throws OcException\r
+ */\r
+ public static void notifyAllObservers(\r
+ OcResourceHandle ocResourceHandle) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.notifyAllObservers0(ocResourceHandle);\r
+ }\r
+ \r
+ private static native void notifyAllObservers0(\r
+ OcResourceHandle ocResourceHandle) throws OcException;\r
+ \r
+ /**\r
+ * API for notifying base that resource's attributes have changed.\r
+ *\r
+ * @param ocResourceHandle resource handle of the resource\r
+ * @param qualityOfService the quality of communication\r
+ * @throws OcException\r
+ */\r
+ public static void notifyAllObservers(\r
+ OcResourceHandle ocResourceHandle,\r
+ QualityOfService qualityOfService) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.notifyAllObservers1(ocResourceHandle, qualityOfService.getValue());\r
+ }\r
+ \r
+ private static native void notifyAllObservers1(\r
+ OcResourceHandle ocResourceHandle,\r
+ int qualityOfService) throws OcException;\r
+ \r
+ /**\r
+ * API for notifying only specific clients that resource's attributes have changed.\r
+ *\r
+ * @param ocResourceHandle resource handle of the resource\r
+ * @param ocObservationIdList These set of ids are ones which which will be notified upon\r
+ * resource change.\r
+ * @param ocResourceResponse OcResourceResponse object used by app to fill the response for\r
+ * this resource change\r
+ * @throws OcException\r
+ */\r
+ public static void notifyListOfObservers(\r
+ OcResourceHandle ocResourceHandle,\r
+ List<Byte> ocObservationIdList,\r
+ OcResourceResponse ocResourceResponse) throws OcException {\r
+ OcPlatform.initCheck();\r
+ \r
+ byte[] idArr = new byte[ocObservationIdList.size()];\r
+ Iterator<Byte> it = ocObservationIdList.iterator();\r
+ int i = 0;\r
+ while (it.hasNext()) {\r
+ idArr[i++] = (byte) it.next();\r
+ }\r
+ \r
+ OcPlatform.notifyListOfObservers2(\r
+ ocResourceHandle,\r
+ idArr,\r
+ ocResourceResponse);\r
+ }\r
+ \r
+ private static native void notifyListOfObservers2(\r
+ OcResourceHandle ocResourceHandle,\r
+ byte[] ocObservationIdArray,\r
+ OcResourceResponse ocResourceResponse) throws OcException;\r
+ \r
+ /**\r
+ * API for notifying only specific clients that resource's attributes have changed.\r
+ *\r
+ * @param ocResourceHandle resource handle of the resource\r
+ * @param ocObservationIdList These set of ids are ones which which will be notified upon\r
+ * resource change.\r
+ * @param ocResourceResponse OcResourceResponse object used by app to fill the response for\r
+ * this resource change\r
+ * @param qualityOfService the quality of communication\r
+ * @throws OcException\r
+ */\r
+ public static void notifyListOfObservers(\r
+ OcResourceHandle ocResourceHandle,\r
+ List<Byte> ocObservationIdList,\r
+ OcResourceResponse ocResourceResponse,\r
+ QualityOfService qualityOfService) throws OcException {\r
+ OcPlatform.initCheck();\r
+ \r
+ byte[] idArr = new byte[ocObservationIdList.size()];\r
+ Iterator<Byte> it = ocObservationIdList.iterator();\r
+ int i = 0;\r
+ while (it.hasNext()) {\r
+ idArr[i++] = (byte) it.next();\r
+ }\r
+ \r
+ OcPlatform.notifyListOfObservers3(\r
+ ocResourceHandle,\r
+ idArr,\r
+ ocResourceResponse,\r
+ qualityOfService.getValue()\r
+ );\r
+ }\r
+ \r
+ private static native void notifyListOfObservers3(\r
+ OcResourceHandle ocResourceHandle,\r
+ byte[] ocObservationIdArray,\r
+ OcResourceResponse ocResourceResponse,\r
+ int qualityOfService) throws OcException;\r
+ \r
+ /**\r
+ * API for Service and Resource Discovery. NOTE: This API applies to client side only\r
+ *\r
+ * @param host Host IP Address of a service to direct resource discovery query.\r
+ * If empty, performs multicast resource discovery query\r
+ * @param resourceUri name of the resource. If null or empty, performs search for all\r
+ * resource names\r
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,\r
+ * IPV6, ALL\r
+ * @param onResourceFoundListener Handles events, success states and failure states.\r
+ * @throws OcException\r
+ */\r
+ public static void findResource(\r
+ String host,\r
+ String resourceUri,\r
+ OcConnectivityType connectivityType,\r
+ OnResourceFoundListener onResourceFoundListener) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.findResource0(\r
+ host,\r
+ resourceUri,\r
+ connectivityType.getValue(),\r
+ onResourceFoundListener\r
+ );\r
+ }\r
+ \r
+ private static native void findResource0(\r
+ String host,\r
+ String resourceUri,\r
+ int connectivityType,\r
+ OnResourceFoundListener onResourceFoundListener) throws OcException;\r
+ \r
+ /**\r
+ * API for Service and Resource Discovery. NOTE: This API applies to client side only\r
+ *\r
+ * @param host Host IP Address of a service to direct resource discovery query.\r
+ * If empty, performs multicast resource discovery query\r
+ * @param resourceUri name of the resource. If null or empty, performs search for all\r
+ * resource names\r
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,\r
+ * IPV6, ALL\r
+ * @param onResourceFoundListener Handles events, success states and failure states.\r
+ * @param qualityOfService the quality of communication\r
+ * @throws OcException\r
+ */\r
+ public static void findResource(\r
+ String host,\r
+ String resourceUri,\r
+ OcConnectivityType connectivityType,\r
+ OnResourceFoundListener onResourceFoundListener,\r
+ QualityOfService qualityOfService) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.findResource1(host,\r
+ resourceUri,\r
+ connectivityType.getValue(),\r
+ onResourceFoundListener,\r
+ qualityOfService.getValue()\r
+ );\r
+ }\r
+ \r
+ private static native void findResource1(\r
+ String host,\r
+ String resourceUri,\r
+ int connectivityType,\r
+ OnResourceFoundListener onResourceFoundListener,\r
+ int qualityOfService) throws OcException;\r
+ \r
+ /**\r
+ * API for Device Discovery\r
+ *\r
+ * @param host Host IP Address. If null or empty, Multicast is performed.\r
+ * @param deviceUri Uri containing address to the virtual device\r
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,\r
+ * IPV6, ALL\r
+ * @param onDeviceFoundListener Handles events, success states and failure states.\r
+ * @throws OcException\r
+ */\r
+ public static void getDeviceInfo(\r
+ String host,\r
+ String deviceUri,\r
+ OcConnectivityType connectivityType,\r
+ OnDeviceFoundListener onDeviceFoundListener) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.getDeviceInfo0(\r
+ host,\r
+ deviceUri,\r
+ connectivityType.getValue(),\r
+ onDeviceFoundListener\r
+ );\r
+ }\r
+ \r
+ private static native void getDeviceInfo0(\r
+ String host,\r
+ String deviceUri,\r
+ int connectivityType,\r
+ OnDeviceFoundListener onDeviceFoundListener) throws OcException;\r
+ \r
+ /**\r
+ * API for Device Discovery\r
+ *\r
+ * @param host Host IP Address. If null or empty, Multicast is performed.\r
+ * @param deviceUri Uri containing address to the virtual device\r
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,\r
+ * IPV6, ALL\r
+ * @param onDeviceFoundListener Handles events, success states and failure states.\r
+ * @param qualityOfService the quality of communication\r
+ * @throws OcException\r
+ */\r
+ public static void getDeviceInfo(\r
+ String host,\r
+ String deviceUri,\r
+ OcConnectivityType connectivityType,\r
+ OnDeviceFoundListener onDeviceFoundListener,\r
+ QualityOfService qualityOfService) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.getDeviceInfo1(\r
+ host,\r
+ deviceUri,\r
+ connectivityType.getValue(),\r
+ onDeviceFoundListener,\r
+ qualityOfService.getValue()\r
+ );\r
+ }\r
+ \r
+ private static native void getDeviceInfo1(\r
+ String host,\r
+ String deviceUri,\r
+ int connectivityType,\r
+ OnDeviceFoundListener onDeviceFoundListener,\r
+ int qualityOfService) throws OcException;
+
+ /**
+ * API for Platform Discovery
+ *
+ * @param host Host IP Address. If null or empty, Multicast is performed.
+ * @param platformUri Uri containing address to the platform
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
+ * IPV6, ALL
+ * @param onPlatformFoundListener Handles events, success states and failure states.
+ * @throws OcException
+ */
+
+ public static void getPlatformInfo(
+ String host,
+ String platformUri,
+ OcConnectivityType connectivityType,
+ OnPlatformFoundListener onPlatformFoundListener) throws OcException {
+ OcPlatform.initCheck();
+ OcPlatform.getPlatformInfo0(
+ host,
+ platformUri,
+ connectivityType.getValue(),
+ onPlatformFoundListener
+ );
+ }
+
+ private static native void getPlatformInfo0(
+ String host,
+ String platformUri,
+ int connectivityType,
+ OnPlatformFoundListener onPlatformInfoFoundListener) throws OcException;
+
+ /**
+ * API for Platform Discovery
+ *
+ * @param host Host IP Address. If null or empty, Multicast is performed.
+ * @param platformUri Uri containing address to the platform
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
+ * IPV6, ALL
+ * @param onPlatformFoundListener Handles events, success states and failure states.
+ * @param qualityOfService the quality of communication
+ * @throws OcException
+ */
+
+ public static void getPlatformInfo(
+ String host,
+ String platformUri,
+ OcConnectivityType connectivityType,
+ OnPlatformFoundListener onPlatformFoundListener,
+ QualityOfService qualityOfService) throws OcException {
+ OcPlatform.initCheck();
+ OcPlatform.getPlatformInfo1(
+ host,
+ platformUri,
+ connectivityType.getValue(),
+ onPlatformFoundListener,
+ qualityOfService.getValue()
+ );
+ }
+
+ private static native void getPlatformInfo1(
+ String host,
+ String platformUri,
+ int connectivityType,
+ OnPlatformFoundListener onPlatformFoundListener,
- int qualityOfService) throws OcException;
-
- /**
- * This API registers a resource with the server NOTE: This API applies to server side only.
- *
- * @param ocResource The instance of OcResource with all data filled
- * @return resource handle
- * @throws OcException
- */
- public static OcResourceHandle registerResource(
- OcResource ocResource) throws OcException {
- OcPlatform.initCheck();
- return OcPlatform.registerResource0(ocResource);
- }
-
- private static native OcResourceHandle registerResource0(
- OcResource ocResource) throws OcException;
-
- /**
- * This API registers a resource with the server NOTE: This API applies to server side only.
- *
- * @param resourceUri The URI of the resource. Example: "a/light"
- * @param resourceTypeName The resource type. Example: "light"
- * @param resourceInterface The resource interface (whether it is collection etc).
- * @param entityHandler entity handler.
- * @param resourcePropertySet indicates the property of the resource
- * @return resource handle
- * @throws OcException
- */
- public static OcResourceHandle registerResource(
- String resourceUri,
- String resourceTypeName,
- String resourceInterface,
- EntityHandler entityHandler,
- EnumSet<ResourceProperty> resourcePropertySet) throws OcException {
- OcPlatform.initCheck();
-
- int resProperty = 0;
-
- for (ResourceProperty prop : ResourceProperty.values()) {
- if (resourcePropertySet.contains(prop))
- resProperty |= prop.getValue();
- }
-
- return OcPlatform.registerResource1(resourceUri,
- resourceTypeName,
- resourceInterface,
- entityHandler,
- resProperty);
- }
-
- private static native OcResourceHandle registerResource1(
- String resourceUri,
- String resourceTypeName,
- String resourceInterface,
- EntityHandler entityHandler,
- int resourceProperty) throws OcException;
-
- /**
- * Register Device Info
- *
- * @param ocDeviceInfo object containing all the device specific information
- * @throws OcException
- */
- public static void registerDeviceInfo(
- OcDeviceInfo ocDeviceInfo) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.registerDeviceInfo0(
- ocDeviceInfo.getDeviceName()
- );
- }
-
- private static native void registerDeviceInfo0(
- String deviceName
- ) throws OcException;
-
- /**
+ int qualityOfService) throws OcException;\r
+ \r
+ /**\r
+ * This API registers a resource with the server NOTE: This API applies to server side only.\r
+ *\r
+ * @param ocResource The instance of OcResource with all data filled\r
+ * @return resource handle\r
+ * @throws OcException\r
+ */\r
+ public static OcResourceHandle registerResource(\r
+ OcResource ocResource) throws OcException {\r
+ OcPlatform.initCheck();\r
+ return OcPlatform.registerResource0(ocResource);\r
+ }\r
+ \r
+ private static native OcResourceHandle registerResource0(\r
+ OcResource ocResource) throws OcException;\r
+ \r
+ /**\r
+ * This API registers a resource with the server NOTE: This API applies to server side only.\r
+ *\r
+ * @param resourceUri The URI of the resource. Example: "a/light"\r
+ * @param resourceTypeName The resource type. Example: "light"\r
+ * @param resourceInterface The resource interface (whether it is collection etc).\r
+ * @param entityHandler entity handler.\r
+ * @param resourcePropertySet indicates the property of the resource\r
+ * @return resource handle\r
+ * @throws OcException\r
+ */\r
+ public static OcResourceHandle registerResource(\r
+ String resourceUri,\r
+ String resourceTypeName,\r
+ String resourceInterface,\r
+ EntityHandler entityHandler,\r
+ EnumSet<ResourceProperty> resourcePropertySet) throws OcException {\r
+ OcPlatform.initCheck();\r
+ \r
+ int resProperty = 0;\r
+ \r
+ for (ResourceProperty prop : ResourceProperty.values()) {\r
+ if (resourcePropertySet.contains(prop))\r
+ resProperty |= prop.getValue();\r
+ }\r
+ \r
+ return OcPlatform.registerResource1(resourceUri,\r
+ resourceTypeName,\r
+ resourceInterface,\r
+ entityHandler,\r
+ resProperty);\r
+ }\r
+ \r
+ private static native OcResourceHandle registerResource1(\r
+ String resourceUri,\r
+ String resourceTypeName,\r
+ String resourceInterface,\r
+ EntityHandler entityHandler,\r
+ int resourceProperty) throws OcException;\r
+ \r
+ /**\r
+ * Register Device Info\r
+ *\r
+ * @param ocDeviceInfo object containing all the device specific information\r
+ * @throws OcException\r
+ */\r
+ public static void registerDeviceInfo(\r
+ OcDeviceInfo ocDeviceInfo) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.registerDeviceInfo0(\r
+ ocDeviceInfo.getDeviceName()\r
+ );\r
+ }\r
+ \r
+ private static native void registerDeviceInfo0(\r
+ String deviceName\r
+ ) throws OcException;\r
+ \r
+ /**\r
+ * Register Platform Info
+ *
+ * @param ocPlatformInfo object containing all the platform specific information
+ * @throws OcException
+ */
+ public static void registerPlatformInfo(
+ OcPlatformInfo ocPlatformInfo) throws OcException {
+ OcPlatform.initCheck();
+ OcPlatform.registerPlatformInfo0(
+ ocPlatformInfo.getPlatformID(),
+ ocPlatformInfo.getManufacturerName(),
+ ocPlatformInfo.getManufacturerUrl(),
+ ocPlatformInfo.getModelNumber(),
+ ocPlatformInfo.getDateOfManufacture(),
+ ocPlatformInfo.getPlatformVersion(),
+ ocPlatformInfo.getOperatingSystemVersion(),
+ ocPlatformInfo.getHardwareVersion(),
+ ocPlatformInfo.getFirmwareVersion(),
+ ocPlatformInfo.getSupportUrl(),
+ ocPlatformInfo.getSystemTime()
+ );
+ }
+
+ private static native void registerPlatformInfo0(
+ String platformId, String manufacturerName, String manufacturerUrl,
+ String modelNumber, String dateOfManufacture, String platformVersion,
+ String operatingSystemVersion, String hardwareVersion, String firmwareVersion,
+ String supportUrl, String systemTime
+ ) throws OcException;
+
+ /**
- * This API unregisters a resource with the server NOTE: This API applies to server side only.
- *
- * @param ocResourceHandle This is the resource handle which we which to unregister from the
- * server
- * @throws OcException
- */
- public static void unregisterResource(
- OcResourceHandle ocResourceHandle) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.unregisterResource0(ocResourceHandle);
- }
-
- private static native void unregisterResource0(
- OcResourceHandle ocResourceHandle) throws OcException;
-
-
- /**
- * Add a resource to a collection resource
- *
- * @param ocResourceCollectionHandle handle to the collection resource
- * @param ocResourceHandle handle to resource to be added to the collection resource
- * @throws OcException
- */
- public static void bindResource(
- OcResourceHandle ocResourceCollectionHandle,
- OcResourceHandle ocResourceHandle) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.bindResource0(ocResourceCollectionHandle, ocResourceHandle);
- }
-
- private static native void bindResource0(
- OcResourceHandle ocResourceCollectionHandle,
- OcResourceHandle ocResourceHandle) throws OcException;
-
- /**
- * Add multiple resources to a collection resource.
- *
- * @param ocResourceCollectionHandle handle to the collection resource
- * @param ocResourceHandleList reference to list of resource handles to be added to the
- * collection resource
- * @throws OcException
- */
- public static void bindResources(
- OcResourceHandle ocResourceCollectionHandle,
- List<OcResourceHandle> ocResourceHandleList) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.bindResources0(
- ocResourceCollectionHandle,
- ocResourceHandleList.toArray(
- new OcResourceHandle[ocResourceHandleList.size()])
- );
- }
-
- private static native void bindResources0(
- OcResourceHandle ocResourceCollectionHandle,
- OcResourceHandle[] ocResourceHandleArray) throws OcException;
-
- /**
- * Unbind a resource from a collection resource.
- *
- * @param ocResourceCollectionHandle handle to the collection resource
- * @param ocResourceHandle resource handle to be unbound from the collection resource
- * @throws OcException
- */
- public static void unbindResource(
- OcResourceHandle ocResourceCollectionHandle,
- OcResourceHandle ocResourceHandle) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.unbindResource0(ocResourceCollectionHandle, ocResourceHandle);
- }
-
- private static native void unbindResource0(
- OcResourceHandle ocResourceCollectionHandle,
- OcResourceHandle ocResourceHandle) throws OcException;
-
- /**
- * Unbind resources from a collection resource.
- *
- * @param ocResourceCollectionHandle Handle to the collection resource
- * @param ocResourceHandleList List of resource handles to be unbound from the collection
- * resource
- * @throws OcException
- */
- public static void unbindResources(
- OcResourceHandle ocResourceCollectionHandle,
- List<OcResourceHandle> ocResourceHandleList) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.unbindResources0(
- ocResourceCollectionHandle,
- ocResourceHandleList.toArray(
- new OcResourceHandle[ocResourceHandleList.size()])
- );
- }
-
- private static native void unbindResources0(
- OcResourceHandle ocResourceCollectionHandle,
- OcResourceHandle[] ocResourceHandleArray) throws OcException;
-
- /**
- * Binds a type to a particular resource
- *
- * @param ocResourceHandle handle to the resource
- * @param resourceTypeName new typename to bind to the resource
- * @throws OcException
- */
- public static void bindTypeToResource(
- OcResourceHandle ocResourceHandle,
- String resourceTypeName) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.bindTypeToResource0(ocResourceHandle, resourceTypeName);
- }
-
- private static native void bindTypeToResource0(
- OcResourceHandle ocResourceHandle,
- String resourceTypeName) throws OcException;
-
- /**
- * Binds an interface to a particular resource
- *
- * @param ocResourceHandle handle to the resource
- * @param resourceInterfaceName new interface to bind to the resource
- * @throws OcException
- */
- public static void bindInterfaceToResource(
- OcResourceHandle ocResourceHandle,
- String resourceInterfaceName) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.bindInterfaceToResource0(ocResourceHandle, resourceInterfaceName);
- }
-
- private static native void bindInterfaceToResource0(
- OcResourceHandle ocResourceHandle,
- String resourceInterfaceName) throws OcException;
-
- /**
- * Start Presence announcements.
- *
- * @param ttl time to live in seconds
- * @throws OcException
- */
- public static void startPresence(int ttl) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.startPresence0(ttl);
- }
-
- private static native void startPresence0(int ttl) throws OcException;
-
- /**
- * Stop Presence announcements.
- *
- * @throws OcException
- */
- public static void stopPresence() throws OcException {
- OcPlatform.initCheck();
- OcPlatform.stopPresence0();
- }
-
- private static native void stopPresence0() throws OcException;
-
- /**
- * Subscribes to a server's presence change events. By making this subscription, every time a
- * server adds/removes/alters a resource, starts or is intentionally stopped
- *
- * @param host The IP address/addressable name of the server to subscribe to
- * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
- * IPV6, ALL
- * @param onPresenceListener listener that will receive notifications/subscription events
- * @return a handle object that can be used to identify this subscription request. It can be
- * used to unsubscribe from these events in the future
- * @throws OcException
- */
- public static OcPresenceHandle subscribePresence(
- String host,
- OcConnectivityType connectivityType,
- OnPresenceListener onPresenceListener) throws OcException {
- OcPlatform.initCheck();
- return OcPlatform.subscribePresence0(
- host,
- connectivityType.getValue(),
- onPresenceListener
- );
- }
-
- private static native OcPresenceHandle subscribePresence0(
- String host,
- int connectivityType,
- OnPresenceListener onPresenceListener) throws OcException;
-
- /**
- * Subscribes to a server's presence change events. By making this subscription, every time a
- * server adds/removes/alters a resource, starts or is intentionally stopped
- *
- * @param host The IP address/addressable name of the server to subscribe to
- * @param resourceType a resource type specified as a filter for subscription events.
- * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
- * IPV6, ALL
- * @param onPresenceListener listener that will receive notifications/subscription events
- * @return a handle object that can be used to identify this subscription request. It can be
- * used to unsubscribe from these events in the future
- * @throws OcException
- */
- public static OcPresenceHandle subscribePresence(
- String host,
- String resourceType,
- OcConnectivityType connectivityType,
- OnPresenceListener onPresenceListener) throws OcException {
- OcPlatform.initCheck();
- return OcPlatform.subscribePresence1(
- host,
- resourceType,
- connectivityType.getValue(),
- onPresenceListener);
- }
-
- private static native OcPresenceHandle subscribePresence1(
- String host,
- String resourceType,
- int connectivityType,
- OnPresenceListener onPresenceListener) throws OcException;
-
- /**
- * Unsubscribes from a previously subscribed server's presence events. Note that you may for
- * a short time still receive events from the server since it may take time for the
- * unsubscribe to take effect.
- *
- * @param ocPresenceHandle the handle object provided by the subscribePresence call that
- * identifies this subscription
- * @throws OcException
- */
- public static void unsubscribePresence(
- OcPresenceHandle ocPresenceHandle) throws OcException {
- OcPlatform.initCheck();
- OcPlatform.unsubscribePresence0(ocPresenceHandle);
- }
-
- private static native void unsubscribePresence0(
- OcPresenceHandle ocPresenceHandle) throws OcException;
-
- /**
- * Creates a resource proxy object so that get/put/observe functionality can be used without
- * discovering the object in advance. Note that the consumer of this method needs to provide
- * all of the details required to correctly contact and observe the object. If the consumer
- * lacks any of this information, they should discover the resource object normally.
- * Additionally, you can only create this object if OcPlatform was initialized to be a Client
- * or Client/Server.
- *
- * @param host a string containing a resolvable host address of the server holding
- * the resource
- * @param uri the rest of the resource's URI that will permit messages to be
- * properly routed.
- * Example: /a/light
- * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,
- * IPV6, ALL
- * @param isObservable a boolean containing whether the resource supports observation
- * @param resourceTypeList a collection of resource types implemented by the resource
- * @param interfaceList a collection of interfaces that the resource supports/implements
- * @return new resource object
- * @throws OcException
- */
- public static OcResource constructResourceObject(
- String host,
- String uri,
- OcConnectivityType connectivityType,
- boolean isObservable,
- List<String> resourceTypeList,
- List<String> interfaceList) throws OcException {
- OcPlatform.initCheck();
- return OcPlatform.constructResourceObject0(
- host,
- uri,
- connectivityType.getValue(),
- isObservable,
- resourceTypeList.toArray(new String[resourceTypeList.size()]),
- interfaceList.toArray(new String[interfaceList.size()])
- );
- }
-
- private static native OcResource constructResourceObject0(
- String host,
- String uri,
- int connectivityType,
- boolean isObservable,
- String[] resourceTypes,
- String[] interfaces) throws OcException;
-
- /**
- * Allows application entity handler to send response to an incoming request.
- *
- * @param ocResourceResponse resource response
- * @throws OcException
- */
- public static void sendResponse(OcResourceResponse ocResourceResponse)
- throws OcException {
- OcPlatform.initCheck();
- OcPlatform.sendResponse0(ocResourceResponse);
- }
-
- private static native void sendResponse0(OcResourceResponse ocResourceResponse)
- throws OcException;
-
- /**
- * An OnResourceFoundListener can be registered via the OcPlatform.findResource call.
- * Event listeners are notified asynchronously
- */
- public interface OnResourceFoundListener {
- public void onResourceFound(OcResource resource);
- }
-
- /**
- * An OnDeviceFoundListener can be registered via the OcPlatform.getDeviceInfo call.
- * Event listeners are notified asynchronously
- */
- public interface OnDeviceFoundListener {
- public void onDeviceFound(OcRepresentation ocRepresentation);
+ * This API unregisters a resource with the server NOTE: This API applies to server side only.\r
+ *\r
+ * @param ocResourceHandle This is the resource handle which we which to unregister from the\r
+ * server\r
+ * @throws OcException\r
+ */\r
+ public static void unregisterResource(\r
+ OcResourceHandle ocResourceHandle) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.unregisterResource0(ocResourceHandle);\r
+ }\r
+ \r
+ private static native void unregisterResource0(\r
+ OcResourceHandle ocResourceHandle) throws OcException;\r
+ \r
+ \r
+ /**\r
+ * Add a resource to a collection resource\r
+ *\r
+ * @param ocResourceCollectionHandle handle to the collection resource\r
+ * @param ocResourceHandle handle to resource to be added to the collection resource\r
+ * @throws OcException\r
+ */\r
+ public static void bindResource(\r
+ OcResourceHandle ocResourceCollectionHandle,\r
+ OcResourceHandle ocResourceHandle) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.bindResource0(ocResourceCollectionHandle, ocResourceHandle);\r
+ }\r
+ \r
+ private static native void bindResource0(\r
+ OcResourceHandle ocResourceCollectionHandle,\r
+ OcResourceHandle ocResourceHandle) throws OcException;\r
+ \r
+ /**\r
+ * Add multiple resources to a collection resource.\r
+ *\r
+ * @param ocResourceCollectionHandle handle to the collection resource\r
+ * @param ocResourceHandleList reference to list of resource handles to be added to the\r
+ * collection resource\r
+ * @throws OcException\r
+ */\r
+ public static void bindResources(\r
+ OcResourceHandle ocResourceCollectionHandle,\r
+ List<OcResourceHandle> ocResourceHandleList) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.bindResources0(\r
+ ocResourceCollectionHandle,\r
+ ocResourceHandleList.toArray(\r
+ new OcResourceHandle[ocResourceHandleList.size()])\r
+ );\r
+ }\r
+ \r
+ private static native void bindResources0(\r
+ OcResourceHandle ocResourceCollectionHandle,\r
+ OcResourceHandle[] ocResourceHandleArray) throws OcException;\r
+ \r
+ /**\r
+ * Unbind a resource from a collection resource.\r
+ *\r
+ * @param ocResourceCollectionHandle handle to the collection resource\r
+ * @param ocResourceHandle resource handle to be unbound from the collection resource\r
+ * @throws OcException\r
+ */\r
+ public static void unbindResource(\r
+ OcResourceHandle ocResourceCollectionHandle,\r
+ OcResourceHandle ocResourceHandle) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.unbindResource0(ocResourceCollectionHandle, ocResourceHandle);\r
+ }\r
+ \r
+ private static native void unbindResource0(\r
+ OcResourceHandle ocResourceCollectionHandle,\r
+ OcResourceHandle ocResourceHandle) throws OcException;\r
+ \r
+ /**\r
+ * Unbind resources from a collection resource.\r
+ *\r
+ * @param ocResourceCollectionHandle Handle to the collection resource\r
+ * @param ocResourceHandleList List of resource handles to be unbound from the collection\r
+ * resource\r
+ * @throws OcException\r
+ */\r
+ public static void unbindResources(\r
+ OcResourceHandle ocResourceCollectionHandle,\r
+ List<OcResourceHandle> ocResourceHandleList) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.unbindResources0(\r
+ ocResourceCollectionHandle,\r
+ ocResourceHandleList.toArray(\r
+ new OcResourceHandle[ocResourceHandleList.size()])\r
+ );\r
+ }\r
+ \r
+ private static native void unbindResources0(\r
+ OcResourceHandle ocResourceCollectionHandle,\r
+ OcResourceHandle[] ocResourceHandleArray) throws OcException;\r
+ \r
+ /**\r
+ * Binds a type to a particular resource\r
+ *\r
+ * @param ocResourceHandle handle to the resource\r
+ * @param resourceTypeName new typename to bind to the resource\r
+ * @throws OcException\r
+ */\r
+ public static void bindTypeToResource(\r
+ OcResourceHandle ocResourceHandle,\r
+ String resourceTypeName) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.bindTypeToResource0(ocResourceHandle, resourceTypeName);\r
+ }\r
+ \r
+ private static native void bindTypeToResource0(\r
+ OcResourceHandle ocResourceHandle,\r
+ String resourceTypeName) throws OcException;\r
+ \r
+ /**\r
+ * Binds an interface to a particular resource\r
+ *\r
+ * @param ocResourceHandle handle to the resource\r
+ * @param resourceInterfaceName new interface to bind to the resource\r
+ * @throws OcException\r
+ */\r
+ public static void bindInterfaceToResource(\r
+ OcResourceHandle ocResourceHandle,\r
+ String resourceInterfaceName) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.bindInterfaceToResource0(ocResourceHandle, resourceInterfaceName);\r
+ }\r
+ \r
+ private static native void bindInterfaceToResource0(\r
+ OcResourceHandle ocResourceHandle,\r
+ String resourceInterfaceName) throws OcException;\r
+ \r
+ /**\r
+ * Start Presence announcements.\r
+ *\r
+ * @param ttl time to live in seconds\r
+ * @throws OcException\r
+ */\r
+ public static void startPresence(int ttl) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.startPresence0(ttl);\r
+ }\r
+ \r
+ private static native void startPresence0(int ttl) throws OcException;\r
+ \r
+ /**\r
+ * Stop Presence announcements.\r
+ *\r
+ * @throws OcException\r
+ */\r
+ public static void stopPresence() throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.stopPresence0();\r
+ }\r
+ \r
+ private static native void stopPresence0() throws OcException;\r
+ \r
+ /**\r
+ * Subscribes to a server's presence change events. By making this subscription, every time a\r
+ * server adds/removes/alters a resource, starts or is intentionally stopped\r
+ *\r
+ * @param host The IP address/addressable name of the server to subscribe to\r
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,\r
+ * IPV6, ALL\r
+ * @param onPresenceListener listener that will receive notifications/subscription events\r
+ * @return a handle object that can be used to identify this subscription request. It can be\r
+ * used to unsubscribe from these events in the future\r
+ * @throws OcException\r
+ */\r
+ public static OcPresenceHandle subscribePresence(\r
+ String host,\r
+ OcConnectivityType connectivityType,\r
+ OnPresenceListener onPresenceListener) throws OcException {\r
+ OcPlatform.initCheck();\r
+ return OcPlatform.subscribePresence0(\r
+ host,\r
+ connectivityType.getValue(),\r
+ onPresenceListener\r
+ );\r
+ }\r
+ \r
+ private static native OcPresenceHandle subscribePresence0(\r
+ String host,\r
+ int connectivityType,\r
+ OnPresenceListener onPresenceListener) throws OcException;\r
+ \r
+ /**\r
+ * Subscribes to a server's presence change events. By making this subscription, every time a\r
+ * server adds/removes/alters a resource, starts or is intentionally stopped\r
+ *\r
+ * @param host The IP address/addressable name of the server to subscribe to\r
+ * @param resourceType a resource type specified as a filter for subscription events.\r
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,\r
+ * IPV6, ALL\r
+ * @param onPresenceListener listener that will receive notifications/subscription events\r
+ * @return a handle object that can be used to identify this subscription request. It can be\r
+ * used to unsubscribe from these events in the future\r
+ * @throws OcException\r
+ */\r
+ public static OcPresenceHandle subscribePresence(\r
+ String host,\r
+ String resourceType,\r
+ OcConnectivityType connectivityType,\r
+ OnPresenceListener onPresenceListener) throws OcException {\r
+ OcPlatform.initCheck();\r
+ return OcPlatform.subscribePresence1(\r
+ host,\r
+ resourceType,\r
+ connectivityType.getValue(),\r
+ onPresenceListener);\r
+ }\r
+ \r
+ private static native OcPresenceHandle subscribePresence1(\r
+ String host,\r
+ String resourceType,\r
+ int connectivityType,\r
+ OnPresenceListener onPresenceListener) throws OcException;\r
+ \r
+ /**\r
+ * Unsubscribes from a previously subscribed server's presence events. Note that you may for\r
+ * a short time still receive events from the server since it may take time for the\r
+ * unsubscribe to take effect.\r
+ *\r
+ * @param ocPresenceHandle the handle object provided by the subscribePresence call that\r
+ * identifies this subscription\r
+ * @throws OcException\r
+ */\r
+ public static void unsubscribePresence(\r
+ OcPresenceHandle ocPresenceHandle) throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.unsubscribePresence0(ocPresenceHandle);\r
+ }\r
+ \r
+ private static native void unsubscribePresence0(\r
+ OcPresenceHandle ocPresenceHandle) throws OcException;\r
+ \r
+ /**\r
+ * Creates a resource proxy object so that get/put/observe functionality can be used without\r
+ * discovering the object in advance. Note that the consumer of this method needs to provide\r
+ * all of the details required to correctly contact and observe the object. If the consumer\r
+ * lacks any of this information, they should discover the resource object normally.\r
+ * Additionally, you can only create this object if OcPlatform was initialized to be a Client\r
+ * or Client/Server.\r
+ *\r
+ * @param host a string containing a resolvable host address of the server holding\r
+ * the resource\r
+ * @param uri the rest of the resource's URI that will permit messages to be\r
+ * properly routed.\r
+ * Example: /a/light\r
+ * @param connectivityType a type of connectivity indicating the interface. Example: IPV4,\r
+ * IPV6, ALL\r
+ * @param isObservable a boolean containing whether the resource supports observation\r
+ * @param resourceTypeList a collection of resource types implemented by the resource\r
+ * @param interfaceList a collection of interfaces that the resource supports/implements\r
+ * @return new resource object\r
+ * @throws OcException\r
+ */\r
+ public static OcResource constructResourceObject(\r
+ String host,\r
+ String uri,\r
+ OcConnectivityType connectivityType,\r
+ boolean isObservable,\r
+ List<String> resourceTypeList,\r
+ List<String> interfaceList) throws OcException {\r
+ OcPlatform.initCheck();\r
+ return OcPlatform.constructResourceObject0(\r
+ host,\r
+ uri,\r
+ connectivityType.getValue(),\r
+ isObservable,\r
+ resourceTypeList.toArray(new String[resourceTypeList.size()]),\r
+ interfaceList.toArray(new String[interfaceList.size()])\r
+ );\r
+ }\r
+ \r
+ private static native OcResource constructResourceObject0(\r
+ String host,\r
+ String uri,\r
+ int connectivityType,\r
+ boolean isObservable,\r
+ String[] resourceTypes,\r
+ String[] interfaces) throws OcException;\r
+ \r
+ /**\r
+ * Allows application entity handler to send response to an incoming request.\r
+ *\r
+ * @param ocResourceResponse resource response\r
+ * @throws OcException\r
+ */\r
+ public static void sendResponse(OcResourceResponse ocResourceResponse)\r
+ throws OcException {\r
+ OcPlatform.initCheck();\r
+ OcPlatform.sendResponse0(ocResourceResponse);\r
+ }\r
+ \r
+ private static native void sendResponse0(OcResourceResponse ocResourceResponse)\r
+ throws OcException;\r
+ \r
+ /**\r
+ * An OnResourceFoundListener can be registered via the OcPlatform.findResource call.\r
+ * Event listeners are notified asynchronously\r
+ */\r
+ public interface OnResourceFoundListener {\r
+ public void onResourceFound(OcResource resource);\r
+ }\r
+ \r
+ /**\r
+ * An OnDeviceFoundListener can be registered via the OcPlatform.getDeviceInfo call.\r
+ * Event listeners are notified asynchronously\r
+ */\r
+ public interface OnDeviceFoundListener {\r
+ public void onDeviceFound(OcRepresentation ocRepresentation);\r
+ }
+
+ /**
+ * An OnPlatformFoundListener can be registered via the OcPlatform.getPlatformInfo call.
+ * Event listeners are notified asynchronously
+ */
+ public interface OnPlatformFoundListener {
+ public void onPlatformFound(OcRepresentation ocRepresentation);
- }
-
- /**
- * An OnPresenceListener can be registered via the OcPlatform.subscribePresence call.
- * Event listeners are notified asynchronously
- */
- public interface OnPresenceListener {
- public void onPresence(OcPresenceStatus ocPresenceStatus, int nonce, String hostAddress);
- }
-
- /**
- * An EntityHandler can be registered via the OcPlatform.registerResource call.
- * Event listeners are notified asynchronously
- */
- public interface EntityHandler {
- public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest);
- }
-
- private static void initCheck() {
- if (!sIsPlatformInitialized) {
- throw new IllegalStateException("OcPlatform must be configured by making a call to " +
- "OcPlatform.Configure before any other API calls are permitted");
- }
- }
- }
+ }\r
+ \r
+ /**\r
+ * An OnPresenceListener can be registered via the OcPlatform.subscribePresence call.\r
+ * Event listeners are notified asynchronously\r
+ */\r
+ public interface OnPresenceListener {\r
+ public void onPresence(OcPresenceStatus ocPresenceStatus, int nonce, String hostAddress);\r
+ }\r
+ \r
+ /**\r
+ * An EntityHandler can be registered via the OcPlatform.registerResource call.\r
+ * Event listeners are notified asynchronously\r
+ */\r
+ public interface EntityHandler {\r
+ public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest);\r
+ }\r
+ \r
+ private static void initCheck() {\r
+ if (!sIsPlatformInitialized) {\r
+ throw new IllegalStateException("OcPlatform must be configured by making a call to " +\r
+ "OcPlatform.Configure before any other API calls are permitted");\r
+ }\r
+ }\r
+ }\r
extern const char * SVR_DB_FILE_NAME;
extern const char * OIC_MI_DEF;
-extern const char * OIC_RSRC_CORE_URI;
-extern const char * OIC_RSRC_CORE_D_URI;
-extern const char * OIC_RSRC_CORE_P_URI;
-extern const char * OIC_RSRC_PRESENCE_URI;
-extern const char * OIC_RSRC_TYPES_D_URI;
-
//ACL
extern const char * OIC_RSRC_TYPE_SEC_ACL;
extern const char * OIC_RSRC_ACL_URI;
extern OicUuid_t WILDCARD_SUBJECT_ID;
extern size_t WILDCARD_SUBJECT_ID_LEN;
+ extern const char * WILDCARD_RESOURCE_URI;
//Ownership Transfer Methods
extern const char * OXM_JUST_WORKS;
######################################################################
provisioning_env.AppendUnique(CPPPATH = [
'../../stack/include',
+ '../../stack/include/internal',
'../../ocrandom/include',
'../../logger/include',
'../../../oc_logger/include',
provisioningserver = provisioning_env.StaticLibrary('ocspapi', provisioning_src)
provisioning_env.InstallTarget(provisioningserver, 'libocspapi')
+provisioning_env.UserInstallTargetLib(provisioningserver, 'libocspapi')
- SConscript('sample/SConscript')
+ if target_os in ['linux']:
+ SConscript('sample/SConscript')
+
#include <stdbool.h>
#include "cJSON.h"
+#include "ocpayload.h"
+#include "ocpayloadcbor.h"
#include "oic_malloc.h"
#include "logger.h"
#include "cacommon.h"
- #include "ocpayload.h"
#include "cainterface.h"
#include "provisioningmanager.h"
#include "credentialgenerator.h"
#include "pstatresource.h"
#include "srmresourcestrings.h"
#include "credresource.h"
+ #include "oic_string.h"
+ #include "secureresourcemanager.h"
+
typedef enum
{
#define COAPS_QUERY "coaps://%s:%d%s"
#define CA_SECURE_PORT 5684
- void (*handler)(const CAEndpoint_t *, const CAResponseInfo_t *);
+ bool (*handler)(const CAEndpoint_t *, const CAResponseInfo_t *);
/**
* CA token to keep track of response.
const char *resourceUri,
char *payload, int payloadLen)
{
++ if (payload && '\0' != (*(payload + payloadLen)))
++ {
++ OC_LOG(ERROR, TAG, "Payload not properly terminated.");
++ return CA_STATUS_INVALID_PARAM;
++ }
++
if (CA_STATUS_OK != CAGenerateToken(&gToken, CA_MAX_TOKEN_LEN))
{
OC_LOG(ERROR, TAG, "Error while generating token");
return CA_MEMORY_ALLOC_FAILED;
}
+
CAEndpoint_t *endpoint = NULL;
if (CA_STATUS_OK != CACreateEndpoint((CATransportFlags_t)secure,
devAddr->adapter, devAddr->addr,
CADestroyEndpoint(endpoint);
return CA_STATUS_FAILED;
}
-- CAMessageType_t msgType = CA_MSG_CONFIRM;
- CAInfo_t requestData = { 0 };
- requestData.token = gToken;
- requestData.tokenLength = CA_MAX_TOKEN_LEN;
-- if (payload && '\0' != (*(payload + payloadLen)))
-- {
-- OC_LOG(ERROR, TAG, "Payload not properly terminated.");
-- CADestroyEndpoint(endpoint);
-- return CA_STATUS_INVALID_PARAM;
-- }
- OCSecurityPayload secPayload;
- requestData.payload = payload;
- requestData.type = msgType;
- requestData.resourceUri = (CAURI_t)resourceUri;
+
- CARequestInfo_t requestInfo = { 0 };
++ OCSecurityPayload secPayload = {};
+ secPayload.securityData = payload;
+ secPayload.base.type = PAYLOAD_TYPE_SECURITY;
- CARequestInfo_t requestInfo = { 0 };
++
++ CARequestInfo_t requestInfo = {};
requestInfo.method = method;
- requestInfo.info = requestData;
requestInfo.isMulticast = false;
- requestInfo.info.type = msgType;
+ OCConvertPayload((OCPayload*)(&secPayload), &requestInfo.info.payload,
+ &requestInfo.info.payloadSize);
- requestInfo.info.resourceUri = resourceUri;
++
++ requestInfo.info.type = CA_MSG_CONFIRM;
+ requestInfo.info.token = gToken;
+ requestInfo.info.tokenLength = CA_MAX_TOKEN_LEN;
- requestInfo.isMulticast = false;
++ requestInfo.info.resourceUri = (CAURI_t)resourceUri;
+
CAResult_t caResult = CA_STATUS_OK;
caResult = CASendRequest(endpoint, &requestInfo);
if (CA_STATUS_OK != caResult)
/**
* addDevice to list.
*
- * @param[in] ip IP of target device.
- * @param[in] port port of remote server.
- * @param[in] adapter adapter type of endpoint.
- * @param[in] doxm pointer to doxm instance.
+ * @param[in] endpoint Endpoint information
+ * @param[in] doxm pointer to doxm instance.
* @return SP_RESULT_SUCCESS for success and errorcode otherwise.
*/
- static SPResult addDevice(const char *ip, int port, OCTransportAdapter adapter, OicSecDoxm_t *doxm)
+ static SPResult addDevice(const CAEndpoint_t *endpoint, OicSecDoxm_t* doxm)
{
- if (NULL == ip || 0 >= port)
+ if (NULL == endpoint)
{
return SP_RESULT_INVALID_PARAM;
}
return SP_RESULT_MEM_ALLOCATION_FAIL;
}
- SPStringCopy(ptr->endpoint.addr, ip, MAX_ADDR_STR_SIZE);
- ptr->endpoint.port = port;
- ptr->endpoint.adapter = adapter;
-
+ memcpy(&(ptr->endpoint), endpoint, sizeof(CAEndpoint_t));
ptr->doxm = doxm;
+
ptr->next = NULL;
if (NULL == gStartOfDiscoveredDevices)
return SP_RESULT_SUCCESS;
}
- OCStackResult OCParsePayload(OCPayload** outPayload, const uint8_t* payload, size_t payloadSize);
/**
* Response handler for discovery.
*
* @param[in] object Remote endpoint object
* @param[in] requestInfo Datastructure containing request information.
+ * @return true is CA token matches request token, false otherwise.
*/
- static void ProvisionDiscoveryHandler(const CAEndpoint_t *object,
+ static bool ProvisionDiscoveryHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
if ((gStateManager & SP_DISCOVERY_STARTED) && gToken)
}
else
{
- // temp logic for trimming oc attribute from the json.
- // JSONToBin should handle oc attribute.
- char *pTempPayload = (char *)OICMalloc(strlen(responseInfo->info.payload));
- if (NULL == pTempPayload)
+ OCPayload* payload;
+ OCStackResult result = OCParsePayload(&payload, responseInfo->info.payload,
+ responseInfo->info.payloadSize);
+
+ OicSecDoxm_t *ptrDoxm = NULL;
+
+ if(result == OC_STACK_OK && payload->type == PAYLOAD_TYPE_SECURITY)
{
- OC_LOG(ERROR, TAG, "Error while Memory allocation.");
- gStateManager = gStateManager | SP_DISCOVERY_ERROR;
- return true;
+ ptrDoxm = JSONToDoxmBin(((OCSecurityPayload*)payload)->securityData);
}
- strcpy(pTempPayload, responseInfo->info.payload + 8);
- pTempPayload[strlen(pTempPayload) - 2] = '\0';
- OC_LOG_V(DEBUG, TAG, "Trimmed payload: %s", pTempPayload);
- OicSecDoxm_t *ptrDoxm = JSONToDoxmBin(pTempPayload);
- OICFree(pTempPayload);
-
if (NULL == ptrDoxm)
{
OC_LOG(INFO, TAG, "Ignoring malformed JSON");
{
OC_LOG(DEBUG, TAG, "Successfully converted doxm json to bin.");
- SPResult res = addDevice(object->addr, object->port, object->adapter, ptrDoxm);
+ SPResult res = addDevice(object, ptrDoxm);
if (SP_RESULT_SUCCESS != res)
{
OC_LOG(ERROR, TAG, "Error while adding data to linkedlist.");
gStateManager = gStateManager | SP_DISCOVERY_ERROR;
DeleteDoxmBinData(ptrDoxm);
- return;
+ return true;
}
OC_LOG(INFO, TAG, "Exiting ProvisionDiscoveryHandler.");
gStateManager |= SP_DISCOVERY_DONE;
}
}
+ return true;
}
}
+ return false;
}
/**
*
* @param[in] object Remote endpoint object
* @param[in] requestInfo Datastructure containing request information.
+ * @return true is CA token matches request token, false otherwise.
*/
- static void OwnerShipTransferModeHandler(const CAEndpoint_t *object,
+ static bool OwnerShipTransferModeHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
if ((gStateManager & SP_UP_OWN_TR_METH_STARTED) && gToken)
gStateManager |= SP_UP_OWN_TR_METH_ERROR;
OC_LOG(ERROR, TAG, "Error in OwnerShipTransferModeHandler.");
}
+ return true;
}
}
+ return false;
}
/**
*
* @param[in] object Remote endpoint object
* @param[in] requestInfo Datastructure containing request information.
+ * @return true is CA token matches request token, false otherwise.
*/
- static void ListMethodsHandler(const CAEndpoint_t *object,
+ static bool ListMethodsHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
if ((gStateManager & SP_LIST_METHODS_STARTED) && gToken)
{
OC_LOG(ERROR, TAG, "response payload is null.");
gStateManager |= SP_LIST_METHODS_ERROR;
- return;
+ return true;
}
- char *pTempPayload = (char *)OICMalloc(strlen(responseInfo->info.payload));
- if (NULL == pTempPayload)
+ OCPayload* payload;
+ OCStackResult result = OCParsePayload(&payload, responseInfo->info.payload,
+ responseInfo->info.payloadSize);
+
+ OicSecPstat_t *pstat = NULL;
+
+ if(result == OC_STACK_OK && payload->type == PAYLOAD_TYPE_SECURITY)
{
- OC_LOG(ERROR, TAG, "Error in memory allocation.");
- gStateManager |= SP_LIST_METHODS_ERROR;
- return true;
+ pstat = JSONToPstatBin(((OCSecurityPayload*)payload)->securityData);
}
- strcpy(pTempPayload, responseInfo->info.payload + 8);
- pTempPayload[strlen(pTempPayload) - 2] = '\0';
-
- OicSecPstat_t *pstat = JSONToPstatBin(pTempPayload);
if (NULL == pstat)
{
OC_LOG(ERROR, TAG, "Error while converting json to pstat bin");
- OICFree(pTempPayload);
gStateManager |= SP_LIST_METHODS_ERROR;
- return;
+ return true;
}
- OICFree(pTempPayload);
DeletePstatBinData(gPstat);
gPstat = pstat;
OC_LOG(INFO, TAG, "Exiting ListMethodsHandler.");
}
+ return true;
}
}
+ return false;
}
/**
*
* @param[in] object Remote endpoint object
* @param[in] requestInfo Datastructure containing request information.
+ * @return true is CA token matches request token, false otherwise.
*/
- static void OperationModeUpdateHandler(const CAEndpoint_t *object,
+ static bool OperationModeUpdateHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
if ((gStateManager & SP_UPDATE_OP_MODE_STARTED) && gToken)
gStateManager |= SP_UPDATE_OP_MODE_ERROR;
OC_LOG(ERROR, TAG, "Error in OperationModeUpdateHandler.");
}
+ return true;
}
}
+ return false;
}
/**
*
* @param[in] object Remote endpoint object
* @param[in] requestInfo Datastructure containing request information.
+ * @return true is CA token matches request token, false otherwise.
*/
- static void OwnerShipUpdateHandler(const CAEndpoint_t *object,
+ static bool OwnerShipUpdateHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
if ((gStateManager & SP_UPDATE_OWNER_STARTED) && gToken)
gStateManager |= SP_UPDATE_OWNER_ERROR;
OC_LOG(ERROR, TAG, "Error in OwnerShipUpdateHandler.");
}
+ return true;
}
}
+ return false;
}
/**
*
* @param[in] object Remote endpoint object
* @param[in] requestInfo Datastructure containing request information.
+ * @return true is CA token matches request token, false otherwise.
*/
- static void ACLProvisioningHandler(const CAEndpoint_t *object,
+ static bool ACLProvisioningHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
if ((gStateManager & SP_PROV_ACL_STARTED) && gToken)
OC_LOG(ERROR, TAG, "Error in ACLProvisioningHandler.");
gStateManager |= SP_PROV_ACL_ERROR;
}
+ return true;
}
}
+ return false;
}
/**
*
* @param[in] object Remote endpoint object
* @param[in] requestInfo Datastructure containing request information.
+ * @return true is CA token matches request token, false otherwise.
*/
- static void FinalizeProvisioningHandler(const CAEndpoint_t *object,
+ static bool FinalizeProvisioningHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
if ((gStateManager & SP_UP_HASH_STARTED) && gToken)
gStateManager |= SP_UP_HASH_ERROR;
OC_LOG(ERROR, TAG, "Error in FinalizeProvisioningHandler.");
}
+ return true;
}
}
+ return false;
}
/**
*
* @param[in] object Remote endpoint object
* @param[in] requestInfo Datastructure containing request information.
+ * @return true is CA token matches request token, false otherwise.
*/
- static void CredProvisioningHandler(const CAEndpoint_t *object,
+ static bool CredProvisioningHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
if ((gStateManager & SP_PROV_CRED_STARTED) && gToken)
gStateManager |= SP_PROV_CRED_ERROR;
OC_LOG(ERROR, TAG, "Error in CredProvisioningHandler.");
}
+ return true;
}
}
+ return false;
}
/**
*
* @param[in] object Remote endpoint object
* @param[in] responseInfo Datastructure containing response information.
+ * @return true if received response is for provisioning API false otherwise.
*/
- static void SPResponseHandler(const CAEndpoint_t *object,
+ static bool SPResponseHandler(const CAEndpoint_t *object,
const CAResponseInfo_t *responseInfo)
{
+ bool isProvResponse = false;
if ((NULL != responseInfo) && (NULL != responseInfo->info.token))
{
- handler(object, responseInfo);
+ isProvResponse = handler(object, responseInfo);
}
- }
-
- /**
- * Error Handler
- *
- * @param[in] object Remote endpoint object
- * @param[in] errorInfo Datastructure containing error information.
- */
- static void SPErrorHandler(const CAEndpoint_t *object,
- const CAErrorInfo_t *errorInfo)
- {
- OC_LOG(INFO, TAG, "Error Handler.");
- }
-
- /**
- * Request Handler
- *
- * @param[in] object Remote endpoint object
- * @param[in] requestInfo Datastructure containing request information.
- */
- static void SPRequestHandler(const CAEndpoint_t *object, const CARequestInfo_t *requestInfo)
- {
- OC_LOG(INFO, TAG, "Request Handler.");
+ return isProvResponse;
}
/**
requestData.token = gToken;
requestData.tokenLength = CA_MAX_TOKEN_LEN;
requestData.payload = NULL;
+ requestData.payloadSize = 0;
requestData.type = msgType;
requestData.resourceUri = DOXM_OWNED_FALSE_MULTICAST_QUERY;
CARequestInfo_t requestInfo = { 0 };
* @param[in] deviceInfo Provisioning context
* @return SP_SUCCESS on success
*/
- static SPResult initiateDtlsHandshake(SPTargetDeviceInfo_t *deviceInfo)
+ static SPResult initiateDtlsHandshake(const CAEndpoint_t *endpoint)
{
- CAResult_t caresult = CASelectCipherSuite(TLS_ECDH_anon_WITH_AES_128_CBC_SHA);
-
- if (CA_STATUS_OK != caresult)
- {
- OC_LOG(ERROR, TAG, "Unable to select cipher suite");
- return SP_RESULT_INTERNAL_ERROR;
- }
- OC_LOG(INFO, TAG, "Anonymous cipher suite selected. ");
- caresult = CAEnableAnonECDHCipherSuite(true);
+ CAResult_t caresult = CAEnableAnonECDHCipherSuite(true);
if (CA_STATUS_OK != caresult)
{
OC_LOG_V(ERROR, TAG, "Unable to enable anon cipher suite");
}
OC_LOG(INFO, TAG, "Anonymous cipher suite Enabled.");
- //TODO: It is a temporary fix. Revisit it.
- deviceInfo->endpoint.port = CA_SECURE_PORT;
- caresult = CAInitiateHandshake((CAEndpoint_t *)&deviceInfo->endpoint);
+ caresult = CAInitiateHandshake(endpoint);
if (CA_STATUS_OK != caresult)
{
OC_LOG_V(ERROR, TAG, "DTLS handshake failure.");
CAResult_t result = sendCARequest(CA_PUT,
&selectedDeviceInfo->endpoint,
- OC_SECURE,
+ OC_FLAG_SECURE,
OIC_RSRC_DOXM_URI,
payloadBuffer, payloadLen);
if (CA_STATUS_OK != result)
{
SPResult result = SP_RESULT_INTERNAL_ERROR;
- CAEndpoint_t endpoint = {0};
- strncpy(endpoint.addr, selectedDeviceInfo->endpoint.addr, MAX_ADDR_STR_SIZE_CA);
- endpoint.addr[MAX_ADDR_STR_SIZE_CA - 1] = '\0';
+ CAEndpoint_t endpoint = {};
+ OICStrcpy(endpoint.addr, MAX_ADDR_STR_SIZE_CA, selectedDeviceInfo->endpoint.addr);
endpoint.port = CA_SECURE_PORT;
OicUuid_t provTooldeviceID = {};
}
if (*selectedOperationMode == SINGLE_SERVICE_CLIENT_DRIVEN)
{
- res = initiateDtlsHandshake(selectedDeviceInfo);
- if (SP_RESULT_SUCCESS != res)
+ CAEndpoint_t endpoint = {0};
+ OICStrcpy(endpoint.addr, MAX_ADDR_STR_SIZE_CA, selectedDeviceInfo->endpoint.addr);
+ endpoint.port = CA_SECURE_PORT;
+
+ res = initiateDtlsHandshake(&endpoint);
+ if (SP_RESULT_SUCCESS == res)
{
- OC_LOG(ERROR, TAG, "Error while DTLS handshake.");
- return SP_RESULT_INTERNAL_ERROR;
- }
+ selectedDeviceInfo->endpoint.port = CA_SECURE_PORT;
+ res = sendOwnershipInfo(timeout, selectedDeviceInfo);
+ if (SP_RESULT_SUCCESS != res)
+ {
+ OC_LOG(ERROR, TAG, "Error while updating ownership information.");
+ }
+ res = saveOwnerPSK(selectedDeviceInfo);
- res = sendOwnershipInfo(timeout, selectedDeviceInfo);
- if (SP_RESULT_SUCCESS != res)
+ //Close temporal DTLS session
+ if(CA_STATUS_OK != CACloseDtlsSession(&endpoint))
+ {
+ OC_LOG(WARNING, TAG, "doOwnerShipTransfer() : failed to close the dtls session");
+ }
+ }
+ else
{
- OC_LOG(ERROR, TAG, "Error while updating ownership information.");
- return SP_RESULT_INTERNAL_ERROR;
+ OC_LOG(ERROR, TAG, "Error during initiating DTLS handshake.");
}
- saveOwnerPSK(selectedDeviceInfo);
+ //Disable Anonymous ECDH cipher suite before leaving this method
+ if(CA_STATUS_OK != CAEnableAnonECDHCipherSuite(false))
+ {
+ OC_LOG(WARNING, TAG, "doOwnerShipTransfer() : failed to disable Anon ECDH cipher suite");
+ }
}
- return SP_RESULT_SUCCESS;
+ return (res != SP_RESULT_SUCCESS) ? SP_RESULT_INTERNAL_ERROR : SP_RESULT_SUCCESS;
}
CAResult_t result = sendCARequest(CA_POST,
&deviceInfo->endpoint,
- OC_SECURE,
+ OC_FLAG_SECURE,
OIC_RSRC_CRED_URI,
credJson, payloadLen);
OICFree(credJson);
return SP_RESULT_TIMEOUT;
}
CADestroyToken(gToken);
+ gStateManager = 0;
return res;
}
OC_LOG(ERROR, TAG, "List is not null can cause memory leak");
return SP_RESULT_INVALID_PARAM;
}
-
- CARegisterHandler(SPRequestHandler, SPResponseHandler, SPErrorHandler);
+ SRMRegisterProvisioningResponseHandler(SPResponseHandler);
SPResult smResponse = SP_RESULT_SUCCESS;
smResponse = findResource(timeout);
if (SP_RESULT_SUCCESS != smResponse)
CAResult_t result = sendCARequest(CA_POST,
&selectedDeviceInfo->endpoint,
- OC_SECURE,
+ OC_FLAG_SECURE,
OIC_RSRC_ACL_URI,
aclString, payloadLen);
OICFree(aclString);
CAResult_t result = sendCARequest(CA_PUT,
&selectedDeviceInfo->endpoint,
- OC_SECURE,
+ OC_FLAG_SECURE,
OIC_RSRC_PSTAT_URI,
payloadBuffer, payloadLen);
OICFree(payloadBuffer);
return SP_RESULT_TIMEOUT;
}
- CAEndpoint_t endpoint = {0};
- strncpy(endpoint.addr, selectedDeviceInfo->endpoint.addr, MAX_ADDR_STR_SIZE_CA);
- endpoint.addr[DEV_ADDR_SIZE_MAX - 1] = '\0';
+ CAEndpoint_t endpoint = {};
+ OICStrcpy(endpoint.addr, MAX_ADDR_STR_SIZE_CA, selectedDeviceInfo->endpoint.addr);
endpoint.port = CA_SECURE_PORT;
result = CACloseDtlsSession(&endpoint);
if (CA_STATUS_OK != result)
{
- OC_LOG_V(ERROR, TAG, "DTLS handshake failure.");
+ OC_LOG(WARNING, TAG, "Failed to close the DTLS session.");
}
CADestroyToken(gToken);
{
for(size_t n = 0; n < acl->resourcesLen; n++)
{
- if(0 == strcmp(resource, acl->resources[n])) // TODO null terms?
+ if(0 == strcmp(resource, acl->resources[n]) || // TODO null terms?
+ 0 == strcmp(WILDCARD_RESOURCE_URI, acl->resources[n]))
{
return true;
}
{
OC_LOG(INFO, TAG, PCF("ProcessAccessRequest(): getting ACL..."));
currentAcl = GetACLResourceData(context->subject, &savePtr);
- char *tmp = (char*)OICMalloc(sizeof(OicUuid_t) +1);
- memcpy(tmp, context->subject, sizeof(OicUuid_t));
- tmp[sizeof(OicUuid_t) + 1] = '\0';
if(NULL != currentAcl)
{
// Found the subject, so how about resource?
}
}
while((NULL != currentAcl) && (false == context->matchingAclFound));
- }
- if(IsAccessGranted(context->retVal))
- {
- OC_LOG(INFO, TAG, PCF("ProcessAccessRequest(): \
- Leaving ProcessAccessRequest(ACCESS_GRANTED)"));
+
+ if(IsAccessGranted(context->retVal))
+ {
+ OC_LOG(INFO, TAG, PCF("ProcessAccessRequest(): \
+ Leaving ProcessAccessRequest(ACCESS_GRANTED)"));
+ }
+ else
+ {
+ OC_LOG(INFO, TAG, PCF("ProcessAccessRequest(): \
+ Leaving ProcessAccessRequest(ACCESS_DENIED)"));
+ }
}
else
{
OC_LOG(INFO, TAG, PCF("ProcessAccessRequest(): \
- Leaving ProcessAccessRequest(ACCESS_DENIED)"));
+ Leaving ProcessAccessRequest(context is NULL)"));
}
+
}
/**
const char * SVR_DB_FILE_NAME = "oic_svr_db.json";
const char * OIC_MI_DEF = "oic.mi.def";
-const char * OIC_RSRC_CORE_URI = "/oic/res";
-const char * OIC_RSRC_CORE_D_URI = "/oic/res/d";
-const char * OIC_RSRC_CORE_P_URI = "/oic/p";
-const char * OIC_RSRC_PRESENCE_URI = "/oic/ad";
-const char * OIC_RSRC_TYPES_D_URI = "/oic/res/types/d";
-
//ACL
const char * OIC_RSRC_TYPE_SEC_ACL = "oic.sec.acl";
const char * OIC_RSRC_ACL_URI = "/oic/sec/acl";
const char * OIC_JSON_PERIOD_NAME = "period";
OicUuid_t WILDCARD_SUBJECT_ID = {"*"};
- size_t WILDCARD_SUBJECT_ID_LEN = 1 ;
+ size_t WILDCARD_SUBJECT_ID_LEN = 1;
+ const char * WILDCARD_RESOURCE_URI = "*";
//Ownership Transfer Methods
const char * OXM_JUST_WORKS = "oic.sec.doxm.jw";
}
}
+ static FILE* client_open(const char *path, const char *mode)
+ {
+ return fopen("./oic_svr_db_client.json", mode);
+ }
+
int main(int argc, char* argv[]) {
std::ostringstream requestURI;
-
+ OCPersistentStorage ps {client_open, fread, fwrite, fclose, unlink };
try
{
printUsage();
// Create PlatformConfig object
PlatformConfig cfg {
OC::ServiceType::InProc,
- OC::ModeType::Client,
+ OC::ModeType::Both,
"0.0.0.0",
0,
- OC::QualityOfService::LowQos
+ OC::QualityOfService::LowQos,
+ &ps
};
OCPlatform::Configure(cfg);
// makes it so that all boolean values are printed as 'true/false' in this stream
std::cout.setf(std::ios::boolalpha);
// Find all resources
- requestURI << OC_MULTICAST_DISCOVERY_URI << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI;// << "?rt=core.light";
OCPlatform::findResource("", requestURI.str(),
CT_DEFAULT, &foundResource);
#ifndef __INTEL_OCAPI_H_2014_07_10
#define __INTEL_OCAPI_H_2014_07_10
-
#include <string>
#include <sstream>
#include <vector>
* ModeType : indicate whether we want to do server, client or both
* ServerConnectivity : default flags for server
* ClientConnectivity : default flags for client
- * QoS : indicate Quality of Service : LowQos, MidQos,HighQos and NaQos(No quality Defined).
- * QoS : Quality of Service : CONFIRMABLE or NON CONFIRMABLE.
++ * QoS : indicate Quality of Service : LowQos, MidQos,HighQos and NaQos(No quality Defined).
+ * ps : persistant storage Handler structure (open/read/write/close/unlink)
*/
struct PlatformConfig
{
std::string ipAddress; // not used
uint16_t port; // not used
QualityOfService QoS;
+ OCPersistentStorage *ps;
public:
PlatformConfig()
clientConnectivity(CT_DEFAULT),
ipAddress("0.0.0.0"),
port(0),
- QoS(QualityOfService::NaQos)
+ QoS(QualityOfService::NaQos),
+ ps(nullptr)
{}
PlatformConfig(const ServiceType serviceType_,
const ModeType mode_,
OCConnectivityType serverConnectivity_,
OCConnectivityType clientConnectivity_,
- const QualityOfService QoS_)
+ const QualityOfService QoS_,
+ OCPersistentStorage *ps_ = nullptr)
: serviceType(serviceType_),
mode(mode_),
serverConnectivity(serverConnectivity_),
clientConnectivity(clientConnectivity_),
ipAddress(""),
port(0),
- QoS(QoS_)
+ QoS(QoS_),
+ ps(ps_)
{}
// for backward compatibility
PlatformConfig(const ServiceType serviceType_,
const ModeType mode_,
const std::string& ipAddress_,
const uint16_t port_,
- const QualityOfService QoS_)
+ const QualityOfService QoS_,
+ OCPersistentStorage *ps_ = nullptr)
: serviceType(serviceType_),
mode(mode_),
serverConnectivity(CT_DEFAULT),
clientConnectivity(CT_DEFAULT),
ipAddress(ipAddress_),
port(port_),
- QoS(QoS_)
+ QoS(QoS_),
+ ps(ps_)
{}
};
const std::string BATCH_INTERFACE = "oic.if.b";
// Used in GET, PUT, POST methods on links to other remote resources of a group.
- const std::string GROUP_INTERFACE = "oc.mi.grp";
+ const std::string GROUP_INTERFACE = "oic.mi.grp";
typedef std::function<void(std::shared_ptr<OCResource>)> FindCallback;
//
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-#include <cereal/cereal.hpp>
-#include <cereal/types/memory.hpp>
-#include <cereal/types/vector.hpp>
-#include <cereal/archives/json.hpp>
-
#include <StringConstants.h>
+#include "ocpayload.h"
+#include "ocrandom.h"
namespace OC
{
class ListenOCContainer
{
private:
- const OCDevAddr& devAddr, OCDiscoveryPayload* payload)
+ static std::vector<std::string> StringLLToVector(OCStringLL* ll)
+ {
+ std::vector<std::string> strs;
+ while(ll)
+ {
+ strs.push_back(ll->value);
+ ll = ll->next;
+ }
+ return strs;
+ }
+
+ public:
+ ListenOCContainer(std::weak_ptr<IClientWrapper> cw,
- const OCDevAddr& m_devAddr;
++ OCDevAddr& devAddr, OCDiscoveryPayload* payload)
+ : m_clientWrapper(cw), m_devAddr(devAddr)
+ {
+ OCResourcePayload* res = payload->resources;
+
+ while(res)
+ {
+ char uuidString[UUID_STRING_SIZE];
+ if(OCConvertUuidToString(res->sid, uuidString) != RAND_UUID_OK)
+ {
+ uuidString[0]= '\0';
+ }
+
++ if (res->secure)
++ {
++ m_devAddr.flags =
++ (OCTransportFlags)(OC_FLAG_SECURE | m_devAddr.flags);
++ }
++
++ if (res->port != 0)
++ {
++ m_devAddr.port = res->port;
++ }
++
+ m_resources.push_back(std::shared_ptr<OC::OCResource>(
+ new OC::OCResource(m_clientWrapper, m_devAddr,
+ std::string(res->uri),
+ std::string(uuidString),
+ (res->bitmap & OC_OBSERVABLE) == OC_OBSERVABLE,
+ StringLLToVector(res->types),
+ StringLLToVector(res->interfaces)
+ )));
+ res = res->next;
+ }
+
+ }
+
+ const std::vector<std::shared_ptr<OCResource>>& Resources() const
+ {
+ return m_resources;
+ }
+ private:
+ std::vector<std::shared_ptr<OC::OCResource>> m_resources;
+ std::weak_ptr<IClientWrapper> m_clientWrapper;
++ OCDevAddr& m_devAddr;
+ };
+ /*
+ class ListenOCContainer
+ {
+ private:
enum class OCSecureType
{
NotSecure,
Secure
};
- class ListenResourceContainer
+ class DiscoveredResources
{
- class ListenResourcePolicyContainer
+ class Resource
{
friend class cereal::access;
- friend class ListenResourceContainer;
- friend class ListenResourcePropertiesContainer;
- template<class Archive>
- void serialize(Archive& ar)
+ class ResourcePolicy
{
- m_secure = false;
- m_port = -1;
+ friend class cereal::access;
+ friend class Resource;
- try
+ template<class Archive>
+ void serialize(Archive& ar)
{
- m_observable = false;
- ar(cereal::make_nvp(OC::Key::BMKEY, m_bm));
- // In case of observable
- if(m_bm & OC_OBSERVABLE)
+ try
+ {
+ m_observable = false;
+ ar(cereal::make_nvp(OC::Key::BMKEY, m_bm));
+
+ if(m_bm & OC_OBSERVABLE)
+ {
+ m_observable = true;
+ }
+ }
+ catch(cereal::Exception&)
{
- m_observable = true;
+ ar.setNextName(nullptr);
}
+
+ try
+ {
+ m_secure = false;
+ int secureTemp;
+ ar(cereal::make_nvp(OC::Key::SECUREKEY, secureTemp));
+ m_secure = secureTemp != 0;
+
+ m_port = -1;
+ ar(cereal::make_nvp(OC::Key::PORTKEY, m_port));
+ }
+ catch(cereal::Exception&)
+ {
+ ar.setNextName(nullptr);
+ }
+ }
+
+ bool m_observable;
+ uint8_t m_bm;
+ bool m_secure;
+ int m_port;
+ };
+
+ template <class Archive>
+ void serialize(Archive& ar)
+ {
+ try
+ {
+ ar(cereal::make_nvp(OC::Key::URIKEY, m_uri));
+ m_loaded = true;
}
catch(cereal::Exception&)
{
ar.setNextName(nullptr);
}
+
try
{
- int secureTemp;
- ar(cereal::make_nvp(OC::Key::SECUREKEY, secureTemp));
- m_secure = secureTemp != 0;
-
- ar(cereal::make_nvp(OC::Key::PORTKEY, m_port));
+ ar(cereal::make_nvp(OC::Key::RESOURCETYPESKEY,m_resourceTypes));
+ m_loaded = true;
}
catch(cereal::Exception&)
{
ar.setNextName(nullptr);
}
- }
-
- bool m_observable;
- uint8_t m_bm;
- bool m_secure;
- int m_port;
- };
-
- class ListenResourcePropertiesContainer
- {
- friend class cereal::access;
- friend class ListenResourceContainer;
-
- template<class Archive>
- void serialize(Archive& ar)
- {
try
{
- ar(cereal::make_nvp(OC::Key::POLICYKEY, m_policy));
-
+ ar(cereal::make_nvp(OC::Key::INTERFACESKEY, m_interfaces));
+ m_loaded = true;
}
catch(cereal::Exception&)
{
- // we swallow this exception, since it means the key
- // doesn't exist, allowing these to be optional
- oclog() << "Invalid POLICYKEY"<<std::flush;
ar.setNextName(nullptr);
}
try
{
- ar(cereal::make_nvp(OC::Key::RESOURCETYPESKEY,m_resourceTypes));
+ ar(cereal::make_nvp(OC::Key::POLICYKEY, m_policy));
+ m_loaded = true;
}
catch(cereal::Exception&)
{
ar.setNextName(nullptr);
}
+
+ // Although not expected, a server id as part of a resource's own
+ // representation is legal. It may be used if needed.
try
{
- ar(cereal::make_nvp(OC::Key::INTERFACESKEY, m_interfaces));
+ ar(cereal::make_nvp(OC::Key::DEVICEIDKEY, m_serverId));
+ m_loaded = true;
}
catch(cereal::Exception&)
{
ar.setNextName(nullptr);
}
}
+ public:
+ Resource(): m_loaded(false)
+ {}
+ bool observable() const
+ {
+ return m_policy.m_observable;
+ }
+
+ OCSecureType secureType() const
+ {
+ return m_policy.m_secure ? OCSecureType::Secure : OCSecureType::NotSecure;
+ }
+
+ int port() const
+ {
+ return m_policy.m_port;
+ }
+
+ std::vector<std::string> resourceTypes() const
+ {
+ return m_resourceTypes;
+ }
+
+ std::vector<std::string> interfaces() const
+ {
+ return m_interfaces;
+ }
+
+ bool loaded() const{
+ return m_loaded;
+ }
+
+ std::string m_uri;
+ std::string m_serverId;
std::vector<std::string> m_resourceTypes;
std::vector<std::string> m_interfaces;
- ListenResourcePolicyContainer m_policy;
+ ResourcePolicy m_policy;
+ bool m_loaded;
};
public:
- ListenResourceContainer() : m_loaded(false)
+ DiscoveredResources()
{}
private:
{
try
{
- ar(cereal::make_nvp(OC::Key::URIKEY, m_uri));
- m_loaded=true;
- }
- catch(cereal::Exception&)
- {
- ar.setNextName(nullptr);
- }
- try
- {
- ar(cereal::make_nvp(OC::Key::SERVERIDKEY, m_serverId));
- m_loaded=true;
- }
- catch(cereal::Exception&)
- {
- ar.setNextName(nullptr);
+ ar(cereal::make_nvp(OC::Key::DEVICEIDKEY, m_serverIdOfThisDevice));
}
+ catch(cereal::Exception&) { ar.setNextName(nullptr); }
+
try
{
- ar(cereal::make_nvp(OC::Key::PROPERTYKEY, m_props));
- m_loaded=true;
+ ar(cereal::make_nvp(OC::Key::LINKS, resources));
}
- catch(cereal::Exception&)
- {
- ar.setNextName(nullptr);
- }
-
- }
-
- std::string m_uri;
- std::string m_serverId;
- bool m_loaded;
- ListenResourcePropertiesContainer m_props;
-
- bool loaded() const
- {
- return m_loaded;
- }
-
- bool observable() const
- {
- return m_props.m_policy.m_observable;
- }
-
- OCSecureType secureType() const
- {
- return m_props.m_policy.m_secure ? OCSecureType::Secure : OCSecureType::NotSecure;
- }
-
- int port() const
- {
- return m_props.m_policy.m_port;
- }
-
- std::vector<std::string> resourceTypes() const
- {
- return m_props.m_resourceTypes;
+ catch(cereal::Exception&) { ar.setNextName(nullptr); }
}
- std::vector<std::string> interfaces() const
- {
- return m_props.m_interfaces;
- }
+ std::string m_serverIdOfThisDevice;
+ std::vector<Resource> resources;
};
private:
template <class Archive>
void serialize(Archive& ar)
{
- std::vector<ListenResourceContainer> resources;
+ std::vector<DiscoveredResources> resources;
ar(resources);
}
public:
ListenOCContainer(std::weak_ptr<IClientWrapper> cw,
const OCDevAddr& devAddr, std::stringstream& json)
: m_clientWrapper(cw), m_devAddr(devAddr)
+
{
LoadFromJson(json);
}
{
cereal::JSONInputArchive archive(json);
- std::vector<ListenResourceContainer> resources;
+ std::vector<DiscoveredResources> resources;
archive(cereal::make_nvp(OC::Key::OCKEY, resources));
m_resources.clear();
- for(const auto& res : resources)
+ for(const auto& resourcesAtDevice : resources)
{
- try
+ std::string serverIDForThisResourceRep = resourcesAtDevice.m_serverIdOfThisDevice;
+
+ for (const auto& resource : resourcesAtDevice.resources)
{
- if(res.loaded())
+ try
{
- if (res.secureType() == OCSecureType::Secure)
- {
- m_devAddr.flags =
- (OCTransportFlags)(OC_FLAG_SECURE | m_devAddr.flags);
- }
- if (res.port() != -1)
+ if(resource.loaded())
{
- m_devAddr.port = res.port();
+ m_resources.push_back(std::shared_ptr<OCResource>
+ (
+ new OCResource
+ (
+ m_clientWrapper,
+ m_devAddr,
+ resource.m_uri,
+ serverIDForThisResourceRep,
+ resource.observable(),
+ resource.resourceTypes(),
+ resource.interfaces()
+ )
+ ));
}
- m_resources.push_back(std::shared_ptr<OCResource>(
- new OCResource(m_clientWrapper, m_devAddr,
- res.m_uri, res.m_serverId, res.observable(),
- res.resourceTypes(), res.interfaces())));
}
-
- }
- catch(ResourceInitException& e)
- {
- oclog() << "listenCallback(): failed to create resource: " << e.what()
- << std::flush;
+ catch(ResourceInitException& e)
+ {
+ oclog() << "listenCallback(): failed to create resource: " << e.what()
+ << std::flush;
+ }
}
}
}
- std::vector<std::shared_ptr<OC::OCResource>> m_resources;
- std::weak_ptr<IClientWrapper> m_clientWrapper;
- OCDevAddr m_devAddr;
};
+*/
}
#include "OCApi.h"
#include "OCException.h"
#include "OCUtilities.h"
+#include "ocpayload.h"
#include "oc_logger.hpp"
void OCPlatform_impl::Configure(const PlatformConfig& config)
{
+ OCRegisterPersistentStorageHandler(config.ps);
globalConfig() = config;
}
return result_guard(OC_STACK_ERROR);
}
- std::string payload(pResponse->getResourceRepresentation().getJSONRepresentation());
-
- return result_guard(
+ OCRepPayload* pl = pResponse->getResourceRepresentation().getPayload();
+ OCStackResult result =
OCNotifyListOfObservers(resourceHandle,
&observationIds[0], observationIds.size(),
- payload.c_str(),
- static_cast<OCQualityOfService>(QoS)));
+ pl,
+ static_cast<OCQualityOfService>(QoS));
+ OCRepPayloadDestroy(pl);
+ return result_guard(result);
}
OCResource::Ptr OCPlatform_impl::constructResourceObject(const std::string& host,
std::vector<std::string> resourceTypes = resource->getResourceTypes();
return checked_guard(m_server, &IServerWrapper::registerResource,
- std::ref(resourceHandle), resource->uri(),
+ std::ref(resourceHandle), resource->host() + resource->uri(),
resourceTypes[0]/*"core.remote"*/, DEFAULT_INTERFACE,
(EntityHandler) nullptr, resourceProperty);
}
const std::string gResourceInterface = DEFAULT_INTERFACE;
const uint8_t gResourceProperty = OC_DISCOVERABLE | OC_OBSERVABLE;
OCResourceHandle resourceHandle;
+ //OCPersistent Storage Handlers
+ static FILE* client_open(const char *path, const char *mode)
+ {
+ std::cout << "<===Opening SVR DB file = './oic_svr_db_client.json' with mode = '"<< mode<<"' "<<std::endl;
+ return fopen("./oic_svr_db_client.json", mode);
+ }
// Callbacks
OCEntityHandlerResult entityHandler(std::shared_ptr<OCResourceRequest> request)
{
resourceHandle, uri, type,
gResourceInterface, entityHandler, gResourceProperty));
}
+ //PersistentStorageTest
+ TEST(ConfigureTest, ConfigureDefaultNULLPersistentStorage)
+ {
+ PlatformConfig cfg {
+ OC::ServiceType::InProc,
+ OC::ModeType::Both,
+ "0.0.0.0",
+ 0,
+ OC::QualityOfService::LowQos
+ };
+ OCPlatform::Configure(cfg);
+ EXPECT_NO_THROW(OCPlatform::setDefaultDeviceEntityHandler(nullptr));
+ }
+
+ //PersistentStorageTest
+ TEST(ConfigureTest, ConfigureNULLPersistentStorage)
+ {
+ PlatformConfig cfg {
+ OC::ServiceType::InProc,
+ OC::ModeType::Both,
+ "0.0.0.0",
+ 0,
+ OC::QualityOfService::LowQos,
+ nullptr
+ };
+ OCPlatform::Configure(cfg);
+ EXPECT_NO_THROW(OCPlatform::setDefaultDeviceEntityHandler(nullptr));
+ }
+
+ //PersistentStorageTest
+ TEST(ConfigureTest, ConfigurePersistentStorage)
+ {
+ OCPersistentStorage ps {client_open, fread, fwrite, fclose, unlink };
+ PlatformConfig cfg {
+ OC::ServiceType::InProc,
+ OC::ModeType::Both,
+ "0.0.0.0",
+ 0,
+ OC::QualityOfService::LowQos,
+ &ps
+ };
+ OCPlatform::Configure(cfg);
+ EXPECT_NO_THROW(OCPlatform::setDefaultDeviceEntityHandler(nullptr));
+ }
+
+ //PersistentStorageTest
+ TEST(ConfigureTest, ConfigureNULLHandlersPersistentStorage)
+ {
+ OCPersistentStorage ps {client_open, nullptr, nullptr, nullptr, nullptr };
+ PlatformConfig cfg {
+ OC::ServiceType::InProc,
+ OC::ModeType::Both,
+ "0.0.0.0",
+ 0,
+ OC::QualityOfService::LowQos,
+ &ps
+ };
+ OCPlatform::Configure(cfg);
+ EXPECT_NO_THROW(OCPlatform::setDefaultDeviceEntityHandler(nullptr));
+ }
+
//RegisterResourceTest
TEST(RegisterResourceTest, RegisterSingleResource)
TEST(FindResourceTest, DISABLED_FindResourceValid)
{
std::ostringstream requestURI;
- requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=core.light";
EXPECT_EQ(OC_STACK_OK, OCPlatform::findResource("", requestURI.str(),
CT_DEFAULT, &foundResource));
}
TEST(FindResourceTest, FindResourceNullResourceURI1)
{
std::ostringstream requestURI;
- requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=core.light";
EXPECT_ANY_THROW(OCPlatform::findResource(nullptr, requestURI.str(),
CT_DEFAULT, &foundResource));
}
TEST(FindResourceTest, FindResourceNullHost)
{
std::ostringstream requestURI;
- requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=core.light";
EXPECT_ANY_THROW(OCPlatform::findResource(nullptr, requestURI.str(),
CT_DEFAULT, &foundResource));
}
TEST(FindResourceTest, FindResourceNullresourceHandler)
{
std::ostringstream requestURI;
- requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=core.light";
EXPECT_THROW(OCPlatform::findResource("", requestURI.str(),
CT_DEFAULT, NULL), OC::OCException);
}
TEST(FindResourceTest, DISABLED_FindResourceWithLowQoS)
{
std::ostringstream requestURI;
- requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=core.light";
EXPECT_EQ(OC_STACK_OK,
OCPlatform::findResource("", requestURI.str(), CT_DEFAULT, &foundResource,
OC::QualityOfService::LowQos));
TEST(FindResourceTest, DISABLED_FindResourceWithMidQos)
{
std::ostringstream requestURI;
- requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=core.light";
EXPECT_EQ(OC_STACK_OK,
OCPlatform::findResource("", requestURI.str(), CT_DEFAULT, &foundResource,
OC::QualityOfService::MidQos));
TEST(FindResourceTest, DISABLED_FindResourceWithHighQos)
{
std::ostringstream requestURI;
- requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=core.light";
EXPECT_EQ(OC_STACK_OK,
OCPlatform::findResource("", requestURI.str(), CT_DEFAULT, &foundResource,
OC::QualityOfService::HighQos));
TEST(FindResourceTest, DISABLED_FindResourceWithNaQos)
{
std::ostringstream requestURI;
- requestURI << OC_WELL_KNOWN_QUERY << "?rt=core.light";
+ requestURI << OC_RSRVD_WELL_KNOWN_URI << "?rt=core.light";
EXPECT_EQ(OC_STACK_OK,
OCPlatform::findResource("", requestURI.str(), CT_DEFAULT, &foundResource,
OC::QualityOfService::NaQos));
OC_MULTICAST_IP, CT_DEFAULT, &presenceHandler));
EXPECT_EQ(OC_STACK_OK, OCPlatform::unsubscribePresence(presenceHandle));
}
-
}