Updated android fridgeclient and fridgeserver example.
authorRahul Rahul <rahul.rahul@intel.com>
Fri, 2 Oct 2015 23:40:16 +0000 (16:40 -0700)
committerPatrick Lankswert <patrick.lankswert@intel.com>
Mon, 5 Oct 2015 02:03:02 +0000 (02:03 +0000)
Added a new fridgegroupserver and fridgegroupclient example.
This creates proxy child resources from the fridgeResource.

Change-Id: I235ea32a2a9dd2d596cfd1a3407f2a012d6fe3cd
Signed-off-by: Rahul Rahul <rahul.rahul@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/3439
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Patrick Lankswert <patrick.lankswert@intel.com>
96 files changed:
android/examples/examples.iml
android/examples/fridgeclient/.gitignore [changed mode: 0644->0755]
android/examples/fridgeclient/build.gradle
android/examples/fridgeclient/fridgeclient.iml
android/examples/fridgeclient/src/main/AndroidManifest.xml [changed mode: 0644->0755]
android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/FridgeClient.java [new file with mode: 0755]
android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/fridgeclient/FridgeClient.java [deleted file]
android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/fridgeclient/StringConstants.java [deleted file]
android/examples/fridgeclient/src/main/res/drawable-hdpi/ic_launcher.png [deleted file]
android/examples/fridgeclient/src/main/res/drawable-hdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgeclient/src/main/res/drawable-hdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgeclient/src/main/res/drawable-mdpi/ic_launcher.png [deleted file]
android/examples/fridgeclient/src/main/res/drawable-mdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgeclient/src/main/res/drawable-mdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgeclient/src/main/res/drawable-xhdpi/ic_launcher.png [deleted file]
android/examples/fridgeclient/src/main/res/drawable-xhdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgeclient/src/main/res/drawable-xhdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgeclient/src/main/res/drawable-xxhdpi/ic_launcher.png [deleted file]
android/examples/fridgeclient/src/main/res/drawable-xxhdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgeclient/src/main/res/drawable-xxhdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgeclient/src/main/res/layout/activity_fridge_client.xml [changed mode: 0644->0755]
android/examples/fridgeclient/src/main/res/menu/menu_fridge_client.xml [changed mode: 0644->0755]
android/examples/fridgeclient/src/main/res/values-w820dp/dimens.xml [changed mode: 0644->0755]
android/examples/fridgeclient/src/main/res/values/dimens.xml [changed mode: 0644->0755]
android/examples/fridgeclient/src/main/res/values/strings.xml [changed mode: 0644->0755]
android/examples/fridgeclient/src/main/res/values/styles.xml [changed mode: 0644->0755]
android/examples/fridgegroupclient/.gitignore [new file with mode: 0755]
android/examples/fridgegroupclient/build.gradle [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/AndroidManifest.xml [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/java/org/iotivity/base/examples/FridgeGroupClient.java [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/drawable-hdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/drawable-hdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/drawable-mdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/drawable-mdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/drawable-xhdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/drawable-xhdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/drawable-xxhdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/drawable-xxhdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/layout/activity_fridge_client.xml [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/values-w820dp/dimens.xml [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/values/assets.xml [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/values/dimens.xml [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/values/strings.xml [new file with mode: 0755]
android/examples/fridgegroupclient/src/main/res/values/styles.xml [new file with mode: 0755]
android/examples/fridgegroupserver/.gitignore [new file with mode: 0755]
android/examples/fridgegroupserver/build.gradle [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/AndroidManifest.xml [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/DoorResource.java [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/FridgeGroupServer.java [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/FridgeResource.java [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/LightResource.java [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/Refrigerator.java [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/Resource.java [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/drawable-hdpi/ic_launcher.png [moved from android/examples/fridgeserver/src/main/res/drawable-hdpi/ic_launcher.png with 100% similarity]
android/examples/fridgegroupserver/src/main/res/drawable-hdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/drawable-hdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/drawable-mdpi/ic_launcher.png [moved from android/examples/fridgeserver/src/main/res/drawable-mdpi/ic_launcher.png with 100% similarity]
android/examples/fridgegroupserver/src/main/res/drawable-mdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/drawable-mdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/ic_launcher.png [moved from android/examples/fridgeserver/src/main/res/drawable-xhdpi/ic_launcher.png with 100% similarity]
android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/ic_launcher.png [moved from android/examples/fridgeserver/src/main/res/drawable-xxhdpi/ic_launcher.png with 100% similarity]
android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/layout/activity_fridge_server.xml [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/values-w820dp/dimens.xml [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/values/dimens.xml [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/values/strings.xml [new file with mode: 0755]
android/examples/fridgegroupserver/src/main/res/values/styles.xml [new file with mode: 0755]
android/examples/fridgeserver/.gitignore [changed mode: 0644->0755]
android/examples/fridgeserver/build.gradle
android/examples/fridgeserver/fridgeserver.iml
android/examples/fridgeserver/src/main/AndroidManifest.xml [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/DeviceResource.java [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/DoorResource.java [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/FridgeServer.java [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/LightResource.java [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/Refrigerator.java [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/Resource.java [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/StringConstants.java [deleted file]
android/examples/fridgeserver/src/main/res/drawable-hdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgeserver/src/main/res/drawable-hdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgeserver/src/main/res/drawable-mdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgeserver/src/main/res/drawable-mdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgeserver/src/main/res/drawable-xhdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgeserver/src/main/res/drawable-xhdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgeserver/src/main/res/drawable-xxhdpi/iotivityicon.png [new file with mode: 0755]
android/examples/fridgeserver/src/main/res/drawable-xxhdpi/iotivitylogo.png [new file with mode: 0755]
android/examples/fridgeserver/src/main/res/layout/activity_fridge_server.xml [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/res/menu/menu_fridge_server.xml [deleted file]
android/examples/fridgeserver/src/main/res/values-w820dp/dimens.xml [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/res/values/dimens.xml [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/res/values/strings.xml [changed mode: 0644->0755]
android/examples/fridgeserver/src/main/res/values/styles.xml [changed mode: 0644->0755]
android/examples/settings.gradle

index 533d794..c659f4f 100755 (executable)
@@ -7,6 +7,16 @@
         <option name="BUILDABLE" value="false" />\r
       </configuration>\r
     </facet>\r
+    <facet type="android-gradle" name="Android-Gradle">\r
+      <configuration>\r
+        <option name="GRADLE_PROJECT_PATH" value=":" />\r
+      </configuration>\r
+    </facet>\r
+    <facet type="android" name="Android">\r
+      <configuration>\r
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />\r
+      </configuration>\r
+    </facet>\r
   </component>\r
   <component name="NewModuleRootManager" inherit-compiler-output="true">\r
     <exclude-output />\r
old mode 100644 (file)
new mode 100755 (executable)
index 740c852..751d6d2 100755 (executable)
@@ -1,37 +1,35 @@
-//apply plugin: 'com.android.application'\r
-//\r
-//android {\r
-//    compileSdkVersion 21\r
-//    buildToolsVersion "20.0.0"\r
-//\r
-//    defaultConfig {\r
-//        applicationId "org.iotivity.base.examples.fridgeclient"\r
-//        minSdkVersion 21\r
-//        targetSdkVersion 21\r
-//        versionCode 1\r
-//        versionName "1.0"\r
-//    }\r
-//    buildTypes {\r
-//        release {\r
-//            minifyEnabled false\r
-//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\r
-//        }\r
-//    }\r
-//    lintOptions {\r
-//        abortOnError false\r
-//    }\r
-//}\r
-//repositories {\r
-//    flatDir {\r
-//        dirs "../../android_api/base/build/outputs/aar/"\r
-//    }\r
-//}\r
-//\r
-//try {\r
-//    dependencies {\r
-//        compile ":iotivity-base-${TARGET_ARCH}-${RELEASE}@aar"\r
-//    }\r
-//} catch (all) {\r
-//    print "${ERROR_MSG}"\r
-//    assert all\r
-//}
\ No newline at end of file
+apply plugin: 'com.android.application'
+android {
+    compileSdkVersion 21
+    buildToolsVersion "20.0.0"
+
+    defaultConfig {
+        applicationId "org.iotivity.base.examples.fridgeclient"
+        minSdkVersion 21
+        targetSdkVersion 21
+        versionCode 1
+        versionName "1.0"
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+    lintOptions {
+        abortOnError false
+    }
+}
+repositories {
+    flatDir {
+        dirs "../../android_api/base/build/outputs/aar/"
+    }
+}
+try {
+    dependencies {
+        compile ":iotivity-base-${TARGET_ARCH}-${RELEASE}@aar"
+    }
+} catch (all) {
+    print "${ERROR_MSG}"
+    assert all
+}
\ No newline at end of file
index ea17290..cf42050 100755 (executable)
@@ -1,95 +1,93 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="examples" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">\r
-  <component name="FacetManager">\r
-    <facet type="android-gradle" name="Android-Gradle">\r
-      <configuration>\r
-        <option name="GRADLE_PROJECT_PATH" value=":fridgeclient" />\r
-      </configuration>\r
-    </facet>\r
-    <facet type="android" name="Android">\r
-      <configuration>\r
-        <option name="SELECTED_BUILD_VARIANT" value="debug" />\r
-        <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />\r
-        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />\r
-        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />\r
-        <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />\r
-        <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />\r
-        <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugTestSources" />\r
-        <option name="ALLOW_USER_CONFIGURATION" value="false" />\r
-        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />\r
-        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />\r
-        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />\r
-        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />\r
-      </configuration>\r
-    </facet>\r
-  </component>\r
-  <component name="NewModuleRootManager" inherit-compiler-output="false">\r
-    <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />\r
-    <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />\r
-    <exclude-output />\r
-    <content url="file://$MODULE_DIR$">\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/test/debug" isTestSource="true" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/test/debug" isTestSource="true" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/test/debug" isTestSource="true" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/test/debug" isTestSource="true" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/debug" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/test/debug" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/outputs" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/tmp" />\r
-    </content>\r
-    <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />\r
-    <orderEntry type="sourceFolder" forTests="false" />\r
-    <orderEntry type="library" exported="" name="iotivity-x86-base-debug-unspecified" level="project" />\r
-    <orderEntry type="library" exported="" name="appcompat-v7-21.0.3" level="project" />\r
-    <orderEntry type="library" exported="" name="support-annotations-21.0.3" level="project" />\r
-    <orderEntry type="library" exported="" name="support-v4-21.0.3" level="project" />\r
-    <orderEntry type="module" module-name="message" exported="" />\r
-  </component>\r
-</module>\r
-\r
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id=":fridgeclient" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="examples" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android-gradle" name="Android-Gradle">
+      <configuration>
+        <option name="GRADLE_PROJECT_PATH" value=":fridgeclient" />
+      </configuration>
+    </facet>
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="SELECTED_BUILD_VARIANT" value="debug" />
+        <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
+        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
+        <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
+        <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
+        <option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
+        <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />
+        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
+        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
+    <output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/examples/iotivity-base-armeabi-release/unspecified/jars" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+      <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="iotivity-base-armeabi-release" exported="" />
+    <orderEntry type="library" exported="" name="iotivity-base-armeabi-release-unspecified" level="project" />
+  </component>
+</module>
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index fba408a..26da87c
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    package="org.iotivity.base.examples.fridgeclient" >
-    <uses-sdk tools:overrideLibrary="org.iotivity.base"></uses-sdk>
+    package="org.iotivity.base.examples" >
 
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 
     <application
         android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
+        android:icon="@drawable/iotivityicon"
+        android:label= "@string/app_name"
         android:theme="@style/AppTheme">
         <activity
+            android:screenOrientation="portrait"
             android:name=".FridgeClient"
             android:label="@string/app_name" >
             <intent-filter>
diff --git a/android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/FridgeClient.java b/android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/FridgeClient.java
new file mode 100755 (executable)
index 0000000..503382b
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ * //******************************************************************
+ * //
+ * // 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.examples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.Message;
+import android.text.method.ScrollingMovementMethod;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import org.iotivity.base.ModeType;
+import org.iotivity.base.OcConnectivityType;
+import org.iotivity.base.OcException;
+import org.iotivity.base.OcHeaderOption;
+import org.iotivity.base.OcPlatform;
+import org.iotivity.base.OcRepresentation;
+import org.iotivity.base.OcResource;
+import org.iotivity.base.PlatformConfig;
+import org.iotivity.base.QualityOfService;
+import org.iotivity.base.ServiceType;
+
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * FridgeClient
+ * <p/>
+ * FridgeClient is a sample client app which should be started after the fridgeServer is started.
+ * It creates DeviceResource, DoorResources, LightResource and performs a GET operation on them.
+ */
+public class FridgeClient extends Activity implements
+        OcPlatform.OnResourceFoundListener,
+        OcResource.OnGetListener {
+    public static final String DEVICE_URI = "/device";
+    public static final String LIGHT = "/light";
+    public static final String LEFT_DOOR = "/door/left";
+    public static final String RIGHT_DOOR = "/door/right";
+    public static final String RANDOM_DOOR = "/door/random";
+    public static final String API_VERSION = "v.1.0";
+    public static final String CLIENT_TOKEN = "21ae43gf";
+    public static final int API_VERSION_KEY = 2048;
+    public static final int CLIENT_TOKEN_KEY = 3000;
+
+    private final List<OcResource> mResourceList = new LinkedList<OcResource>();
+    private OcResource mFridgeResource;
+
+    /**
+     * configure OIC platform and call findResource
+     */
+    private void startFridgeClient() {
+        PlatformConfig cfg = new PlatformConfig(
+                this, // context
+                ServiceType.IN_PROC,
+                ModeType.CLIENT,
+                "0.0.0.0", // bind to all available interfaces
+                0,
+                QualityOfService.LOW);
+
+        logMessage("Configuring platform");
+        OcPlatform.Configure(cfg);
+        logMessage("Initiating fridge discovery");
+        try {
+            OcPlatform.findResource("",
+                    OcPlatform.WELL_KNOWN_QUERY + "?rt=" + "intel.fridge",
+                    EnumSet.of(OcConnectivityType.CT_DEFAULT),
+                    this);
+        } catch (OcException e) {
+            logMessage(" Failed to discover resource");
+            Log.e(TAG, e.getMessage());
+        }
+        logMessage("-----------------------------------------------------");
+    }
+
+    /**
+     * An event handler to be executed whenever a "findResource" request completes successfully
+     *
+     * @param ocResource found resource
+     */
+    @Override
+    public synchronized void onResourceFound(OcResource ocResource) {
+        if (null != mFridgeResource || !ocResource.getUri().equals(DEVICE_URI)) {
+            logMessage("Didn't find the correct fridge resource. Exiting");
+            return;
+        }
+        mFridgeResource = ocResource;
+        logMessage("Discovered a fridge with \nHost: " + mFridgeResource.getHost());
+
+        List<String> lightTypes = new LinkedList<>();
+        lightTypes.add("intel.fridge.light");
+        List<String> doorTypes = new LinkedList<>();
+        doorTypes.add("intel.fridge.door");
+        List<String> resourceInterfaces = new LinkedList<>();
+        resourceInterfaces.add(OcPlatform.DEFAULT_INTERFACE);
+        logMessage("Creating child resource proxies for the previously known fridge components");
+        OcResource light = null;
+        OcResource leftDoor = null;
+        OcResource rightDoor = null;
+        OcResource randomDoor = null;
+        try {
+            light = OcPlatform.constructResourceObject(mFridgeResource.getHost(),
+                    LIGHT,
+                    mFridgeResource.getConnectivityTypeSet(),
+                    false, //isObservable
+                    lightTypes,
+                    resourceInterfaces);
+            mResourceList.add(light);
+
+            leftDoor = OcPlatform.constructResourceObject(mFridgeResource.getHost(),
+                    LEFT_DOOR,
+                    mFridgeResource.getConnectivityTypeSet(),
+                    false, //isObservable
+                    doorTypes,
+                    resourceInterfaces);
+            mResourceList.add(leftDoor);
+
+            rightDoor = OcPlatform.constructResourceObject(mFridgeResource.getHost(),
+                    RIGHT_DOOR,
+                    mFridgeResource.getConnectivityTypeSet(),
+                    false, //isObservable
+                    doorTypes,
+                    resourceInterfaces);
+            mResourceList.add(rightDoor);
+
+            randomDoor = OcPlatform.constructResourceObject(mFridgeResource.getHost(),
+                    RANDOM_DOOR,
+                    mFridgeResource.getConnectivityTypeSet(),
+                    false, //isObservable
+                    doorTypes,
+                    resourceInterfaces);
+            mResourceList.add(randomDoor);
+        } catch (OcException e) {
+            logMessage("Error in constructResourceObject");
+            Log.e(TAG, e.getMessage());
+        }
+
+        List<OcHeaderOption> headerOptions = new LinkedList<>();
+        OcHeaderOption apiVersion = new OcHeaderOption(API_VERSION_KEY, API_VERSION);
+        OcHeaderOption clientToken = new OcHeaderOption(CLIENT_TOKEN_KEY, CLIENT_TOKEN);
+        headerOptions.add(apiVersion);
+        headerOptions.add(clientToken);
+        mFridgeResource.setHeaderOptions(headerOptions);
+
+        logMessage("Calling GET api on mFridgeResource and other component resources");
+        try {
+            mFridgeResource.get(new HashMap<String, String>(), this);
+            if (null != light) light.get(new HashMap<String, String>(), this);
+            if (null != leftDoor) leftDoor.get(new HashMap<String, String>(), this);
+            if (null != rightDoor) rightDoor.get(new HashMap<String, String>(), this);
+            if (null != randomDoor) randomDoor.get(new HashMap<String, String>(), this);
+        } catch (OcException e) {
+            logMessage("Error in GET calls");
+            Log.e(TAG, e.getMessage());
+        }
+    }
+
+    /**
+     * An event handler to be executed whenever a "get" request completes successfully
+     *
+     * @param headerOptionList list of the header options
+     * @param ocRepresentation representation of a resource
+     */
+    @Override
+    public synchronized void onGetCompleted(List<OcHeaderOption> headerOptionList,
+                                            OcRepresentation ocRepresentation) {
+        logMessage("Got a response from " + ocRepresentation.getUri());
+    }
+
+    /**
+     * An event handler to be executed whenever a "get" request fails
+     *
+     * @param throwable exception
+     */
+    @Override
+    public synchronized void onGetFailed(Throwable throwable) {
+        logMessage("GET request has failed");
+        Log.e(TAG, throwable.toString());
+    }
+
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_fridge_client);
+
+        mConsoleTextView = (TextView) findViewById(R.id.consoleTextView);
+        mConsoleTextView.setMovementMethod(new ScrollingMovementMethod());
+        final Button button = (Button) findViewById(R.id.button);
+
+        if (null == savedInstanceState) {
+            button.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    button.setEnabled(false);
+                    new Thread(new Runnable() {
+                        public void run() {
+                            startFridgeClient();
+                        }
+                    }).start();
+                }
+            });
+        } else {
+            String consoleOutput = savedInstanceState.getString("consoleOutputString");
+            mConsoleTextView.setText(consoleOutput);
+        }
+    }
+
+    private void logMessage(final String text) {
+        runOnUiThread(new Runnable() {
+            public void run() {
+                final Message msg = new Message();
+                msg.obj = text;
+                mConsoleTextView.append("\n");
+                mConsoleTextView.append(text);
+            }
+        });
+        Log.i(TAG, text);
+    }
+
+    private static String TAG = "FridgeClient: ";
+    private TextView mConsoleTextView;
+}
\ No newline at end of file
diff --git a/android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/fridgeclient/FridgeClient.java b/android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/fridgeclient/FridgeClient.java
deleted file mode 100644 (file)
index b2109e8..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * //******************************************************************
- * //
- * // 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.examples.fridgeclient;
-
-import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.os.Message;
-import android.support.v4.content.LocalBroadcastManager;
-import android.text.method.ScrollingMovementMethod;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import org.iotivity.base.ErrorCode;
-import org.iotivity.base.ModeType;
-import org.iotivity.base.OcConnectivityType;
-import org.iotivity.base.OcException;
-import org.iotivity.base.OcHeaderOption;
-import org.iotivity.base.OcPlatform;
-import org.iotivity.base.OcRepresentation;
-import org.iotivity.base.OcResource;
-import org.iotivity.base.PlatformConfig;
-import org.iotivity.base.QualityOfService;
-import org.iotivity.base.ServiceType;
-
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-
-import base.iotivity.org.examples.message.IMessageLogger;
-
-/**
- * FridgeClient
- * <p/>
- * FridgeClient is a sample client app which should be started after the fridgeServer is started.
- * It creates DeviceResource, DoorResource, LightResource and performs a get operation on them.
- * This implements IMessageLogger to display messages on the screen
- */
-public class FridgeClient extends Activity implements
-        OcPlatform.OnResourceFoundListener, IMessageLogger {
-    private static String TAG = "FridgeClient: ";
-
-    private MessageReceiver mMessageReceiver = new MessageReceiver();
-    private TextView mEventsTextView;
-    private String mDeviceName;
-    private int mDeviceCode;
-    private List<String> ifaces;
-    private final List<OcResource> resourceList = new LinkedList<OcResource>();
-
-    /**
-     * configure OIC platform and call findResource
-     */
-    private void initOICStack() {
-        PlatformConfig cfg = new PlatformConfig(
-                this,
-                ServiceType.IN_PROC,
-                ModeType.CLIENT,
-                "0.0.0.0", // bind to all available interfaces
-                0,
-                QualityOfService.LOW);
-
-        OcPlatform.Configure(cfg);
-        try {
-            OcPlatform.findResource("", OcPlatform.WELL_KNOWN_QUERY + "?rt=" + "intel.fridge",
-                    EnumSet.of(OcConnectivityType.CT_DEFAULT), this);
-        } catch (OcException e) {
-            logMessage(TAG + " init Error. " + e.getMessage());
-            Log.e(TAG, e.getMessage());
-        }
-    }
-
-    /**
-     * prints out the appropriate messages depending on the device code
-     *
-     * @param representation representation of the OcResource
-     * @param value          clientDeviceCode
-     */
-    private void getResponse(OcRepresentation representation, int value) {
-        switch (value) {
-            case 0:
-                // Get on device
-                try {
-                    logMessage(TAG + "Name of device: " +
-                            representation.getValue(StringConstants.DEVICE_NAME));
-                } catch (OcException e) {
-                    Log.e(TAG, e.getMessage());
-                }
-                break;
-            case 1:
-                // get on fridge light
-                try {
-                    boolean lightOn = representation.getValue(StringConstants.ON);
-                    logMessage(TAG + "The fridge light is " +
-                            (lightOn ? "" : "not " + "on"));
-                } catch (OcException e) {
-                    Log.e(TAG, e.getMessage());
-                }
-                break;
-            case 2:
-            case 3:
-                // get on fridge door(s)
-                try {
-                    boolean doorOpen = representation.getValue(StringConstants.OPEN);
-                    logMessage(TAG + "Door is " + (doorOpen ?
-                            "open" : "not open") + " and is on the " +
-                            representation.getValue(StringConstants.SIDE) + " side");
-                } catch (OcException e) {
-                    Log.e(TAG, e.getMessage());
-                }
-                break;
-            case 4:
-                // get on fridge random door
-                try {
-                    logMessage("Name of fridge: " +
-                            representation.getValue(StringConstants.DEVICE_NAME));
-                } catch (OcException e) {
-                    Log.e(TAG, e.getMessage());
-                }
-                break;
-            default:
-                logMessage("Unexpected State");
-                break;
-        }
-    }
-
-    /**
-     * this method is used to wait for 1 second between calls to different resources.
-     * It is added for better readability
-     */
-    private void doWait() {
-        try {
-            Thread.sleep(StringConstants.WAIT_TIME);
-        } catch (InterruptedException e) {
-            logMessage(TAG + "doWait exception: " + e.getMessage());
-            Log.e(TAG, e.getMessage());
-        }
-    }
-
-    @Override
-    /**
-     *  callback when a resource is found. This method calls getResponse with the correct code
-     */
-    synchronized public void onResourceFound(OcResource ocResource) {
-        // eventHandler for onGetListener
-        resourceList.add(ocResource);
-        OcResource.OnGetListener onGetListener = new OcResource.OnGetListener() {
-            @Override
-            public void onGetCompleted(List<OcHeaderOption> headerOptionList, OcRepresentation rep) {
-                logMessage(TAG + " Got a response from " + getClientDeviceName());
-                getResponse(rep, getClientDeviceCode());
-            }
-
-            @Override
-            public void onGetFailed(Throwable throwable) {
-                if (throwable instanceof OcException) {
-                    OcException ocEx = (OcException) throwable;
-                    ErrorCode errCode = ocEx.getErrorCode();
-                    //do something based on errorCode
-                }
-                Log.e(TAG, throwable.toString());
-            }
-        };
-
-        if (ocResource.getUri().equals(StringConstants.RESOURCE_URI)) {
-            logMessage(TAG + "Discovered a device with \nHost: " + ocResource.getHost() +
-                    ", Uri: " + ocResource.getUri());
-        }
-        List<String> lightTypes = new LinkedList<>();
-        lightTypes.add("intel.fridge.light");
-        try {
-            OcResource light = OcPlatform.constructResourceObject(ocResource.getHost(),
-                    StringConstants.LIGHT, EnumSet.of(OcConnectivityType.CT_DEFAULT), false, lightTypes, ifaces);
-
-            List<String> doorTypes = new LinkedList<>();
-            doorTypes.add("intel.fridge.door");
-            OcResource leftDoor = OcPlatform.constructResourceObject(ocResource.getHost(),
-                    StringConstants.LEFT_DOOR, EnumSet.of(OcConnectivityType.CT_DEFAULT), false, doorTypes, ifaces);
-
-            OcResource rightDoor = OcPlatform.constructResourceObject(ocResource.getHost(),
-                    StringConstants.RIGHT_DOOR, EnumSet.of(OcConnectivityType.CT_DEFAULT), false, doorTypes, ifaces);
-
-            OcResource randomDoor = OcPlatform.constructResourceObject(ocResource.getHost(),
-                    StringConstants.RANDOM_DOOR, EnumSet.of(OcConnectivityType.CT_DEFAULT), false, doorTypes, ifaces);
-
-            List<OcHeaderOption> headerOptions = new LinkedList<>();
-            OcHeaderOption apiVersion = new OcHeaderOption(StringConstants.API_VERSION_KEY,
-                    StringConstants.API_VERSION);
-            OcHeaderOption clientToken = new OcHeaderOption(StringConstants.CLIENT_TOKEN_KEY,
-                    StringConstants.CLIENT_TOKEN);
-            headerOptions.add(apiVersion);
-            headerOptions.add(clientToken);
-            ocResource.setHeaderOptions(headerOptions);
-            /**
-             *  wait for 1 second before calling get on different resources.
-             *  It is done for better readability.
-             *  doWait() is called before each call to get
-             */
-            doWait();
-
-            setupClientOptions("Device", 0);
-            ocResource.get(new HashMap<String, String>(), onGetListener);
-            doWait();
-
-            setupClientOptions("Fridge Light", 1);
-            light.get(new HashMap<String, String>(), onGetListener);
-            doWait();
-
-            setupClientOptions("Left Door", 2);
-            leftDoor.get(new HashMap<String, String>(), onGetListener);
-            doWait();
-
-            setupClientOptions("Right Door", 3);
-            rightDoor.get(new HashMap<String, String>(), onGetListener);
-            doWait();
-
-            setupClientOptions("Random Door", 4);
-            randomDoor.get(new HashMap<String, String>(), onGetListener);
-            doWait();
-
-            resourceList.add(leftDoor);
-            leftDoor.deleteResource(new OcResource.OnDeleteListener() {
-                @Override
-                public void onDeleteCompleted(List<OcHeaderOption> ocHeaderOptions) {
-                    logMessage(TAG + "Delete resource successful");
-                }
-
-                @Override
-                public void onDeleteFailed(Throwable throwable) {
-                    if (throwable instanceof OcException) {
-                        OcException ocEx = (OcException) throwable;
-                        ErrorCode errCode = ocEx.getErrorCode();
-                        //do something based on errorCode
-                    }
-                    Log.e(TAG, throwable.toString());
-                }
-            });
-        } catch (OcException e) {
-            logMessage(TAG + "onResourceFound Error. " + e.getMessage());
-            Log.e(TAG, e.getMessage());
-        }
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_fridge_client);
-        registerReceiver(mMessageReceiver, new IntentFilter(StringConstants.INTENT));
-
-        mEventsTextView = new TextView(this);
-        mEventsTextView.setMovementMethod(new ScrollingMovementMethod());
-        LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout);
-        layout.addView(mEventsTextView, new LinearLayout.LayoutParams
-                (LinearLayout.LayoutParams.MATCH_PARENT, 0, 1f));
-        ifaces = new LinkedList<>();
-        ifaces.add(StringConstants.RESOURCE_INTERFACE);
-        mDeviceCode = -1;
-        mDeviceName = "";
-
-        initOICStack();
-    }
-
-    public class MessageReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            final String message = intent.getStringExtra(StringConstants.MESSAGE);
-            logMessage(message);
-        }
-    }
-
-    @Override
-    public void logMessage(final String text) {
-        if (StringConstants.ENABLE_PRINTING) {
-            runOnUiThread(new Runnable() {
-                public void run() {
-                    final Message msg = new Message();
-                    msg.obj = text;
-                    mEventsTextView.append("\n");
-                    mEventsTextView.append(text);
-                }
-            });
-            Log.i(TAG, text);
-        }
-    }
-
-
-    private void setupClientOptions(String name, int value) {
-        mDeviceName = name;
-        mDeviceCode = value;
-    }
-
-    private String getClientDeviceName() {
-        return mDeviceName;
-    }
-
-    private int getClientDeviceCode() {
-        return mDeviceCode;
-    }
-
-
-    //method to print the headerOptions received from the server
-    void printHeaderOptions(List<OcHeaderOption> headerOptions) {
-        for (OcHeaderOption headerOption : headerOptions) {
-            if (StringConstants.API_VERSION_KEY == headerOption.getOptionId()) {
-                logMessage(TAG + "Server API version in GET response: " +
-                        headerOption.getOptionData());
-            }
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.menu_fridge_client, menu);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        int id = item.getItemId();
-        if (id == R.id.action_settings) {
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        onStop();
-    }
-
-    @Override
-    protected void onStop() {
-        LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
-        super.onStop();
-    }
-}
diff --git a/android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/fridgeclient/StringConstants.java b/android/examples/fridgeclient/src/main/java/org/iotivity/base/examples/fridgeclient/StringConstants.java
deleted file mode 100644 (file)
index 4c2f197..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.iotivity.base.examples.fridgeclient;
-
-import org.iotivity.base.OcPlatform;
-
-/**
- * StringConstant contains the fridgeclient specific constant values.  To add another supported
- * Resource or Interface type to this app, begin by adding the new strings here, and then
- * find the places throughout the app where Resource-specific case switches occur, and add
- * the newly-supported type there.
- */
-public interface StringConstants {
-    public static final String RESOURCE_URI = "/device";
-    public static final String DEVICE_NAME = "device_name";
-    public static final String LIGHT = "/light";
-    public static final String LEFT_DOOR = "/door/left";
-    public static final String RIGHT_DOOR = "/door/right";
-    public static final String RANDOM_DOOR = "/door/random";
-    public static final String MESSAGE = "message";
-    public static final String API_VERSION = "v.1.2";
-    public static final String CLIENT_TOKEN = "AaBbYyZz";
-    public static final String ON = "on";
-    public static final String OPEN = "open";
-    public static final String SIDE = "side";
-    public static final String INTENT = "org.iotivity.base.examples.fridgeclient";
-    public static final String RESOURCE_INTERFACE = OcPlatform.DEFAULT_INTERFACE;
-
-    public static final int WAIT_TIME = 1000;
-    public static final int API_VERSION_KEY = 2048;
-    public static final int CLIENT_TOKEN_KEY = 3000;
-
-    public static final boolean ENABLE_PRINTING = true; // change to false to disable printing
-                                                        // of messages on the console and the screen
-}
diff --git a/android/examples/fridgeclient/src/main/res/drawable-hdpi/ic_launcher.png b/android/examples/fridgeclient/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100755 (executable)
index 96a442e..0000000
Binary files a/android/examples/fridgeclient/src/main/res/drawable-hdpi/ic_launcher.png and /dev/null differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-hdpi/iotivityicon.png b/android/examples/fridgeclient/src/main/res/drawable-hdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgeclient/src/main/res/drawable-hdpi/iotivityicon.png differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-hdpi/iotivitylogo.png b/android/examples/fridgeclient/src/main/res/drawable-hdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgeclient/src/main/res/drawable-hdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-mdpi/ic_launcher.png b/android/examples/fridgeclient/src/main/res/drawable-mdpi/ic_launcher.png
deleted file mode 100755 (executable)
index 359047d..0000000
Binary files a/android/examples/fridgeclient/src/main/res/drawable-mdpi/ic_launcher.png and /dev/null differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-mdpi/iotivityicon.png b/android/examples/fridgeclient/src/main/res/drawable-mdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgeclient/src/main/res/drawable-mdpi/iotivityicon.png differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-mdpi/iotivitylogo.png b/android/examples/fridgeclient/src/main/res/drawable-mdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgeclient/src/main/res/drawable-mdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-xhdpi/ic_launcher.png b/android/examples/fridgeclient/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100755 (executable)
index 71c6d76..0000000
Binary files a/android/examples/fridgeclient/src/main/res/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-xhdpi/iotivityicon.png b/android/examples/fridgeclient/src/main/res/drawable-xhdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgeclient/src/main/res/drawable-xhdpi/iotivityicon.png differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-xhdpi/iotivitylogo.png b/android/examples/fridgeclient/src/main/res/drawable-xhdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgeclient/src/main/res/drawable-xhdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/ic_launcher.png b/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100755 (executable)
index 4df1894..0000000
Binary files a/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/iotivityicon.png b/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/iotivityicon.png differ
diff --git a/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/iotivitylogo.png b/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgeclient/src/main/res/drawable-xxhdpi/iotivitylogo.png differ
old mode 100644 (file)
new mode 100755 (executable)
index fc86964..1ab7e12
@@ -1,18 +1,40 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
-    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
-    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".FridgeClient">
-
-    <TextView android:text="@string/app_name" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-    <LinearLayout
+    tools:context=".FridgeClient">
+    <Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/button"
+        android:layout_centerHorizontal="true"
+        android:textOff="Start"
+        android:textOn="Stop"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:text="Start" />
+    <ScrollView
+        android:layout_below="@id/button"
+        android:layout_above="@+id/imageView"
         android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:orientation="vertical"
-        android:id="@+id/linearLayout" >
-    </LinearLayout>
-
-</RelativeLayout>
+        android:layout_height="wrap_content"
+        android:fillViewport="true"
+        android:id="@+id/scrollView">
+        <TextView android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/consoleTextView" />
+    </ScrollView>
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/imageView"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:src="@drawable/iotivitylogo" />
+</RelativeLayout>
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index b495790..1f64131
@@ -2,5 +2,5 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools" tools:context=".FridgeClient">
     <item android:id="@+id/action_settings" android:title="@string/action_settings"
-        android:orderInCategory="100" app:showAsAction="never" />
+        android:orderInCategory="100" />
 </menu>
old mode 100644 (file)
new mode 100755 (executable)
index 766ab99..ff6c9d2
@@ -1,7 +1,7 @@
 <resources>
 
     <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
         <!-- Customize your theme here. -->
     </style>
 
diff --git a/android/examples/fridgegroupclient/.gitignore b/android/examples/fridgegroupclient/.gitignore
new file mode 100755 (executable)
index 0000000..3543521
--- /dev/null
@@ -0,0 +1 @@
+/build\r
diff --git a/android/examples/fridgegroupclient/build.gradle b/android/examples/fridgegroupclient/build.gradle
new file mode 100755 (executable)
index 0000000..333920c
--- /dev/null
@@ -0,0 +1,35 @@
+apply plugin: 'com.android.application'\r
+android {\r
+    compileSdkVersion 21\r
+    buildToolsVersion "20.0.0"\r
+\r
+    defaultConfig {\r
+        applicationId "org.iotivity.base.examples.fridgegroupclient"\r
+        minSdkVersion 21\r
+        targetSdkVersion 21\r
+        versionCode 1\r
+        versionName "1.0"\r
+    }\r
+    buildTypes {\r
+        release {\r
+            minifyEnabled false\r
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\r
+        }\r
+    }\r
+    lintOptions {\r
+        abortOnError false\r
+    }\r
+}\r
+repositories {\r
+    flatDir {\r
+        dirs "../../android_api/base/build/outputs/aar/"\r
+    }\r
+}\r
+try {\r
+    dependencies {\r
+        compile ":iotivity-base-${TARGET_ARCH}-${RELEASE}@aar"\r
+    }\r
+} catch (all) {\r
+    print "${ERROR_MSG}"\r
+    assert all\r
+}\r
diff --git a/android/examples/fridgegroupclient/src/main/AndroidManifest.xml b/android/examples/fridgegroupclient/src/main/AndroidManifest.xml
new file mode 100755 (executable)
index 0000000..00fb958
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    package="org.iotivity.base.examples" >
+
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.BLUETOOTH"/>
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/iotivityicon"
+        android:label= "@string/app_name"
+        android:theme="@style/AppTheme">
+        <activity
+            android:screenOrientation="portrait"
+            android:name=".FridgeGroupClient"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/android/examples/fridgegroupclient/src/main/java/org/iotivity/base/examples/FridgeGroupClient.java b/android/examples/fridgegroupclient/src/main/java/org/iotivity/base/examples/FridgeGroupClient.java
new file mode 100755 (executable)
index 0000000..19c245e
--- /dev/null
@@ -0,0 +1,258 @@
+/*
+ * //******************************************************************
+ * //
+ * // 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.examples;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.Message;
+import android.text.method.ScrollingMovementMethod;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import org.iotivity.base.ModeType;
+import org.iotivity.base.OcConnectivityType;
+import org.iotivity.base.OcException;
+import org.iotivity.base.OcHeaderOption;
+import org.iotivity.base.OcPlatform;
+import org.iotivity.base.OcRepresentation;
+import org.iotivity.base.OcResource;
+import org.iotivity.base.PlatformConfig;
+import org.iotivity.base.QualityOfService;
+import org.iotivity.base.ServiceType;
+
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * FridgeGroupClient
+ * <p/>
+ * FridgeGroupClient is a sample client app which should be started after the fridgeGroupServer is
+ * started. It discovers a fridge resource and then creates the proxy resources for each one of its
+ * children (light and door) and performs a GET on them.
+ */
+public class FridgeGroupClient extends Activity implements
+        OcPlatform.OnResourceFoundListener,
+        OcResource.OnGetListener {
+    private static String TAG = "FridgeGroupClient: ";
+
+    private final List<OcResource> childResourceList = new LinkedList<>();
+    private OcResource fridgeResource;
+
+    private void startFridgeClient() {
+        PlatformConfig cfg = new PlatformConfig(
+                this, // context
+                ServiceType.IN_PROC,
+                ModeType.CLIENT,
+                "0.0.0.0", // bind to all available interfaces
+                0,
+                QualityOfService.LOW);
+
+        logMessage("Configuring platform");
+        OcPlatform.Configure(cfg);
+        String requestUri = OcPlatform.WELL_KNOWN_QUERY + "?rt=intel.fridge.group";
+        logMessage("Initiating fridge discovery");
+        try {
+            OcPlatform.findResource("",
+                    requestUri,
+                    EnumSet.of(OcConnectivityType.CT_DEFAULT),
+                    this);
+        } catch (OcException e) {
+            logMessage("Failed to discover resource");
+            Log.e(TAG, e.getMessage());
+        }
+        logMessage("-----------------------------------------------------");
+    }
+
+    /**
+     * callback when a fridge resource is found.
+     */
+    @Override
+    public synchronized void onResourceFound(OcResource ocResource) {
+        if ((null != fridgeResource) && !fridgeResource.getUri().equals("/fridge/group")) {
+            logMessage("Didn't find the correct fridge resource. Exiting");
+            return;
+        }
+        fridgeResource = ocResource;
+        logMessage("Discovered a fridge with \nHost: " + fridgeResource.getHost());
+        logMessage("Trying to call GET api on fridgeResource");
+        try {
+            fridgeResource.get(new HashMap<String, String>(), this);
+        } catch (OcException e) {
+            logMessage("Failed to call GET api");
+            Log.e(TAG, e.getMessage());
+        }
+        logMessage("-----------------------------------------------------");
+    }
+
+    /**
+     * once the fridge resource is discovered, create proxy child resources of the fridge
+     * and call GET on each of the child resource proxies.
+     *
+     * @param list
+     * @param ocRepresentation parent resource
+     */
+    @Override
+    public synchronized void onGetCompleted(List<OcHeaderOption> list,
+                                            OcRepresentation ocRepresentation) {
+        logMessage("Got a response from " + ocRepresentation.getUri());
+        for (OcRepresentation child : ocRepresentation.getChildren()) {
+            try {
+                logMessage("Creating child resource proxy from fridgeResource with uri " +
+                        child.getUri());
+                OcResource childResource = OcPlatform.constructResourceObject(
+                        fridgeResource.getHost(),
+                        child.getUri(),
+                        fridgeResource.getConnectivityTypeSet(),
+                        false, // isObservable set to false
+                        child.getResourceTypes(),
+                        child.getResourceInterfaces());
+                childResourceList.add(childResource);
+            } catch (OcException e) {
+                logMessage("Error in creating child resource proxy");
+                Log.e(TAG, e.getMessage());
+            }
+            logMessage("-----------------------------------------------------");
+        }
+
+        OcResource.OnGetListener childOnGetListener = new OcResource.OnGetListener() {
+            public static final String DOOR_STATE_KEY = "state";
+            public static final String DOOR_SIDE_KEY = "side";
+            public static final String LIGHT_STATUS_KEY = "light";
+
+            @Override
+            public synchronized void onGetCompleted(List<OcHeaderOption> list,
+                                                    OcRepresentation ocRepresentation) {
+                logMessage("Received a response from a child of the fridge with uri: " +
+                        ocRepresentation.getUri());
+                for (String resType : ocRepresentation.getResourceTypes()) {
+                    if (resType.equals("intel.fridge.door")) {
+                        try {
+                            logMessage(ocRepresentation.getValue(DOOR_SIDE_KEY) +
+                                    " door is " + ((ocRepresentation.getValue(DOOR_STATE_KEY)
+                                    ) ? "open" : "close"));
+                        } catch (OcException e) {
+                            logMessage("Failed to get the door resource representation");
+                            Log.e(TAG, e.getMessage());
+                        }
+                    } else if (resType.equals("intel.fridge.light")) {
+                        try {
+                            logMessage("Fridge light is " +
+                                    ((ocRepresentation.getValue(LIGHT_STATUS_KEY)) ?
+                                            "on" : "off"));
+                        } catch (OcException e) {
+                            logMessage("Failed to get the light resource representation");
+                            Log.e(TAG, e.getMessage());
+                        }
+                    }
+                }
+                logMessage("-----------------------------------------------------");
+            }
+
+            @Override
+            public synchronized void onGetFailed(Throwable throwable) {
+                logMessage("OnGet failed for child of fridge");
+                Log.e(TAG, throwable.getMessage());
+            }
+        };
+
+        for (OcResource child : childResourceList) {
+            try {
+                logMessage("Trying to get a representation of " + child.getUri() +
+                        " resource from server");
+                child.get(new HashMap<String, String>(), childOnGetListener);
+            } catch (OcException e) {
+                logMessage(e.getMessage());
+                Log.e(TAG, e.getMessage());
+            }
+        }
+
+    }
+
+    @Override
+    public synchronized void onGetFailed(Throwable throwable) {
+        logMessage("Failed to get representation of the fridge");
+        Log.e(TAG, throwable.toString());
+    }
+
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    private TextView mConsoleTextView;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_fridge_client);
+
+        mConsoleTextView = (TextView) findViewById(R.id.consoleTextView);
+        mConsoleTextView.setMovementMethod(new ScrollingMovementMethod());
+        final Button button = (Button) findViewById(R.id.button);
+
+        if (null == savedInstanceState) {
+            button.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    button.setEnabled(false);
+                    new Thread(new Runnable() {
+                        public void run() {
+                            startFridgeClient();
+                        }
+                    }).start();
+                }
+            });
+        } else {
+            String consoleOutput = savedInstanceState.getString("consoleOutputString");
+            mConsoleTextView.setText(consoleOutput);
+        }
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putString("consoleOutputString", mConsoleTextView.getText().toString());
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle savedInstanceState) {
+        super.onRestoreInstanceState(savedInstanceState);
+
+        String consoleOutput = savedInstanceState.getString("consoleOutputString");
+        mConsoleTextView.setText(consoleOutput);
+    }
+
+    private void logMessage(final String text) {
+        runOnUiThread(new Runnable() {
+            public void run() {
+                final Message msg = new Message();
+                msg.obj = text;
+                mConsoleTextView.append("\n");
+                mConsoleTextView.append(text);
+            }
+        });
+        Log.i(TAG, text);
+    }
+}
\ No newline at end of file
diff --git a/android/examples/fridgegroupclient/src/main/res/drawable-hdpi/iotivityicon.png b/android/examples/fridgegroupclient/src/main/res/drawable-hdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgegroupclient/src/main/res/drawable-hdpi/iotivityicon.png differ
diff --git a/android/examples/fridgegroupclient/src/main/res/drawable-hdpi/iotivitylogo.png b/android/examples/fridgegroupclient/src/main/res/drawable-hdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgegroupclient/src/main/res/drawable-hdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgegroupclient/src/main/res/drawable-mdpi/iotivityicon.png b/android/examples/fridgegroupclient/src/main/res/drawable-mdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgegroupclient/src/main/res/drawable-mdpi/iotivityicon.png differ
diff --git a/android/examples/fridgegroupclient/src/main/res/drawable-mdpi/iotivitylogo.png b/android/examples/fridgegroupclient/src/main/res/drawable-mdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgegroupclient/src/main/res/drawable-mdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgegroupclient/src/main/res/drawable-xhdpi/iotivityicon.png b/android/examples/fridgegroupclient/src/main/res/drawable-xhdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgegroupclient/src/main/res/drawable-xhdpi/iotivityicon.png differ
diff --git a/android/examples/fridgegroupclient/src/main/res/drawable-xhdpi/iotivitylogo.png b/android/examples/fridgegroupclient/src/main/res/drawable-xhdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgegroupclient/src/main/res/drawable-xhdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgegroupclient/src/main/res/drawable-xxhdpi/iotivityicon.png b/android/examples/fridgegroupclient/src/main/res/drawable-xxhdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgegroupclient/src/main/res/drawable-xxhdpi/iotivityicon.png differ
diff --git a/android/examples/fridgegroupclient/src/main/res/drawable-xxhdpi/iotivitylogo.png b/android/examples/fridgegroupclient/src/main/res/drawable-xxhdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgegroupclient/src/main/res/drawable-xxhdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgegroupclient/src/main/res/layout/activity_fridge_client.xml b/android/examples/fridgegroupclient/src/main/res/layout/activity_fridge_client.xml
new file mode 100755 (executable)
index 0000000..818305f
--- /dev/null
@@ -0,0 +1,40 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context=".FridgeGroupClient">
+    <Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/button"
+        android:layout_centerHorizontal="true"
+        android:textOff="Start"
+        android:textOn="Stop"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:text="Start" />
+    <ScrollView
+        android:layout_below="@id/button"
+        android:layout_above="@+id/imageView"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:fillViewport="true"
+        android:id="@+id/scrollView">
+        <TextView android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/consoleTextView" />
+    </ScrollView>
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/imageView"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:src="@drawable/iotivitylogo" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/android/examples/fridgegroupclient/src/main/res/values-w820dp/dimens.xml b/android/examples/fridgegroupclient/src/main/res/values-w820dp/dimens.xml
new file mode 100755 (executable)
index 0000000..63fc816
--- /dev/null
@@ -0,0 +1,6 @@
+<resources>
+    <!-- Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+</resources>
diff --git a/android/examples/fridgegroupclient/src/main/res/values/assets.xml b/android/examples/fridgegroupclient/src/main/res/values/assets.xml
new file mode 100755 (executable)
index 0000000..a6b3dae
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources></resources>
\ No newline at end of file
diff --git a/android/examples/fridgegroupclient/src/main/res/values/dimens.xml b/android/examples/fridgegroupclient/src/main/res/values/dimens.xml
new file mode 100755 (executable)
index 0000000..47c8224
--- /dev/null
@@ -0,0 +1,5 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+</resources>
diff --git a/android/examples/fridgegroupclient/src/main/res/values/strings.xml b/android/examples/fridgegroupclient/src/main/res/values/strings.xml
new file mode 100755 (executable)
index 0000000..d4e83bc
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="app_name">FridgeGroupClient</string>
+</resources>
diff --git a/android/examples/fridgegroupclient/src/main/res/values/styles.xml b/android/examples/fridgegroupclient/src/main/res/values/styles.xml
new file mode 100755 (executable)
index 0000000..ff6c9d2
--- /dev/null
@@ -0,0 +1,8 @@
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- Customize your theme here. -->
+    </style>
+
+</resources>
diff --git a/android/examples/fridgegroupserver/.gitignore b/android/examples/fridgegroupserver/.gitignore
new file mode 100755 (executable)
index 0000000..3543521
--- /dev/null
@@ -0,0 +1 @@
+/build\r
diff --git a/android/examples/fridgegroupserver/build.gradle b/android/examples/fridgegroupserver/build.gradle
new file mode 100755 (executable)
index 0000000..d72b630
--- /dev/null
@@ -0,0 +1,35 @@
+apply plugin: 'com.android.application'\r
+android {\r
+    compileSdkVersion 21\r
+    buildToolsVersion "20.0.0"\r
+\r
+    defaultConfig {\r
+        applicationId "org.iotivity.base.examples.fridgegroupserver"\r
+        minSdkVersion 21\r
+        targetSdkVersion 21\r
+        versionCode 1\r
+        versionName "1.0"\r
+    }\r
+    buildTypes {\r
+        release {\r
+            minifyEnabled false\r
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\r
+        }\r
+    }\r
+    lintOptions {\r
+        abortOnError false\r
+    }\r
+}\r
+repositories {\r
+    flatDir {\r
+        dirs "../../android_api/base/build/outputs/aar/"\r
+    }\r
+}\r
+try {\r
+    dependencies {\r
+        compile ":iotivity-base-${TARGET_ARCH}-${RELEASE}@aar"\r
+    }\r
+} catch (all) {\r
+    print "${ERROR_MSG}"\r
+    assert all\r
+}
\ No newline at end of file
diff --git a/android/examples/fridgegroupserver/src/main/AndroidManifest.xml b/android/examples/fridgegroupserver/src/main/AndroidManifest.xml
new file mode 100755 (executable)
index 0000000..10c63d9
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    package="org.iotivity.base.examples">
+
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/iotivityicon"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme">
+        <activity
+            android:name=".FridgeGroupServer"
+            android:label="@string/app_name"
+            android:screenOrientation="portrait">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/DoorResource.java b/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/DoorResource.java
new file mode 100755 (executable)
index 0000000..d86e1c7
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * //******************************************************************
+ * //
+ * // 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.examples;
+
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import org.iotivity.base.EntityHandlerResult;
+import org.iotivity.base.OcException;
+import org.iotivity.base.OcPlatform;
+import org.iotivity.base.OcRepresentation;
+import org.iotivity.base.OcResourceHandle;
+import org.iotivity.base.OcResourceRequest;
+import org.iotivity.base.OcResourceResponse;
+import org.iotivity.base.RequestHandlerFlag;
+import org.iotivity.base.ResourceProperty;
+
+import java.util.EnumSet;
+
+/**
+ * DoorResource
+ * <p/>
+ * DoorResource is a sample OIC server resource created by the refrigerator.
+ */
+public class DoorResource extends Resource implements OcPlatform.EntityHandler {
+    DoorResource(String side, Context context) {
+        mContext = context;
+        mSide = side;
+
+        registerDoorResource();
+    }
+
+    private void registerDoorResource() {
+        String resourceURI = DOOR_URI + mSide;
+        logMessage(TAG + "RegisterDoorResource " + resourceURI + " : " + RESOURCE_TYPEDOOR);
+        try {
+            mResourceHandle = OcPlatform.registerResource(
+                    resourceURI,
+                    RESOURCE_TYPEDOOR,
+                    OcPlatform.DEFAULT_INTERFACE,
+                    this,
+                    EnumSet.of(ResourceProperty.DISCOVERABLE));
+        } catch (OcException e) {
+            logMessage(TAG + "Failed to register DoorResource");
+            Log.e(TAG, e.getMessage());
+        }
+        logMessage("-----------------------------------------------------");
+    }
+
+    /**
+     * sample implementation of eventHandler for doorResource - this can be implemented in many
+     * different ways
+     *
+     * @param ocResourceRequest OcResourceRequest from the client
+     * @return EntityHandlerResult indicates whether the request was handled successfully or not
+     */
+    @Override
+    public synchronized EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
+        EntityHandlerResult result = EntityHandlerResult.ERROR;
+        if (null != ocResourceRequest) {
+            try {
+                if (ocResourceRequest.getRequestHandlerFlagSet().contains(
+                        RequestHandlerFlag.REQUEST)) {
+                    OcResourceResponse response = new OcResourceResponse();
+                    response.setRequestHandle(ocResourceRequest.getRequestHandle());
+                    response.setResourceHandle(ocResourceRequest.getResourceHandle());
+
+                    switch (ocResourceRequest.getRequestType()) {
+                        case GET:
+                            response.setErrorCode(Resource.SUCCESS);
+                            updateRepresentationValues();
+                            response.setResourceRepresentation(mRepresentation);
+                            response.setResponseResult(EntityHandlerResult.OK);
+                            OcPlatform.sendResponse(response);
+                            break;
+                        case PUT:
+                            response.setErrorCode(Resource.SUCCESS);
+                            put(ocResourceRequest.getResourceRepresentation());
+                            updateRepresentationValues();
+                            response.setResourceRepresentation(mRepresentation);
+                            response.setResponseResult(EntityHandlerResult.OK);
+                            OcPlatform.sendResponse(response);
+                            break;
+                        case DELETE:
+                            response.setResponseResult(EntityHandlerResult.RESOURCE_DELETED);
+                            response.setErrorCode(204);
+                            OcPlatform.sendResponse(response);
+                            break;
+                    }
+                    result = EntityHandlerResult.OK;
+                }
+            } catch (OcException e) {
+                logMessage("Error in handleEntity of DoorResource");
+                Log.e(TAG, e.getMessage());
+                return EntityHandlerResult.ERROR;
+            }
+        }
+        logMessage("-----------------------------------------------------");
+        return result;
+    }
+
+    public OcResourceHandle getHandle() {
+        return mResourceHandle;
+    }
+
+    /**
+     * helper function to update the current value of the door resource
+     */
+    private void updateRepresentationValues() {
+        try {
+            mRepresentation.setValue(DOOR_STATE_KEY, mDoorState);
+            mRepresentation.setValue(DOOR_SIDE_KEY, mSide);
+            logMessage(TAG + "door state is  " + ((mDoorState == true) ? "open" : "close") +
+                    " and door side is " + mSide);
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
+        }
+    }
+
+    /**
+     * update the value of doorResource, depending on if door is open/ closed
+     *
+     * @param representation new state of a door
+     */
+    private void put(OcRepresentation representation) {
+        try {
+            mDoorState = representation.getValue(DOOR_STATE_KEY);
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
+        }
+        // Note, we won't let the user change the door side!
+    }
+
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    private Context mContext;
+    private String mSide;
+    private boolean mDoorState;
+    public static final String DOOR_URI = "/door/";
+    public static final String RESOURCE_TYPEDOOR = "intel.fridge.door";
+    private static String TAG = "DoorResource: ";
+    public static final String DOOR_STATE_KEY = "state";
+    public static final String DOOR_SIDE_KEY = "side";
+
+    private void logMessage(String msg) {
+        Intent intent = new Intent(Resource.INTENT);
+        intent.putExtra(Resource.MESSAGE, msg);
+        mContext.sendBroadcast(intent);
+    }
+}
\ No newline at end of file
diff --git a/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/FridgeGroupServer.java b/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/FridgeGroupServer.java
new file mode 100755 (executable)
index 0000000..32c90f6
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * //******************************************************************
+ * //
+ * // 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.examples;
+
+import android.app.Activity;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.Message;
+import android.text.method.ScrollingMovementMethod;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import org.iotivity.base.ModeType;
+import org.iotivity.base.OcPlatform;
+import org.iotivity.base.PlatformConfig;
+import org.iotivity.base.QualityOfService;
+import org.iotivity.base.ServiceType;
+
+/**
+ * FridgeGroupServer
+ * <p/>
+ * This is the main fridgeGroupServer class. This instantiates Refrigerator object
+ * which has different resources such as LightResource, DoorResource, etc.
+ */
+public class FridgeGroupServer extends Activity {
+    private Refrigerator refrigerator;
+
+    /**
+     * configure OIC platform and call findResource
+     */
+    private void startFridgeServer() {
+        logMessage("Configuring  platform config");
+        PlatformConfig cfg = new PlatformConfig(
+                this, // context
+                ServiceType.IN_PROC,
+                ModeType.SERVER,
+                "0.0.0.0", // bind to all available interfaces
+                0,
+                QualityOfService.LOW);
+        OcPlatform.Configure(cfg);
+
+        logMessage("Creating refrigerator resources");
+        refrigerator = new Refrigerator(this);
+        logMessage("-----------------------------------------------------");
+    }
+
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    private static String TAG = "FridgeServer: ";
+    private TextView mConsoleTextView;
+    private ScrollView mScrollView;
+    private BroadcastReceiver mMessageReceiver = new MessageReceiver();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_fridge_server);
+        registerReceiver(mMessageReceiver, new IntentFilter(Resource.INTENT));
+
+        mConsoleTextView = (TextView) findViewById(R.id.consoleTextView);
+        mConsoleTextView.setMovementMethod(new ScrollingMovementMethod());
+        mScrollView = (ScrollView) findViewById(R.id.scrollView);
+        mScrollView.fullScroll(View.FOCUS_DOWN);
+        final Button button = (Button) findViewById(R.id.button);
+
+        if (null == savedInstanceState) {
+            button.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    button.setEnabled(false);
+                    new Thread(new Runnable() {
+                        public void run() {
+                            startFridgeServer();
+                        }
+                    }).start();
+                }
+            });
+        } else {
+            String consoleOutput = savedInstanceState.getString("consoleOutputString");
+            mConsoleTextView.setText(consoleOutput);
+        }
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putString("consoleOutputString", mConsoleTextView.getText().toString());
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle savedInstanceState) {
+        super.onRestoreInstanceState(savedInstanceState);
+        String consoleOutput = savedInstanceState.getString("consoleOutputString");
+        mConsoleTextView.setText(consoleOutput);
+    }
+
+    public class MessageReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            final String message = intent.getStringExtra(Resource.MESSAGE);
+            logMessage(message);
+        }
+    }
+
+    private void logMessage(final String text) {
+        runOnUiThread(new Runnable() {
+            public void run() {
+                final Message msg = new Message();
+                msg.obj = text;
+                mConsoleTextView.append("\n");
+                mConsoleTextView.append(text);
+            }
+        });
+        Log.i(TAG, text);
+    }
+}
diff --git a/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/FridgeResource.java b/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/FridgeResource.java
new file mode 100755 (executable)
index 0000000..c925e0f
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * //******************************************************************
+ * //
+ * // 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.examples;
+
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import org.iotivity.base.OcException;
+import org.iotivity.base.OcPlatform;
+import org.iotivity.base.OcResourceHandle;
+import org.iotivity.base.ResourceProperty;
+
+import java.util.EnumSet;
+
+
+/**
+ * FridgeResource
+ * <p/>
+ * FridgeResource is a sample OIC server resource created by the refrigerator.
+ */
+public class FridgeResource extends Resource {
+    FridgeResource(Context context) {
+        mContext = context;
+        registerFridgeResource();
+    }
+
+    private void registerFridgeResource() {
+        try {
+            logMessage(TAG + "RegisterFridgeResource " + FRIDGE_URI +
+                    " : " + FRIDGE_TYPENAME);
+            mResourceHandle = OcPlatform.registerResource(
+                    FRIDGE_URI,
+                    FRIDGE_TYPENAME,
+                    OcPlatform.GROUP_INTERFACE,
+                    null,
+                    EnumSet.of(ResourceProperty.DISCOVERABLE));
+        } catch (OcException e) {
+            logMessage(TAG + "FridgeResource register error: " + e.getMessage());
+            Log.e(TAG, e.getMessage());
+        }
+        logMessage("-----------------------------------------------------");
+    }
+
+    public OcResourceHandle getHandle() {
+        return mResourceHandle;
+    }
+
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    private Context mContext;
+    public static final String FRIDGE_URI = "/fridge/group";
+    public static final String FRIDGE_TYPENAME = "intel.fridge.group";
+    private static String TAG = "FridgeResource: ";
+
+    private void logMessage(String msg) {
+        Intent intent = new Intent(Resource.INTENT);
+        intent.putExtra("message", msg);
+        mContext.sendBroadcast(intent);
+    }
+}
diff --git a/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/LightResource.java b/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/LightResource.java
new file mode 100755 (executable)
index 0000000..dcb1423
--- /dev/null
@@ -0,0 +1,161 @@
+/*
+ * //******************************************************************
+ * //
+ * // 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.examples;
+
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import org.iotivity.base.EntityHandlerResult;
+import org.iotivity.base.OcException;
+import org.iotivity.base.OcPlatform;
+import org.iotivity.base.OcRepresentation;
+import org.iotivity.base.OcResourceHandle;
+import org.iotivity.base.OcResourceRequest;
+import org.iotivity.base.OcResourceResponse;
+import org.iotivity.base.RequestHandlerFlag;
+import org.iotivity.base.ResourceProperty;
+
+import java.util.EnumSet;
+
+
+/**
+ * LightResource
+ * <p/>
+ * LightResource is a sample OIC server resource created by the refrigerator.
+ */
+public class LightResource extends Resource implements OcPlatform.EntityHandler {
+    LightResource(Context context) {
+        mContext = context;
+
+        registerLightResource();
+    }
+
+    private void registerLightResource() {
+        try {
+            logMessage(TAG + "RegisterLightResource " + LIGHT_URI + " : " + RESOURCE_TYPELIGHT);
+            mResourceHandle = OcPlatform.registerResource(
+                    LIGHT_URI,
+                    RESOURCE_TYPELIGHT,
+                    OcPlatform.DEFAULT_INTERFACE,
+                    this,
+                    EnumSet.of(ResourceProperty.DISCOVERABLE));
+        } catch (OcException e) {
+            logMessage(TAG + "Failed to register LightResource");
+            Log.e(TAG, e.getMessage());
+        }
+        logMessage("-----------------------------------------------------");
+    }
+
+    /**
+     * sample implementation of eventHandler for lightResource - this can be implemented in many
+     * different ways
+     *
+     * @param ocResourceRequest OcResourceRequest from the client
+     * @return EntityHandlerResult indicates whether the request was handled successfully or not
+     */
+    @Override
+    public synchronized EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
+        EntityHandlerResult result = EntityHandlerResult.ERROR;
+        if (null != ocResourceRequest) {
+            try {
+                if (ocResourceRequest.getRequestHandlerFlagSet().contains(
+                        RequestHandlerFlag.REQUEST)) {
+                    OcResourceResponse response = new OcResourceResponse();
+                    response.setRequestHandle(ocResourceRequest.getRequestHandle());
+                    response.setResourceHandle(ocResourceRequest.getResourceHandle());
+                    switch (ocResourceRequest.getRequestType()) {
+                        case GET:
+                            response.setErrorCode(Resource.SUCCESS);
+                            updateRepresentationValues();
+                            response.setResourceRepresentation(mRepresentation);
+                            response.setResponseResult(EntityHandlerResult.OK);
+                            OcPlatform.sendResponse(response);
+                            result = EntityHandlerResult.OK;
+                            break;
+                        case PUT:
+                            response.setErrorCode(Resource.SUCCESS);
+                            put(ocResourceRequest.getResourceRepresentation());
+                            updateRepresentationValues();
+                            response.setResourceRepresentation(mRepresentation);
+                            response.setResponseResult(EntityHandlerResult.OK);
+                            OcPlatform.sendResponse(response);
+                            result = EntityHandlerResult.OK;
+                            break;
+                    }
+                }
+            } catch (OcException e) {
+                logMessage("Error in handleEntity");
+                Log.e(TAG, e.getMessage());
+                return EntityHandlerResult.ERROR;
+            }
+        }
+        logMessage("-----------------------------------------------------");
+        return result;
+    }
+
+    public OcResourceHandle getHandle() {
+        return mResourceHandle;
+    }
+
+    /**
+     * update the value of light (ON/ OFF) from the representation
+     *
+     * @param representation new state of light
+     */
+    private void put(OcRepresentation representation) {
+        try {
+            mIsLightOn = representation.getValue(LIGHT_STATUS_KEY);
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
+        }
+    }
+
+    /**
+     * helper function to update the current state of the light
+     */
+    private void updateRepresentationValues() {
+        try {
+            mRepresentation.setValue(LIGHT_STATUS_KEY, mIsLightOn);
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
+        }
+    }
+
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    private Context mContext;
+    private boolean mIsLightOn = false;
+
+    private static String TAG = "LightResource: ";
+    public static final String LIGHT_URI = "/light";
+    public static final String RESOURCE_TYPELIGHT = "intel.fridge.light";
+    public static final String LIGHT_STATUS_KEY = "light";
+
+    private void logMessage(String msg) {
+        Intent intent = new Intent(Resource.INTENT);
+        intent.putExtra(Resource.MESSAGE, msg);
+        mContext.sendBroadcast(intent);
+    }
+}
diff --git a/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/Refrigerator.java b/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/Refrigerator.java
new file mode 100755 (executable)
index 0000000..b81c07b
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * //******************************************************************
+ * //
+ * // 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.examples;
+
+import android.content.Context;
+
+/**
+ * Refrigerator
+ * <p/>
+ * Refrigerator class has different objects (resources) which are instantiated when a
+ * Refrigerator object is created. Operations are performed on each of the individual resources.
+ */
+public class Refrigerator {
+    public static final String LEFT_SIDE = "left";
+    public static final String RIGHT_SIDE = "right";
+    public static final String RANDOM_SIDE = "random";
+
+    private FridgeResource mFridge;
+    private LightResource mLight;
+    private DoorResource mLeftDoor;
+    private DoorResource mRightDoor;
+    private DoorResource mRandomDoor;
+
+    /**
+     * constructor - creates resources of light and doors
+     *
+     * @param context needed by individual resources to be able to send broadcast
+     *                messages to be displayed on the user screen
+     */
+    Refrigerator(Context context) {
+        mFridge = new FridgeResource(context);
+        mLight = new LightResource(context);
+        mLeftDoor = new DoorResource(LEFT_SIDE, context);
+        mRightDoor = new DoorResource(RIGHT_SIDE, context);
+        mRandomDoor = new DoorResource(RANDOM_SIDE, context);
+
+        mLight.bindTo(mFridge.getHandle());
+        mLeftDoor.bindTo(mFridge.getHandle());
+        mRightDoor.bindTo(mFridge.getHandle());
+        mRandomDoor.bindTo(mFridge.getHandle());
+    }
+}
\ No newline at end of file
diff --git a/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/Resource.java b/android/examples/fridgegroupserver/src/main/java/org/iotivity/base/examples/Resource.java
new file mode 100755 (executable)
index 0000000..070cacc
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * //******************************************************************
+ * //
+ * // 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.examples;
+
+import android.util.Log;
+
+import org.iotivity.base.OcException;
+import org.iotivity.base.OcPlatform;
+import org.iotivity.base.OcRepresentation;
+import org.iotivity.base.OcResourceHandle;
+
+/**
+ * Resource
+ * <p/>
+ * Each of the other resource classes (DeviceResource, DoorResource and LightResource extend Resource
+ */
+public abstract class Resource {
+    protected OcResourceHandle mResourceHandle;
+    protected OcRepresentation mRepresentation;
+
+    Resource() {
+        mResourceHandle = null;
+        mRepresentation = new OcRepresentation();
+    }
+
+    public void bindTo(OcResourceHandle collectionResourceHandle) {
+        try {
+            if (null != mResourceHandle && null != collectionResourceHandle) {
+                OcPlatform.bindResource(collectionResourceHandle, mResourceHandle);
+            }
+        } catch (OcException e) {
+            Log.e("Resource", e.getMessage());
+        }
+    }
+
+    public static final int SUCCESS = 200;
+    public static final String INTENT = "org.iotivity.base.examples.fridgegroupserver";
+    public static final String MESSAGE = "message";
+}
\ No newline at end of file
diff --git a/android/examples/fridgegroupserver/src/main/res/drawable-hdpi/iotivityicon.png b/android/examples/fridgegroupserver/src/main/res/drawable-hdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgegroupserver/src/main/res/drawable-hdpi/iotivityicon.png differ
diff --git a/android/examples/fridgegroupserver/src/main/res/drawable-hdpi/iotivitylogo.png b/android/examples/fridgegroupserver/src/main/res/drawable-hdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgegroupserver/src/main/res/drawable-hdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgegroupserver/src/main/res/drawable-mdpi/iotivityicon.png b/android/examples/fridgegroupserver/src/main/res/drawable-mdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgegroupserver/src/main/res/drawable-mdpi/iotivityicon.png differ
diff --git a/android/examples/fridgegroupserver/src/main/res/drawable-mdpi/iotivitylogo.png b/android/examples/fridgegroupserver/src/main/res/drawable-mdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgegroupserver/src/main/res/drawable-mdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/iotivityicon.png b/android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/iotivityicon.png differ
diff --git a/android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/iotivitylogo.png b/android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgegroupserver/src/main/res/drawable-xhdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/iotivityicon.png b/android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/iotivityicon.png differ
diff --git a/android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/iotivitylogo.png b/android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgegroupserver/src/main/res/drawable-xxhdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgegroupserver/src/main/res/layout/activity_fridge_server.xml b/android/examples/fridgegroupserver/src/main/res/layout/activity_fridge_server.xml
new file mode 100755 (executable)
index 0000000..bb51189
--- /dev/null
@@ -0,0 +1,40 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context=".FridgeGroupServer">
+    <Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/button"
+        android:layout_centerHorizontal="true"
+        android:textOff="Start"
+        android:textOn="Stop"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:text="Start" />
+    <ScrollView
+        android:layout_below="@id/button"
+        android:layout_above="@+id/imageView"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:fillViewport="true"
+        android:id="@+id/scrollView">
+        <TextView android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/consoleTextView" />
+    </ScrollView>
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/imageView"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:src="@drawable/iotivitylogo" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/android/examples/fridgegroupserver/src/main/res/values-w820dp/dimens.xml b/android/examples/fridgegroupserver/src/main/res/values-w820dp/dimens.xml
new file mode 100755 (executable)
index 0000000..63fc816
--- /dev/null
@@ -0,0 +1,6 @@
+<resources>
+    <!-- Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+</resources>
diff --git a/android/examples/fridgegroupserver/src/main/res/values/dimens.xml b/android/examples/fridgegroupserver/src/main/res/values/dimens.xml
new file mode 100755 (executable)
index 0000000..47c8224
--- /dev/null
@@ -0,0 +1,5 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+</resources>
diff --git a/android/examples/fridgegroupserver/src/main/res/values/strings.xml b/android/examples/fridgegroupserver/src/main/res/values/strings.xml
new file mode 100755 (executable)
index 0000000..1f5ceed
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="app_name">FridgeGroupServer</string>
+</resources>
diff --git a/android/examples/fridgegroupserver/src/main/res/values/styles.xml b/android/examples/fridgegroupserver/src/main/res/values/styles.xml
new file mode 100755 (executable)
index 0000000..ff6c9d2
--- /dev/null
@@ -0,0 +1,8 @@
+<resources>
+
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- Customize your theme here. -->
+    </style>
+
+</resources>
old mode 100644 (file)
new mode 100755 (executable)
index 0fbc5ca..930e26a 100755 (executable)
@@ -1,37 +1,35 @@
-//apply plugin: 'com.android.application'\r
-//\r
-//android {\r
-//    compileSdkVersion 21\r
-//    buildToolsVersion "20.0.0"\r
-//\r
-//    defaultConfig {\r
-//        applicationId "org.iotivity.base.examples.fridgeserver"\r
-//        minSdkVersion 21\r
-//        targetSdkVersion 21\r
-//        versionCode 1\r
-//        versionName "1.0"\r
-//    }\r
-//    buildTypes {\r
-//        release {\r
-//            minifyEnabled false\r
-//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\r
-//        }\r
-//    }\r
-//    lintOptions {\r
-//        abortOnError false\r
-//    }\r
-//}\r
-//repositories {\r
-//    flatDir {\r
-//        dirs "../../android_api/base/build/outputs/aar/"\r
-//    }\r
-//}\r
-//\r
-//try {\r
-//    dependencies {\r
-//        compile ":iotivity-base-${TARGET_ARCH}-${RELEASE}@aar"\r
-//    }\r
-//} catch (all) {\r
-//    print "${ERROR_MSG}"\r
-//    assert all\r
-//}
\ No newline at end of file
+apply plugin: 'com.android.application'
+android {
+    compileSdkVersion 21
+    buildToolsVersion "20.0.0"
+
+    defaultConfig {
+        applicationId "org.iotivity.base.examples.fridgeserver"
+        minSdkVersion 21
+        targetSdkVersion 21
+        versionCode 1
+        versionName "1.0"
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+    lintOptions {
+        abortOnError false
+    }
+}
+repositories {
+    flatDir {
+        dirs "../../android_api/base/build/outputs/aar/"
+    }
+}
+try {
+    dependencies {
+        compile ":iotivity-base-${TARGET_ARCH}-${RELEASE}@aar"
+    }
+} catch (all) {
+    print "${ERROR_MSG}"
+    assert all
+}
\ No newline at end of file
index 65d2947..e479d5f 100755 (executable)
@@ -1,95 +1,92 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="examples" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">\r
-  <component name="FacetManager">\r
-    <facet type="android-gradle" name="Android-Gradle">\r
-      <configuration>\r
-        <option name="GRADLE_PROJECT_PATH" value=":fridgeserver" />\r
-      </configuration>\r
-    </facet>\r
-    <facet type="android" name="Android">\r
-      <configuration>\r
-        <option name="SELECTED_BUILD_VARIANT" value="debug" />\r
-        <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />\r
-        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />\r
-        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />\r
-        <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />\r
-        <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />\r
-        <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugTestSources" />\r
-        <option name="ALLOW_USER_CONFIGURATION" value="false" />\r
-        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />\r
-        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />\r
-        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />\r
-        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />\r
-      </configuration>\r
-    </facet>\r
-  </component>\r
-  <component name="NewModuleRootManager" inherit-compiler-output="false">\r
-    <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />\r
-    <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />\r
-    <exclude-output />\r
-    <content url="file://$MODULE_DIR$">\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/test/debug" isTestSource="true" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/test/debug" isTestSource="true" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/test/debug" isTestSource="true" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/test/debug" isTestSource="true" generated="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/debug" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/test/debug" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />\r
-      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/outputs" />\r
-      <excludeFolder url="file://$MODULE_DIR$/build/tmp" />\r
-    </content>\r
-    <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />\r
-    <orderEntry type="sourceFolder" forTests="false" />\r
-    <orderEntry type="library" exported="" name="iotivity-x86-base-debug-unspecified" level="project" />\r
-    <orderEntry type="library" exported="" name="appcompat-v7-21.0.3" level="project" />\r
-    <orderEntry type="library" exported="" name="support-annotations-21.0.3" level="project" />\r
-    <orderEntry type="library" exported="" name="support-v4-21.0.3" level="project" />\r
-    <orderEntry type="module" module-name="message" exported="" />\r
-  </component>\r
-</module>\r
-\r
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id=":fridgeserver" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="examples" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android-gradle" name="Android-Gradle">
+      <configuration>
+        <option name="GRADLE_PROJECT_PATH" value=":fridgeserver" />
+      </configuration>
+    </facet>
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="SELECTED_BUILD_VARIANT" value="debug" />
+        <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
+        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
+        <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
+        <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
+        <option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
+        <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugAndroidTestSources" />
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />
+        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
+        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
+    <output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+      <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="iotivity-base-armeabi-release" exported="" />
+    <orderEntry type="library" exported="" name="iotivity-base-armeabi-release-unspecified" level="project" />
+  </component>
+</module>
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index 5fb6cc2..7880a0e
@@ -3,8 +3,6 @@
     xmlns:tools="http://schemas.android.com/tools"
     package="org.iotivity.base.examples.fridgeserver">
 
-    <uses-sdk tools:overrideLibrary="org.iotivity.base"></uses-sdk>
-
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.BLUETOOTH"/>
 
     <application
         android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
+        android:icon="@drawable/iotivityicon"
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
+            android:screenOrientation="portrait"
             android:name=".FridgeServer"
             android:label="@string/app_name" >
             <intent-filter>
old mode 100644 (file)
new mode 100755 (executable)
index 9868f32..6ce3c35
@@ -39,17 +39,23 @@ import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
 
-import base.iotivity.org.examples.message.IMessageLogger;
-
 /**
  * DeviceResource
  * <p/>
  * Creates a device resource and performs action based on client requests
  */
-public class DeviceResource extends Resource implements IMessageLogger {
-    private Context mContext;
-
+public class DeviceResource extends Resource implements OcPlatform.EntityHandler {
+    public static final String DEVICE_URI = "/device";
+    public static final String RESOURCE_TYPENAME = "intel.fridge";
+    public static final String API_VERSION = "v.1.0";
+    public static final String CLIENT_TOKEN = "21ae43gf";
+    public static final String DEVICE_NAME = "device_name";
     private static String TAG = "DeviceResource: ";
+    public static final int SUCCESS = 200;
+    public static final int API_VERSION_KEY = 2048;
+    public static final int CLIENT_VERSION_KEY = 3000;
+
+    private Context mContext;
 
     /**
      * constructor
@@ -58,51 +64,20 @@ public class DeviceResource extends Resource implements IMessageLogger {
      */
     DeviceResource(Context context) {
         mContext = context;
-
-        // eventHandler for register deviceResource
-        OcPlatform.EntityHandler eh = new OcPlatform.EntityHandler() {
-            @Override
-            public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
-                // this is where the main logic of DeviceResource is handled
-                return entityHandler(ocResourceRequest);
-            }
-        };
-
-        try {
-            logMessage(TAG + "RegisterDeviceResource " + StringConstants.DEVICE_URI + " : " +
-                    StringConstants.RESOURCE_TYPENAME + " : " + StringConstants.RESOURCE_INTERFACE);
-            mResourceHandle = OcPlatform.registerResource(StringConstants.DEVICE_URI,
-                    StringConstants.RESOURCE_TYPENAME, StringConstants.RESOURCE_INTERFACE,
-                    eh, EnumSet.of(ResourceProperty.DISCOVERABLE));
-        } catch (OcException e) {
-            logMessage(TAG + "registerResource error: " + e.getMessage());
-            Log.e(TAG, e.getMessage());
-        }
+        registerDeviceResource();
     }
 
-    /**
-     * update current state of device
-     *
-     * @return device representation
-     */
-    private void updateRepresentationValues() {
+    private void registerDeviceResource() {
         try {
-            mRepresentation.setValue(StringConstants.DEVICE_NAME,
-                    "Intel Powered 2 door, 1 light refrigerator");
+            logMessage("RegisterDeviceResource " + DEVICE_URI + " : " + RESOURCE_TYPENAME);
+            mResourceHandle = OcPlatform.registerResource(
+                    DEVICE_URI,
+                    RESOURCE_TYPENAME,
+                    OcPlatform.DEFAULT_INTERFACE,
+                    this,
+                    EnumSet.of(ResourceProperty.DISCOVERABLE));
         } catch (OcException e) {
-            Log.e(TAG, e.getMessage());
-        }
-    }
-
-    /**
-     * unregister the resource
-     */
-    private void deleteDeviceResource() {
-        try {
-            OcPlatform.unregisterResource(mResourceHandle);
-            logMessage(TAG + "Unregister DeviceResource successful");
-        } catch (OcException e) {
-            logMessage(TAG + e.getMessage());
+            logMessage(TAG + "Failed to register DeviceResource");
             Log.e(TAG, e.getMessage());
         }
     }
@@ -110,77 +85,81 @@ public class DeviceResource extends Resource implements IMessageLogger {
     /**
      * this is the main method which handles different incoming requests appropriately.
      *
-     * @param request OcResourceRequest from the client
-     * @return EntityHandlerResult depending on whether the request was handled successfully or not
+     * @param ocResourceRequest OcResourceRequest from the client
+     * @return EntityHandlerResult indicates whether the request was handled successfully or not
      */
-    private EntityHandlerResult entityHandler(OcResourceRequest request) {
+    @Override
+    public synchronized EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
         EntityHandlerResult result = EntityHandlerResult.ERROR;
-        if (null != request) {
-            List<OcHeaderOption> headerOptions = request.getHeaderOptions();
+        if (null != ocResourceRequest) {
+            List<OcHeaderOption> headerOptions = ocResourceRequest.getHeaderOptions();
             String clientAPIVersion = "";
             String clientToken = "";
-
             // search for header options map and look for API version and client token
             for (OcHeaderOption headerOption : headerOptions) {
                 int optionId = headerOption.getOptionId();
-                if (StringConstants.API_VERSION_KEY == optionId) {
+                if (API_VERSION_KEY == optionId) {
                     clientAPIVersion = headerOption.getOptionData();
                     logMessage(TAG + " Client API Version: " + clientAPIVersion);
-                } else if (StringConstants.CLIENT_VERSION_KEY == optionId) {
+                } else if (CLIENT_VERSION_KEY == optionId) {
                     clientToken = headerOption.getOptionData();
                     logMessage(TAG + " Client Token: " + clientToken);
                 }
             }
-
-            if (clientAPIVersion.equals(StringConstants.API_VERSION) &&
-                    clientToken.equals(StringConstants.CLIENT_TOKEN)) {
+            if (clientAPIVersion.equals(API_VERSION) &&
+                    clientToken.equals(CLIENT_TOKEN)) {
                 List<OcHeaderOption> serverHeaderOptions = new LinkedList<>();
-                OcHeaderOption apiVersion = new OcHeaderOption(StringConstants.API_VERSION_KEY,
-                        StringConstants.API_VERSION);
+                OcHeaderOption apiVersion = new OcHeaderOption(API_VERSION_KEY,
+                        API_VERSION);
                 serverHeaderOptions.add(apiVersion);
                 try {
-                    if (request.getRequestHandlerFlagSet().contains(RequestHandlerFlag.REQUEST)) {
+                    if (ocResourceRequest.getRequestHandlerFlagSet().contains(RequestHandlerFlag.REQUEST)) {
                         OcResourceResponse response = new OcResourceResponse();
-                        response.setRequestHandle(request.getRequestHandle());
-                        response.setResourceHandle(request.getResourceHandle());
+                        response.setRequestHandle(ocResourceRequest.getRequestHandle());
+                        response.setResourceHandle(ocResourceRequest.getResourceHandle());
                         response.setHeaderOptions(serverHeaderOptions);
 
-                        switch (request.getRequestType()) {
+                        switch (ocResourceRequest.getRequestType()) {
                             case GET:
-                                response.setErrorCode(StringConstants.OK);
+                                response.setErrorCode(SUCCESS);
                                 response.setResponseResult(EntityHandlerResult.OK);
                                 updateRepresentationValues();
                                 response.setResourceRepresentation(mRepresentation);
                                 OcPlatform.sendResponse(response);
                                 break;
-                            case DELETE:
-                                deleteDeviceResource();
-                                response.setErrorCode(StringConstants.OK);
-                                response.setResponseResult(EntityHandlerResult.OK);
-                                break;
                         }
                         result = EntityHandlerResult.OK;
                     }
                 } catch (OcException e) {
-                    logMessage(TAG + e.getMessage());
+                    logMessage("Error in handleEntity of DeviceResource");
                     Log.e(TAG, e.getMessage());
                 }
             }
         }
+        logMessage("-----------------------------------------------------");
         return result;
     }
 
-    @Override
-    public void logMessage(String msg) {
-        logMsg(msg);
-        if (StringConstants.ENABLE_PRINTING) {
-            Log.i(TAG, msg);
+    /**
+     * update state of device
+     *
+     * @return device representation
+     */
+    private void updateRepresentationValues() {
+        try {
+            mRepresentation.setValue(DEVICE_NAME,
+                    "Intel Powered 3 door, 1 light refrigerator");
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
         }
     }
 
-    public void logMsg(final String text) {
-        Intent intent = new Intent(StringConstants.INTENT);
-        intent.putExtra("message", text);
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    public void logMessage(String msg) {
+        Intent intent = new Intent(FridgeServer.INTENT);
+        intent.putExtra("message", msg);
         mContext.sendBroadcast(intent);
     }
 }
old mode 100644 (file)
new mode 100755 (executable)
index c819975..332abba
@@ -37,109 +37,73 @@ import org.iotivity.base.ResourceProperty;
 
 import java.util.EnumSet;
 
-import base.iotivity.org.examples.message.IMessageLogger;
-
 /**
  * DoorResource
  * <p/>
- * Creates a door resource and performs action based on client requests
+ * Creates a door resource and performs actions based on the client requests
  */
-public class DoorResource extends Resource implements IMessageLogger {
-    private Context mContext;
-
-    private static String TAG = "DoorResource: ";
-    private String mSide = StringConstants.LEFT;
-    private boolean mOpen;
-    private String resourceURI;
+public class DoorResource extends Resource implements OcPlatform.EntityHandler {
+    public static final String DOOR_URI = "/door/";
+    public static final String RESOURCE_TYPEDOOR = "intel.fridge.door";
+    public static final String DOOR_STATE_KEY = "state";
+    public static final String DOOR_SIDE_KEY = "side";
+    private boolean mDoorState;
+    private String mSide;
 
     /**
      * Constructor
      *
-     * @param side    left or right side of the door
+     * @param side    side of the door
      * @param context to enable sending of broadcast messages to be displayed on the user screen
      */
     DoorResource(String side, Context context) {
         mContext = context;
         mSide = side;
-
-        resourceURI = StringConstants.DOOR_URI + mSide;
-
-        // eventHandler for register doorResource
-        OcPlatform.EntityHandler eh = new OcPlatform.EntityHandler() {
-            @Override
-            public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
-                // this is where the main logic of DoorResource is handled
-                return entityHandler(ocResourceRequest);
-            }
-        };
-        try {
-            logMessage(TAG + "RegisterDoorResource " + resourceURI + " : " +
-                    StringConstants.RESOURCE_TYPEDOOR + " : " + StringConstants.RESOURCE_INTERFACE);
-            mResourceHandle = OcPlatform.registerResource(resourceURI,
-                    StringConstants.RESOURCE_TYPEDOOR, StringConstants.RESOURCE_INTERFACE,
-                    eh, EnumSet.of(ResourceProperty.DISCOVERABLE));
-        } catch (OcException e) {
-            logMessage(TAG + "DoorResource registerResource error: " + e.getMessage());
-            Log.e(TAG, e.getMessage());
-        }
-    }
-
-    /**
-     * updates the current value of the door resource
-     *
-     * @return door representation
-     */
-    private void updateRepresentationValues() {
-        try {
-            mRepresentation.setValue(StringConstants.SIDE, mSide);
-            mRepresentation.setValue(StringConstants.OPEN, mOpen);
-            mRepresentation.setValue(StringConstants.DEVICE_NAME,
-                    "Intel Powered 2 door, 1 light refrigerator");
-        } catch (OcException e) {
-            Log.e(TAG, e.getMessage());
-        }
+        registerDoorResource();
     }
 
-    /**
-     * update the OPEN value of doorResource (door is open/ closed)
-     *
-     * @param representation get current state of door
-     */
-    private void put(OcRepresentation representation) {
+    private void registerDoorResource() {
+        String resourceURI = DOOR_URI + mSide;
+        logMessage(TAG + "RegisterDoorResource " + resourceURI + " : " + RESOURCE_TYPEDOOR);
         try {
-            mOpen = representation.getValue(StringConstants.OPEN);
+            mResourceHandle = OcPlatform.registerResource(resourceURI,
+                    RESOURCE_TYPEDOOR,
+                    OcPlatform.DEFAULT_INTERFACE,
+                    this,
+                    EnumSet.of(ResourceProperty.DISCOVERABLE));
         } catch (OcException e) {
+            logMessage(TAG + "Failed to register DoorResource");
             Log.e(TAG, e.getMessage());
         }
-        // Note, we won't let the user change the door side!
     }
 
     /**
      * this is the main method which handles different incoming requests appropriately.
      *
-     * @param request OcResourceRequest from the client
-     * @return EntityHandlerResult depending on whether the request was handled successfully or not
+     * @param ocResourceRequest OcResourceRequest from the client
+     * @return EntityHandlerResult indicates whether the request was handled successfully or not
      */
-    private EntityHandlerResult entityHandler(OcResourceRequest request) {
+    @Override
+    public synchronized EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
         EntityHandlerResult result = EntityHandlerResult.ERROR;
-        if (null != request) {
+        if (null != ocResourceRequest) {
             try {
-                if (request.getRequestHandlerFlagSet().contains(RequestHandlerFlag.REQUEST)) {
+                if (ocResourceRequest.getRequestHandlerFlagSet().contains(RequestHandlerFlag.REQUEST)) {
                     OcResourceResponse response = new OcResourceResponse();
-                    response.setRequestHandle(request.getRequestHandle());
-                    response.setResourceHandle(request.getResourceHandle());
+                    response.setRequestHandle(ocResourceRequest.getRequestHandle());
+                    response.setResourceHandle(ocResourceRequest.getResourceHandle());
 
-                    switch (request.getRequestType()) {
+                    switch (ocResourceRequest.getRequestType()) {
                         case GET:
-                            response.setErrorCode(StringConstants.OK);
+                            response.setErrorCode(SUCCESS);
                             updateRepresentationValues();
                             response.setResourceRepresentation(mRepresentation);
                             response.setResponseResult(EntityHandlerResult.OK);
                             OcPlatform.sendResponse(response);
                             break;
                         case PUT:
-                            response.setErrorCode(StringConstants.OK);
-                            put(request.getResourceRepresentation());
+                            response.setErrorCode(SUCCESS);
+                            put(ocResourceRequest.getResourceRepresentation());
                             updateRepresentationValues();
                             response.setResourceRepresentation(mRepresentation);
                             response.setResponseResult(EntityHandlerResult.OK);
@@ -154,25 +118,52 @@ public class DoorResource extends Resource implements IMessageLogger {
                     result = EntityHandlerResult.OK;
                 }
             } catch (OcException e) {
-                logMessage(TAG + e.getMessage());
+                logMessage("Error in handleEntity of DoorResource");
                 Log.e(TAG, e.getMessage());
                 return EntityHandlerResult.ERROR;
             }
         }
+        logMessage("-----------------------------------------------------");
         return result;
     }
 
-    @Override
-    public void logMessage(String msg) {
-        logMsg(msg);
-        if (StringConstants.ENABLE_PRINTING) {
-            Log.i(TAG, msg);
+    /**
+     * helper function to update the current value of the door resource
+     */
+    private void updateRepresentationValues() {
+        try {
+            mRepresentation.setValue(DOOR_STATE_KEY, mDoorState);
+            mRepresentation.setValue(DOOR_SIDE_KEY, mSide);
+            logMessage(TAG + "door state is  " + ((mDoorState == true) ? "open" : "close") +
+                    " and door side is " + mSide);
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
+        }
+    }
+
+    /**
+     * update the value of doorResource, depending on if door is open/ closed
+     *
+     * @param representation new state of a door
+     */
+    private void put(OcRepresentation representation) {
+        try {
+            mDoorState = representation.getValue(DOOR_STATE_KEY);
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
         }
+        // Note, we won't let the user change the door side!
     }
 
-    public void logMsg(final String text) {
-        Intent intent = new Intent(StringConstants.INTENT);
-        intent.putExtra(StringConstants.MESSAGE, text);
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    private Context mContext;
+    private static String TAG = "DoorResource: ";
+
+    public void logMessage(String msg) {
+        Intent intent = new Intent(FridgeServer.INTENT);
+        intent.putExtra(FridgeServer.MESSAGE, msg);
         mContext.sendBroadcast(intent);
     }
-}
+}
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index d564b3d..2f1fa51
@@ -29,12 +29,11 @@ import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
 import android.os.Message;
-import android.support.v4.content.LocalBroadcastManager;
 import android.text.method.ScrollingMovementMethod;
 import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.LinearLayout;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ScrollView;
 import android.widget.TextView;
 
 import org.iotivity.base.ModeType;
@@ -43,103 +42,91 @@ import org.iotivity.base.PlatformConfig;
 import org.iotivity.base.QualityOfService;
 import org.iotivity.base.ServiceType;
 
-import base.iotivity.org.examples.message.IMessageLogger;
-
 /**
  * FridgeServer
  * <p/>
  * This is the main fridgeServer class. This instantiates Refrigerator object
- * which has different resources (DeviceResource, LightResource, DoorResource).
+ * which has different resources (DeviceResource, LightResource, DoorResources).
  */
-public class FridgeServer extends Activity implements IMessageLogger {
-    private Context mContext;
-    private static String TAG = "FridgeServer: ";
-    private TextView mEventsTextView;
-    private MessageReceiver mMessageReceiver = new MessageReceiver();
+public class FridgeServer extends Activity {
     private Refrigerator refrigerator;
 
     /**
      * configure OIC platform and call findResource
      */
-    private void initOICStack() {
+    private void startFridgeServer() {
         //create platform config
         PlatformConfig cfg = new PlatformConfig(
-                this,
+                this, //context
                 ServiceType.IN_PROC,
                 ModeType.SERVER,
                 "0.0.0.0", // bind to all available interfaces
                 0,
                 QualityOfService.LOW);
+        logMessage("Configuring platform");
         OcPlatform.Configure(cfg);
-        logMessage(TAG + "Creating refrigerator resources");
-
-        refrigerator = new Refrigerator(mContext);
+        logMessage("Creating refrigerator resources");
+        refrigerator = new Refrigerator(this);
+        logMessage("-----------------------------------------------------");
     }
 
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    private static String TAG = "FridgeServer: ";
+    public static final String MESSAGE = "message";
+    public static final String INTENT = "org.iotivity.base.examples.fridgeserver";
+    private TextView mConsoleTextView;
+    private ScrollView mScrollView;
+    private MessageReceiver mMessageReceiver = new MessageReceiver();
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_fridge_server);
-        registerReceiver(mMessageReceiver, new IntentFilter(StringConstants.INTENT));
-
-        mEventsTextView = new TextView(this);
-        mEventsTextView.setMovementMethod(new ScrollingMovementMethod());
-        LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout);
-        layout.addView(mEventsTextView, new LinearLayout.LayoutParams
-                (LinearLayout.LayoutParams.MATCH_PARENT, 0, 1f));
-        mContext = this;
-
-        initOICStack();
+        registerReceiver(mMessageReceiver, new IntentFilter(INTENT));
+
+        mConsoleTextView = (TextView) findViewById(R.id.consoleTextView);
+        mConsoleTextView.setMovementMethod(new ScrollingMovementMethod());
+        mScrollView = (ScrollView) findViewById(R.id.scrollView);
+        mScrollView.fullScroll(View.FOCUS_DOWN);
+        final Button button = (Button) findViewById(R.id.button);
+
+        if (null == savedInstanceState) {
+            button.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    button.setEnabled(false);
+                    new Thread(new Runnable() {
+                        public void run() {
+                            startFridgeServer();
+                        }
+                    }).start();
+                }
+            });
+        } else {
+            String consoleOutput = savedInstanceState.getString("consoleOutputString");
+            mConsoleTextView.setText(consoleOutput);
+        }
     }
 
     public class MessageReceiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
-            final String message = intent.getStringExtra(StringConstants.MESSAGE);
+            final String message = intent.getStringExtra(MESSAGE);
             logMessage(message);
         }
     }
 
-    @Override
     public void logMessage(final String text) {
-        if (StringConstants.ENABLE_PRINTING) {
-            runOnUiThread(new Runnable() {
-                public void run() {
-                    final Message msg = new Message();
-                    msg.obj = text;
-                    mEventsTextView.append("\n");
-                    mEventsTextView.append(text);
-                }
-            });
-            Log.i(TAG, text);
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        // Inflate the menu; this adds items to the action bar if it is present.
-        getMenuInflater().inflate(R.menu.menu_fridge_server, menu);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        int id = item.getItemId();
-        if (id == R.id.action_settings) {
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        onStop();
-    }
-
-    @Override
-    protected void onStop() {
-        LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
-        super.onStop();
+        runOnUiThread(new Runnable() {
+            public void run() {
+                final Message msg = new Message();
+                msg.obj = text;
+                mConsoleTextView.append("\n");
+                mConsoleTextView.append(text);
+            }
+        });
+        Log.i(TAG, text);
     }
 }
old mode 100644 (file)
new mode 100755 (executable)
index e0c783f..e33083e
@@ -37,19 +37,16 @@ import org.iotivity.base.ResourceProperty;
 
 import java.util.EnumSet;
 
-import base.iotivity.org.examples.message.IMessageLogger;
-
 /**
  * LightResource
  * <p/>
- * Creates a light resource and performs action based on client requests
+ * Creates a light resource and performs actions based on the client requests
  */
-public class LightResource extends Resource implements IMessageLogger {
-    private Context mContext;
-
-    private static String TAG = "LightResource: ";
-
-    private boolean mIsOn = false;
+public class LightResource extends Resource implements OcPlatform.EntityHandler {
+    public static final String LIGHT_STATUS_KEY = "light";
+    public static final String LIGHT_URI = "/light";
+    public static final String RESOURCE_TYPELIGHT = "intel.fridge.light";
+    private boolean mIsLightOn = false;
 
     /**
      * constructor
@@ -58,70 +55,43 @@ public class LightResource extends Resource implements IMessageLogger {
      */
     LightResource(Context context) {
         mContext = context;
-        //eventHandler for register lightResource
-        OcPlatform.EntityHandler eh = new OcPlatform.EntityHandler() {
-            @Override
-            public EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
-                // this is where the main logic of LightResource is handled
-                return entityHandler(ocResourceRequest);
-            }
-        };
-        try {
-            logMessage(TAG + "RegisterLightResource " + StringConstants.LIGHT_URI + " : " +
-                    StringConstants.RESOURCE_TYPELIGHT + " : " + StringConstants.RESOURCE_INTERFACE);
-            mResourceHandle = OcPlatform.registerResource(StringConstants.LIGHT_URI,
-                    StringConstants.RESOURCE_TYPELIGHT, StringConstants.RESOURCE_INTERFACE,
-                    eh, EnumSet.of(ResourceProperty.DISCOVERABLE));
-        } catch (OcException e) {
-            logMessage(TAG + "LightResource registerResource error: " + e.getMessage());
-            Log.e(TAG, e.getMessage());
-        }
-    }
-
-    /**
-     * updates the current state of the light (on/ off)
-     *
-     * @return light is on or off
-     */
-    private void updateRepresentationValues() {
-        try {
-            mRepresentation.setValue(StringConstants.ON, mIsOn);
-        } catch (OcException e) {
-            Log.e(TAG, e.getMessage());
-        }
+        registerLightResource();
     }
 
-    /**
-     * update the value of mIsOn from the representation
-     *
-     * @param representation get current state of light
-     */
-    private void put(OcRepresentation representation) {
+    private void registerLightResource() {
         try {
-            mIsOn = representation.getValue(StringConstants.ON);
+            logMessage(TAG + "RegisterLightResource " + LIGHT_URI + " : " + RESOURCE_TYPELIGHT);
+            mResourceHandle = OcPlatform.registerResource(LIGHT_URI,
+                    RESOURCE_TYPELIGHT,
+                    OcPlatform.DEFAULT_INTERFACE,
+                    this,
+                    EnumSet.of(ResourceProperty.DISCOVERABLE));
         } catch (OcException e) {
+            logMessage(TAG + "Failed to register LightResource");
             Log.e(TAG, e.getMessage());
         }
+        logMessage("-----------------------------------------------------");
     }
 
     /**
      * this is the main method which handles different incoming requests appropriately.
      *
-     * @param request OcResourceRequest from the client
-     * @return EntityHandlerResult depending on whether the request was handled successfully or not
+     * @param ocResourceRequest OcResourceRequest from the client
+     * @return EntityHandlerResult indicates whether the request was handled successfully or not
      */
-    private EntityHandlerResult entityHandler(OcResourceRequest request) {
+    @Override
+    public synchronized EntityHandlerResult handleEntity(OcResourceRequest ocResourceRequest) {
         EntityHandlerResult result = EntityHandlerResult.ERROR;
-        if (null != request) {
+        if (null != ocResourceRequest) {
             try {
-                if (request.getRequestHandlerFlagSet().contains(RequestHandlerFlag.REQUEST)) {
+                if (ocResourceRequest.getRequestHandlerFlagSet().contains(RequestHandlerFlag.REQUEST)) {
                     OcResourceResponse response = new OcResourceResponse();
-                    response.setRequestHandle(request.getRequestHandle());
-                    response.setResourceHandle(request.getResourceHandle());
+                    response.setRequestHandle(ocResourceRequest.getRequestHandle());
+                    response.setResourceHandle(ocResourceRequest.getResourceHandle());
 
-                    switch (request.getRequestType()) {
+                    switch (ocResourceRequest.getRequestType()) {
                         case GET:
-                            response.setErrorCode(StringConstants.OK);
+                            response.setErrorCode(SUCCESS);
                             updateRepresentationValues();
                             response.setResourceRepresentation(mRepresentation);
                             response.setResponseResult(EntityHandlerResult.OK);
@@ -129,8 +99,8 @@ public class LightResource extends Resource implements IMessageLogger {
                             result = EntityHandlerResult.OK;
                             break;
                         case PUT:
-                            response.setErrorCode(StringConstants.OK);
-                            put(request.getResourceRepresentation());
+                            response.setErrorCode(SUCCESS);
+                            put(ocResourceRequest.getResourceRepresentation());
                             updateRepresentationValues();
                             response.setResourceRepresentation(mRepresentation);
                             response.setResponseResult(EntityHandlerResult.OK);
@@ -140,25 +110,50 @@ public class LightResource extends Resource implements IMessageLogger {
                     }
                 }
             } catch (OcException e) {
-                logMessage(TAG + e.getMessage());
+                logMessage("Error in handleEntity of LightResource");
                 Log.e(TAG, e.getMessage());
                 return EntityHandlerResult.ERROR;
             }
         }
+        logMessage("-----------------------------------------------------");
         return result;
     }
 
-    @Override
-    public void logMessage(String msg) {
-        logMsg(msg);
-        if (StringConstants.ENABLE_PRINTING) {
-            Log.i(TAG, msg);
+    /**
+     * updates the current state of the light (on/ off)
+     *
+     * @return light is on or off
+     */
+    private void updateRepresentationValues() {
+        try {
+            mRepresentation.setValue(LIGHT_STATUS_KEY, mIsLightOn);
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
+        }
+    }
+
+    /**
+     * update the value of mIsOn from the representation
+     *
+     * @param representation get current state of light
+     */
+    private void put(OcRepresentation representation) {
+        try {
+            mIsLightOn = representation.getValue(LIGHT_STATUS_KEY);
+        } catch (OcException e) {
+            Log.e(TAG, e.getMessage());
         }
     }
 
-    public void logMsg(final String text) {
-        Intent intent = new Intent(StringConstants.INTENT);
-        intent.putExtra(StringConstants.MESSAGE, text);
+    //******************************************************************************
+    // End of the OIC specific code
+    //******************************************************************************
+    private Context mContext;
+    private static String TAG = "LightResource: ";
+
+    public void logMessage(String msg) {
+        Intent intent = new Intent(FridgeServer.INTENT);
+        intent.putExtra(FridgeServer.MESSAGE, msg);
         mContext.sendBroadcast(intent);
     }
 }
old mode 100644 (file)
new mode 100755 (executable)
index 66f0e0b..8639f38
@@ -28,10 +28,12 @@ import android.content.Context;
  * Refrigerator
  * <p/>
  * Refrigerator class has different objects (resources) which are instantiated when a
- * Refrigerator object is created. Operations are performed on each of the individual resources.
+ * Refrigerator object is created.
  */
 public class Refrigerator {
-    private Context mContext;
+    public static final String LEFT_SIDE = "left";
+    public static final String RIGHT_SIDE = "right";
+    public static final String RANDOM_SIDE = "random";
 
     private LightResource mLight;
     private DeviceResource mDevice;
@@ -46,12 +48,15 @@ public class Refrigerator {
      *                messages to be displayed on the user screen
      */
     Refrigerator(Context context) {
-        mContext = context;
         mLight = new LightResource(context);
         mDevice = new DeviceResource(context);
-        mLeftDoor = new DoorResource(StringConstants.LEFT, context);
-        mRightDoor = new DoorResource(StringConstants.RIGHT, context);
-        mRandomDoor = new DoorResource(StringConstants.RANDOM, context);
-    }
+        mLeftDoor = new DoorResource(LEFT_SIDE, context);
+        mRightDoor = new DoorResource(RIGHT_SIDE, context);
+        mRandomDoor = new DoorResource(RANDOM_SIDE, context);
 
+        mLight.bindTo(mDevice.getHandle());
+        mLeftDoor.bindTo(mDevice.getHandle());
+        mRightDoor.bindTo(mDevice.getHandle());
+        mRandomDoor.bindTo(mDevice.getHandle());
+    }
 }
old mode 100644 (file)
new mode 100755 (executable)
index 4559a2d..676cae8
 
 package org.iotivity.base.examples.fridgeserver;
 
+import android.util.Log;
+
+import org.iotivity.base.OcException;
+import org.iotivity.base.OcPlatform;
 import org.iotivity.base.OcRepresentation;
 import org.iotivity.base.OcResourceHandle;
 
@@ -38,4 +42,20 @@ public class Resource {
         mResourceHandle = null;
         mRepresentation = new OcRepresentation();
     }
+
+    public void bindTo(OcResourceHandle collectionResourceHandle) {
+        try {
+            if (null != mResourceHandle && null != collectionResourceHandle) {
+                OcPlatform.bindResource(collectionResourceHandle, mResourceHandle);
+            }
+        } catch (OcException e) {
+            Log.e("Resource", e.getMessage());
+        }
+    }
+
+    public OcResourceHandle getHandle() {
+        return mResourceHandle;
+    }
+
+    public static final int SUCCESS = 200;
 }
\ No newline at end of file
diff --git a/android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/StringConstants.java b/android/examples/fridgeserver/src/main/java/org/iotivity/base/examples/fridgeserver/StringConstants.java
deleted file mode 100644 (file)
index 4402c51..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.iotivity.base.examples.fridgeserver;
-
-import org.iotivity.base.OcPlatform;
-
-/**
- * StringConstant contains the fridgeserver specific constant values.  To add another supported
- * Resource or Interface type to this app, begin by adding the new strings here, and then
- * find the places throughout the app where Resource-specific case switches occur, and add
- * the newly-supported type there.
- */
-public interface StringConstants {
-    public static final String DEVICE_URI = "/device";
-    public static final String LIGHT_URI = "/light";
-    public static final String DOOR_URI = "/door/";
-    public static final String DEVICE_NAME = "device_name";
-    public static final String RESOURCE_TYPENAME = "intel.fridge";
-    public static final String RESOURCE_TYPEDOOR = "intel.fridge.door";
-    public static final String RESOURCE_TYPELIGHT = "intel.fridge.light";
-    public static final String API_VERSION = "v.1.2";
-    public static final String CLIENT_TOKEN = "AaBbYyZz";
-    public static final String SIDE = "side";
-    public static final String OPEN = "open";
-    public static final String MESSAGE = "message";
-    public static final String LEFT = "left";
-    public static final String RIGHT = "right";
-    public static final String RANDOM = "random";
-    public static final String ON = "on";
-    public static final String INTENT = "org.iotivity.base.examples.fridgeserver";
-    public static final String RESOURCE_INTERFACE = OcPlatform.DEFAULT_INTERFACE;
-
-    public static final int API_VERSION_KEY = 2048;
-    public static final int CLIENT_VERSION_KEY = 3000;
-    public static final int OK = 200;
-
-    public static final boolean ENABLE_PRINTING = true; // change to false to disable printing
-                                                        // of messages on the console and the screen
-}
diff --git a/android/examples/fridgeserver/src/main/res/drawable-hdpi/iotivityicon.png b/android/examples/fridgeserver/src/main/res/drawable-hdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgeserver/src/main/res/drawable-hdpi/iotivityicon.png differ
diff --git a/android/examples/fridgeserver/src/main/res/drawable-hdpi/iotivitylogo.png b/android/examples/fridgeserver/src/main/res/drawable-hdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgeserver/src/main/res/drawable-hdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgeserver/src/main/res/drawable-mdpi/iotivityicon.png b/android/examples/fridgeserver/src/main/res/drawable-mdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgeserver/src/main/res/drawable-mdpi/iotivityicon.png differ
diff --git a/android/examples/fridgeserver/src/main/res/drawable-mdpi/iotivitylogo.png b/android/examples/fridgeserver/src/main/res/drawable-mdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgeserver/src/main/res/drawable-mdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgeserver/src/main/res/drawable-xhdpi/iotivityicon.png b/android/examples/fridgeserver/src/main/res/drawable-xhdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgeserver/src/main/res/drawable-xhdpi/iotivityicon.png differ
diff --git a/android/examples/fridgeserver/src/main/res/drawable-xhdpi/iotivitylogo.png b/android/examples/fridgeserver/src/main/res/drawable-xhdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgeserver/src/main/res/drawable-xhdpi/iotivitylogo.png differ
diff --git a/android/examples/fridgeserver/src/main/res/drawable-xxhdpi/iotivityicon.png b/android/examples/fridgeserver/src/main/res/drawable-xxhdpi/iotivityicon.png
new file mode 100755 (executable)
index 0000000..e1e4aa7
Binary files /dev/null and b/android/examples/fridgeserver/src/main/res/drawable-xxhdpi/iotivityicon.png differ
diff --git a/android/examples/fridgeserver/src/main/res/drawable-xxhdpi/iotivitylogo.png b/android/examples/fridgeserver/src/main/res/drawable-xxhdpi/iotivitylogo.png
new file mode 100755 (executable)
index 0000000..a7d3115
Binary files /dev/null and b/android/examples/fridgeserver/src/main/res/drawable-xxhdpi/iotivitylogo.png differ
old mode 100644 (file)
new mode 100755 (executable)
index b89205c..8f265a8
@@ -1,18 +1,40 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
-    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
-    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".FridgeServer">
-
-    <TextView android:text="@string/app_name" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-
-    <LinearLayout
+    tools:context=".FridgeServer">
+    <Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/button"
+        android:layout_centerHorizontal="true"
+        android:textOff="Start"
+        android:textOn="Stop"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:text="Start" />
+    <ScrollView
+        android:layout_below="@id/button"
+        android:layout_above="@+id/imageView"
         android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:orientation="vertical"
-        android:id="@+id/linearLayout" >
-    </LinearLayout>
-
-</RelativeLayout>
+        android:layout_height="wrap_content"
+        android:fillViewport="true"
+        android:id="@+id/scrollView">
+        <TextView android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/consoleTextView" />
+    </ScrollView>
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/imageView"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:src="@drawable/iotivitylogo" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/android/examples/fridgeserver/src/main/res/menu/menu_fridge_server.xml b/android/examples/fridgeserver/src/main/res/menu/menu_fridge_server.xml
deleted file mode 100644 (file)
index 9bd3653..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools" tools:context=".FridgeServer">
-    <item android:id="@+id/action_settings" android:title="@string/action_settings"
-        android:orderInCategory="100" app:showAsAction="never" />
-</menu>
old mode 100644 (file)
new mode 100755 (executable)
index 766ab99..ff6c9d2
@@ -1,7 +1,7 @@
 <resources>
 
     <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
         <!-- Customize your theme here. -->
     </style>
 
index be1cea7..2307757 100755 (executable)
@@ -1 +1 @@
-include ':simpleserver', ':simpleclient', ':message', ':fridgeserver', ':fridgeclient', ':guiclient', ':provisioningclient', ':presenceserver', ':presenceclient', ':devicediscoveryclient', ':devicediscoveryserver', ':groupclient', ':groupserver'
+include ':simpleserver', ':simpleclient', ':message', ':fridgeserver', ':fridgeclient', ':guiclient', ':provisioningclient', ':presenceserver', ':presenceclient', ':devicediscoveryclient', ':devicediscoveryserver', ':groupclient', ':groupserver', ':fridgegroupclient', ':fridgegroupserver'