From 9518812e55dab7c77300936686f25fabb5d57812 Mon Sep 17 00:00:00 2001 From: Erich Keane Date: Tue, 16 Sep 2014 14:31:56 -0700 Subject: [PATCH] Removed /csdk/android and /csdk/controller plus /csdk/libcoap-4.1.1/config.log and config.status PatchSet 2: Erich Rebased for submission sake Change-Id: I0d5a355924aca94847aa70f8adcb10c700164cdc Signed-off-by: Charunethran PG --- csdk/android/OCClient/AndroidManifest.xml | 27 - csdk/android/OCClient/ic_launcher-web.png | Bin 51394 -> 0 bytes csdk/android/OCClient/lint.xml | 3 - csdk/android/OCClient/proguard-project.txt | 20 - csdk/android/OCClient/project.properties | 15 - .../OCClient/res/drawable-hdpi/ic_launcher.png | Bin 7658 -> 0 bytes .../OCClient/res/drawable-mdpi/ic_launcher.png | Bin 3777 -> 0 bytes .../OCClient/res/drawable-xhdpi/ic_launcher.png | Bin 12516 -> 0 bytes .../OCClient/res/drawable-xxhdpi/ic_launcher.png | Bin 24777 -> 0 bytes .../OCClient/res/layout/activity_occlient.xml | 7 - .../OCClient/res/layout/fragment_occlient.xml | 16 - csdk/android/OCClient/res/menu/occlient.xml | 11 - csdk/android/OCClient/res/values-v11/styles.xml | 11 - csdk/android/OCClient/res/values-v14/styles.xml | 12 - csdk/android/OCClient/res/values-w820dp/dimens.xml | 10 - csdk/android/OCClient/res/values/dimens.xml | 7 - csdk/android/OCClient/res/values/strings.xml | 8 - csdk/android/OCClient/res/values/styles.xml | 20 - .../src/com/oc/ub/sample/LightControl.java | 83 - .../OCClient/src/com/oc/ub/sample/OCClient.java | 154 -- csdk/android/OCCoap/.cproject | 52 - csdk/android/OCCoap/AndroidManifest.xml | 26 - csdk/android/OCCoap/jni/Android.mk | 98 - csdk/android/OCCoap/jni/Application.mk | 11 - csdk/android/OCCoap/proguard-project.txt | 20 - csdk/android/OCCoap/project.properties | 14 - csdk/android/OCCoap/res/menu/main.xml | 11 - csdk/android/OCCoap/res/values-v11/styles.xml | 11 - csdk/android/OCCoap/res/values-v14/styles.xml | 12 - csdk/android/OCCoap/res/values-w820dp/dimens.xml | 10 - csdk/android/OCCoap/res/values/dimens.xml | 7 - csdk/android/OCCoap/res/values/strings.xml | 8 - csdk/android/OCCoap/res/values/styles.xml | 20 - csdk/android/OCLib/AndroidManifest.xml | 27 - csdk/android/OCLib/proguard-project.txt | 20 - csdk/android/OCLib/project.properties | 15 - .../OCLib/res/drawable-hdpi/ic_launcher.png | Bin 7658 -> 0 bytes .../OCLib/res/drawable-mdpi/ic_launcher.png | Bin 3777 -> 0 bytes .../OCLib/res/drawable-xhdpi/ic_launcher.png | Bin 12516 -> 0 bytes .../OCLib/res/drawable-xxhdpi/ic_launcher.png | Bin 24777 -> 0 bytes csdk/android/OCLib/res/menu/do_not_use_ui.xml | 11 - csdk/android/OCLib/res/values-v11/styles.xml | 11 - csdk/android/OCLib/res/values-v14/styles.xml | 12 - csdk/android/OCLib/res/values-w820dp/dimens.xml | 10 - csdk/android/OCLib/res/values/dimens.xml | 7 - csdk/android/OCLib/res/values/strings.xml | 8 - csdk/android/OCLib/res/values/styles.xml | 20 - csdk/android/OCLib/src/com/oc/OCDiscovery.java | 86 - csdk/android/OCLib/src/com/oc/OCObject.java | 37 - csdk/android/OCLib/src/com/oc/OCObserver.java | 60 - csdk/android/OCLib/src/com/oc/OCResource.java | 169 -- .../OCLib/src/com/oc/OCResourceResultHandler.java | 52 - csdk/android/OCLib/src/com/oc/OCSecurityModel.java | 40 - csdk/android/OCLib/src/com/oc/OCServer.java | 106 -- .../OCLib/src/com/oc/annotations/OCInterface.java | 30 - .../OCLib/src/com/oc/annotations/OCMethod.java | 30 - .../OCLib/src/com/oc/annotations/OCProperty.java | 32 - csdk/android/OCLogger/.cproject | 52 - csdk/android/OCLogger/AndroidManifest.xml | 26 - csdk/android/OCLogger/jni/Android.mk | 40 - csdk/android/OCLogger/jni/Application.mk | 11 - csdk/android/OCLogger/proguard-project.txt | 20 - csdk/android/OCLogger/project.properties | 14 - csdk/android/OCLogger/res/menu/main.xml | 11 - csdk/android/OCLogger/res/values-v11/styles.xml | 11 - csdk/android/OCLogger/res/values-v14/styles.xml | 12 - csdk/android/OCLogger/res/values-w820dp/dimens.xml | 10 - csdk/android/OCLogger/res/values/dimens.xml | 7 - csdk/android/OCLogger/res/values/strings.xml | 8 - csdk/android/OCLogger/res/values/styles.xml | 20 - csdk/android/OCServer/AndroidManifest.xml | 27 - csdk/android/OCServer/ic_launcher-web.png | Bin 51394 -> 0 bytes csdk/android/OCServer/lint.xml | 3 - csdk/android/OCServer/proguard-project.txt | 20 - csdk/android/OCServer/project.properties | 15 - .../OCServer/res/drawable-hdpi/ic_launcher.png | Bin 7658 -> 0 bytes .../OCServer/res/drawable-mdpi/ic_launcher.png | Bin 3777 -> 0 bytes .../OCServer/res/drawable-xhdpi/ic_launcher.png | Bin 12516 -> 0 bytes .../OCServer/res/drawable-xxhdpi/ic_launcher.png | Bin 24777 -> 0 bytes .../OCServer/res/layout/activity_occlient.xml | 7 - .../OCServer/res/layout/fragment_occlient.xml | 16 - csdk/android/OCServer/res/menu/occlient.xml | 11 - csdk/android/OCServer/res/values-v11/styles.xml | 11 - csdk/android/OCServer/res/values-v14/styles.xml | 12 - csdk/android/OCServer/res/values-w820dp/dimens.xml | 10 - csdk/android/OCServer/res/values/dimens.xml | 7 - csdk/android/OCServer/res/values/strings.xml | 8 - csdk/android/OCServer/res/values/styles.xml | 20 - .../src/com/oc/ub/sample/LightControl.java | 91 - .../OCServer/src/com/oc/ub/sample/MyLight.java | 79 - .../OCServer/src/com/oc/ub/sample/OCService.java | 112 -- csdk/android/OCSocket/.cproject | 52 - csdk/android/OCSocket/AndroidManifest.xml | 26 - csdk/android/OCSocket/jni/Android.mk | 58 - csdk/android/OCSocket/proguard-project.txt | 20 - csdk/android/OCSocket/project.properties | 14 - csdk/android/OCSocket/res/layout/activity_main.xml | 7 - csdk/android/OCSocket/res/layout/fragment_main.xml | 16 - csdk/android/OCSocket/res/menu/main.xml | 11 - csdk/android/OCSocket/res/values-v11/styles.xml | 11 - csdk/android/OCSocket/res/values-v14/styles.xml | 12 - csdk/android/OCSocket/res/values-w820dp/dimens.xml | 10 - csdk/android/OCSocket/res/values/dimens.xml | 7 - csdk/android/OCSocket/res/values/strings.xml | 8 - csdk/android/OCSocket/res/values/styles.xml | 20 - csdk/android/OCTBStack/.cproject | 52 - csdk/android/OCTBStack/AndroidManifest.xml | 26 - csdk/android/OCTBStack/jni/Android.mk | 64 - csdk/android/OCTBStack/jni/Application.mk | 11 - csdk/android/OCTBStack/proguard-project.txt | 20 - csdk/android/OCTBStack/project.properties | 14 - csdk/android/OCTBStack/res/menu/main.xml | 11 - csdk/android/OCTBStack/res/values-v11/styles.xml | 11 - csdk/android/OCTBStack/res/values-v14/styles.xml | 12 - .../android/OCTBStack/res/values-w820dp/dimens.xml | 10 - csdk/android/OCTBStack/res/values/dimens.xml | 7 - csdk/android/OCTBStack/res/values/strings.xml | 8 - csdk/android/OCTBStack/res/values/styles.xml | 20 - csdk/android/OCUBStack/.cproject | 52 - csdk/android/OCUBStack/AndroidManifest.xml | 26 - csdk/android/OCUBStack/jni/Android.mk | 101 - csdk/android/OCUBStack/jni/Application.mk | 11 - csdk/android/OCUBStack/proguard-project.txt | 20 - csdk/android/OCUBStack/project.properties | 14 - csdk/android/OCUBStack/res/menu/main.xml | 11 - csdk/android/OCUBStack/res/values-v11/styles.xml | 11 - csdk/android/OCUBStack/res/values-v14/styles.xml | 12 - .../android/OCUBStack/res/values-w820dp/dimens.xml | 10 - csdk/android/OCUBStack/res/values/dimens.xml | 7 - csdk/android/OCUBStack/res/values/strings.xml | 8 - csdk/android/OCUBStack/res/values/styles.xml | 20 - csdk/android/UnitTests/AndroidManifest.xml | 24 - csdk/android/UnitTests/ic_launcher-web.png | Bin 51394 -> 0 bytes csdk/android/UnitTests/proguard-project.txt | 20 - csdk/android/UnitTests/project.properties | 15 - .../UnitTests/res/drawable-hdpi/ic_launcher.png | Bin 7658 -> 0 bytes .../UnitTests/res/drawable-mdpi/ic_launcher.png | Bin 3777 -> 0 bytes .../UnitTests/res/drawable-xhdpi/ic_launcher.png | Bin 12516 -> 0 bytes .../UnitTests/res/drawable-xxhdpi/ic_launcher.png | Bin 24777 -> 0 bytes .../UnitTests/res/layout/activity_unit_tests.xml | 7 - .../UnitTests/res/layout/fragment_unit_tests.xml | 16 - csdk/android/UnitTests/res/menu/unit_tests.xml | 11 - csdk/android/UnitTests/res/values-v11/styles.xml | 11 - csdk/android/UnitTests/res/values-v14/styles.xml | 12 - .../android/UnitTests/res/values-w820dp/dimens.xml | 10 - csdk/android/UnitTests/res/values/dimens.xml | 7 - csdk/android/UnitTests/res/values/strings.xml | 8 - csdk/android/UnitTests/res/values/styles.xml | 20 - .../com/oc/unittests/README_How To Run Test.txt | 3 - .../UnitTests/src/com/oc/unittests/UnitTest.java | 150 -- .../src/com/oc/unittests/UnitTestControlItf.java | 58 - .../src/com/oc/unittests/UnitTestResource.java | 52 - csdk/controller/README.txt | 7 - .../core/include/core/Characteristic.hpp | 114 -- csdk/controller/core/include/core/Core.h | 69 - csdk/controller/core/include/core/Description.hpp | 87 - csdk/controller/core/include/core/Device.hpp | 152 -- csdk/controller/core/include/core/InternalApi.h | 196 -- csdk/controller/core/include/core/Link.hpp | 114 -- csdk/controller/core/include/core/Protocol.hpp | 74 - csdk/controller/core/include/core/Service.hpp | 67 - csdk/controller/core/include/core/SimpleLogger.cpp | 133 -- csdk/controller/core/include/core/SimpleLogger.h | 61 - csdk/controller/core/include/core/UUIDLess.hpp | 50 - csdk/controller/core/makefile | 100 - csdk/controller/core/src/ModelImpl.cpp | 446 ----- csdk/controller/core/src/ModelImpl.h | 101 - csdk/controller/core/test/CCFL-CoreTest.cpp | 230 --- csdk/controller/core/test/MockProtocol.cpp | 361 ---- csdk/controller/core/test/MockProtocol.h | 75 - csdk/controller/src/remoting/LiteConnection.cpp | 49 - csdk/controller/src/remoting/LiteConnection.h | 50 - csdk/controller/src/remoting/LiteRemoting.cpp | 322 ---- csdk/controller/src/remoting/LiteRemoting.h | 133 -- csdk/controller/src/remoting/LiteSession.hpp | 159 -- csdk/controller/src/remoting/LiteSessionImpl.cpp | 69 - csdk/controller/src/remoting/LiteSessionImpl.h | 47 - csdk/controller/src/remoting/LiteTargetDevice.hpp | 73 - .../src/remoting/LiteTargetDeviceProxy.cpp | 46 - .../src/remoting/LiteTargetDeviceProxy.h | 53 - csdk/controller/src/remoting/LiteUUIDLess.hpp | 40 - csdk/libcoap-4.1.1/config.log | 1944 -------------------- csdk/libcoap-4.1.1/config.status | 1004 ---------- csdk/ubstack/README | 20 - csdk/ubstack/include/occore.h | 67 - csdk/ubstack/include/ocinternalapi.h | 131 -- csdk/ubstack/makefile | 153 -- csdk/ubstack/src/ocmodelimpl.cpp | 214 --- csdk/ubstack/src/ocmodelimpl.h | 125 -- csdk/ubstack/test/ubstacktests.cpp | 97 - 190 files changed, 10676 deletions(-) delete mode 100644 csdk/android/OCClient/AndroidManifest.xml delete mode 100644 csdk/android/OCClient/ic_launcher-web.png delete mode 100644 csdk/android/OCClient/lint.xml delete mode 100644 csdk/android/OCClient/proguard-project.txt delete mode 100644 csdk/android/OCClient/project.properties delete mode 100644 csdk/android/OCClient/res/drawable-hdpi/ic_launcher.png delete mode 100644 csdk/android/OCClient/res/drawable-mdpi/ic_launcher.png delete mode 100644 csdk/android/OCClient/res/drawable-xhdpi/ic_launcher.png delete mode 100644 csdk/android/OCClient/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 csdk/android/OCClient/res/layout/activity_occlient.xml delete mode 100644 csdk/android/OCClient/res/layout/fragment_occlient.xml delete mode 100644 csdk/android/OCClient/res/menu/occlient.xml delete mode 100644 csdk/android/OCClient/res/values-v11/styles.xml delete mode 100644 csdk/android/OCClient/res/values-v14/styles.xml delete mode 100644 csdk/android/OCClient/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/OCClient/res/values/dimens.xml delete mode 100644 csdk/android/OCClient/res/values/strings.xml delete mode 100644 csdk/android/OCClient/res/values/styles.xml delete mode 100644 csdk/android/OCClient/src/com/oc/ub/sample/LightControl.java delete mode 100644 csdk/android/OCClient/src/com/oc/ub/sample/OCClient.java delete mode 100644 csdk/android/OCCoap/.cproject delete mode 100644 csdk/android/OCCoap/AndroidManifest.xml delete mode 100644 csdk/android/OCCoap/jni/Android.mk delete mode 100644 csdk/android/OCCoap/jni/Application.mk delete mode 100644 csdk/android/OCCoap/proguard-project.txt delete mode 100644 csdk/android/OCCoap/project.properties delete mode 100644 csdk/android/OCCoap/res/menu/main.xml delete mode 100644 csdk/android/OCCoap/res/values-v11/styles.xml delete mode 100644 csdk/android/OCCoap/res/values-v14/styles.xml delete mode 100644 csdk/android/OCCoap/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/OCCoap/res/values/dimens.xml delete mode 100644 csdk/android/OCCoap/res/values/strings.xml delete mode 100644 csdk/android/OCCoap/res/values/styles.xml delete mode 100644 csdk/android/OCLib/AndroidManifest.xml delete mode 100644 csdk/android/OCLib/proguard-project.txt delete mode 100644 csdk/android/OCLib/project.properties delete mode 100644 csdk/android/OCLib/res/drawable-hdpi/ic_launcher.png delete mode 100644 csdk/android/OCLib/res/drawable-mdpi/ic_launcher.png delete mode 100644 csdk/android/OCLib/res/drawable-xhdpi/ic_launcher.png delete mode 100644 csdk/android/OCLib/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 csdk/android/OCLib/res/menu/do_not_use_ui.xml delete mode 100644 csdk/android/OCLib/res/values-v11/styles.xml delete mode 100644 csdk/android/OCLib/res/values-v14/styles.xml delete mode 100644 csdk/android/OCLib/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/OCLib/res/values/dimens.xml delete mode 100644 csdk/android/OCLib/res/values/strings.xml delete mode 100644 csdk/android/OCLib/res/values/styles.xml delete mode 100644 csdk/android/OCLib/src/com/oc/OCDiscovery.java delete mode 100644 csdk/android/OCLib/src/com/oc/OCObject.java delete mode 100644 csdk/android/OCLib/src/com/oc/OCObserver.java delete mode 100644 csdk/android/OCLib/src/com/oc/OCResource.java delete mode 100644 csdk/android/OCLib/src/com/oc/OCResourceResultHandler.java delete mode 100644 csdk/android/OCLib/src/com/oc/OCSecurityModel.java delete mode 100644 csdk/android/OCLib/src/com/oc/OCServer.java delete mode 100644 csdk/android/OCLib/src/com/oc/annotations/OCInterface.java delete mode 100644 csdk/android/OCLib/src/com/oc/annotations/OCMethod.java delete mode 100644 csdk/android/OCLib/src/com/oc/annotations/OCProperty.java delete mode 100644 csdk/android/OCLogger/.cproject delete mode 100644 csdk/android/OCLogger/AndroidManifest.xml delete mode 100644 csdk/android/OCLogger/jni/Android.mk delete mode 100644 csdk/android/OCLogger/jni/Application.mk delete mode 100644 csdk/android/OCLogger/proguard-project.txt delete mode 100644 csdk/android/OCLogger/project.properties delete mode 100644 csdk/android/OCLogger/res/menu/main.xml delete mode 100644 csdk/android/OCLogger/res/values-v11/styles.xml delete mode 100644 csdk/android/OCLogger/res/values-v14/styles.xml delete mode 100644 csdk/android/OCLogger/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/OCLogger/res/values/dimens.xml delete mode 100644 csdk/android/OCLogger/res/values/strings.xml delete mode 100644 csdk/android/OCLogger/res/values/styles.xml delete mode 100644 csdk/android/OCServer/AndroidManifest.xml delete mode 100644 csdk/android/OCServer/ic_launcher-web.png delete mode 100644 csdk/android/OCServer/lint.xml delete mode 100644 csdk/android/OCServer/proguard-project.txt delete mode 100644 csdk/android/OCServer/project.properties delete mode 100644 csdk/android/OCServer/res/drawable-hdpi/ic_launcher.png delete mode 100644 csdk/android/OCServer/res/drawable-mdpi/ic_launcher.png delete mode 100644 csdk/android/OCServer/res/drawable-xhdpi/ic_launcher.png delete mode 100644 csdk/android/OCServer/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 csdk/android/OCServer/res/layout/activity_occlient.xml delete mode 100644 csdk/android/OCServer/res/layout/fragment_occlient.xml delete mode 100644 csdk/android/OCServer/res/menu/occlient.xml delete mode 100644 csdk/android/OCServer/res/values-v11/styles.xml delete mode 100644 csdk/android/OCServer/res/values-v14/styles.xml delete mode 100644 csdk/android/OCServer/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/OCServer/res/values/dimens.xml delete mode 100644 csdk/android/OCServer/res/values/strings.xml delete mode 100644 csdk/android/OCServer/res/values/styles.xml delete mode 100644 csdk/android/OCServer/src/com/oc/ub/sample/LightControl.java delete mode 100644 csdk/android/OCServer/src/com/oc/ub/sample/MyLight.java delete mode 100644 csdk/android/OCServer/src/com/oc/ub/sample/OCService.java delete mode 100644 csdk/android/OCSocket/.cproject delete mode 100644 csdk/android/OCSocket/AndroidManifest.xml delete mode 100644 csdk/android/OCSocket/jni/Android.mk delete mode 100644 csdk/android/OCSocket/proguard-project.txt delete mode 100644 csdk/android/OCSocket/project.properties delete mode 100644 csdk/android/OCSocket/res/layout/activity_main.xml delete mode 100644 csdk/android/OCSocket/res/layout/fragment_main.xml delete mode 100644 csdk/android/OCSocket/res/menu/main.xml delete mode 100644 csdk/android/OCSocket/res/values-v11/styles.xml delete mode 100644 csdk/android/OCSocket/res/values-v14/styles.xml delete mode 100644 csdk/android/OCSocket/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/OCSocket/res/values/dimens.xml delete mode 100644 csdk/android/OCSocket/res/values/strings.xml delete mode 100644 csdk/android/OCSocket/res/values/styles.xml delete mode 100644 csdk/android/OCTBStack/.cproject delete mode 100644 csdk/android/OCTBStack/AndroidManifest.xml delete mode 100644 csdk/android/OCTBStack/jni/Android.mk delete mode 100644 csdk/android/OCTBStack/jni/Application.mk delete mode 100644 csdk/android/OCTBStack/proguard-project.txt delete mode 100644 csdk/android/OCTBStack/project.properties delete mode 100644 csdk/android/OCTBStack/res/menu/main.xml delete mode 100644 csdk/android/OCTBStack/res/values-v11/styles.xml delete mode 100644 csdk/android/OCTBStack/res/values-v14/styles.xml delete mode 100644 csdk/android/OCTBStack/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/OCTBStack/res/values/dimens.xml delete mode 100644 csdk/android/OCTBStack/res/values/strings.xml delete mode 100644 csdk/android/OCTBStack/res/values/styles.xml delete mode 100644 csdk/android/OCUBStack/.cproject delete mode 100644 csdk/android/OCUBStack/AndroidManifest.xml delete mode 100644 csdk/android/OCUBStack/jni/Android.mk delete mode 100644 csdk/android/OCUBStack/jni/Application.mk delete mode 100644 csdk/android/OCUBStack/proguard-project.txt delete mode 100644 csdk/android/OCUBStack/project.properties delete mode 100644 csdk/android/OCUBStack/res/menu/main.xml delete mode 100644 csdk/android/OCUBStack/res/values-v11/styles.xml delete mode 100644 csdk/android/OCUBStack/res/values-v14/styles.xml delete mode 100644 csdk/android/OCUBStack/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/OCUBStack/res/values/dimens.xml delete mode 100644 csdk/android/OCUBStack/res/values/strings.xml delete mode 100644 csdk/android/OCUBStack/res/values/styles.xml delete mode 100644 csdk/android/UnitTests/AndroidManifest.xml delete mode 100644 csdk/android/UnitTests/ic_launcher-web.png delete mode 100644 csdk/android/UnitTests/proguard-project.txt delete mode 100644 csdk/android/UnitTests/project.properties delete mode 100644 csdk/android/UnitTests/res/drawable-hdpi/ic_launcher.png delete mode 100644 csdk/android/UnitTests/res/drawable-mdpi/ic_launcher.png delete mode 100644 csdk/android/UnitTests/res/drawable-xhdpi/ic_launcher.png delete mode 100644 csdk/android/UnitTests/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 csdk/android/UnitTests/res/layout/activity_unit_tests.xml delete mode 100644 csdk/android/UnitTests/res/layout/fragment_unit_tests.xml delete mode 100644 csdk/android/UnitTests/res/menu/unit_tests.xml delete mode 100644 csdk/android/UnitTests/res/values-v11/styles.xml delete mode 100644 csdk/android/UnitTests/res/values-v14/styles.xml delete mode 100644 csdk/android/UnitTests/res/values-w820dp/dimens.xml delete mode 100644 csdk/android/UnitTests/res/values/dimens.xml delete mode 100644 csdk/android/UnitTests/res/values/strings.xml delete mode 100644 csdk/android/UnitTests/res/values/styles.xml delete mode 100644 csdk/android/UnitTests/src/com/oc/unittests/README_How To Run Test.txt delete mode 100644 csdk/android/UnitTests/src/com/oc/unittests/UnitTest.java delete mode 100644 csdk/android/UnitTests/src/com/oc/unittests/UnitTestControlItf.java delete mode 100644 csdk/android/UnitTests/src/com/oc/unittests/UnitTestResource.java delete mode 100644 csdk/controller/README.txt delete mode 100644 csdk/controller/core/include/core/Characteristic.hpp delete mode 100644 csdk/controller/core/include/core/Core.h delete mode 100644 csdk/controller/core/include/core/Description.hpp delete mode 100644 csdk/controller/core/include/core/Device.hpp delete mode 100644 csdk/controller/core/include/core/InternalApi.h delete mode 100644 csdk/controller/core/include/core/Link.hpp delete mode 100644 csdk/controller/core/include/core/Protocol.hpp delete mode 100644 csdk/controller/core/include/core/Service.hpp delete mode 100644 csdk/controller/core/include/core/SimpleLogger.cpp delete mode 100644 csdk/controller/core/include/core/SimpleLogger.h delete mode 100644 csdk/controller/core/include/core/UUIDLess.hpp delete mode 100644 csdk/controller/core/makefile delete mode 100644 csdk/controller/core/src/ModelImpl.cpp delete mode 100644 csdk/controller/core/src/ModelImpl.h delete mode 100644 csdk/controller/core/test/CCFL-CoreTest.cpp delete mode 100644 csdk/controller/core/test/MockProtocol.cpp delete mode 100644 csdk/controller/core/test/MockProtocol.h delete mode 100644 csdk/controller/src/remoting/LiteConnection.cpp delete mode 100644 csdk/controller/src/remoting/LiteConnection.h delete mode 100644 csdk/controller/src/remoting/LiteRemoting.cpp delete mode 100644 csdk/controller/src/remoting/LiteRemoting.h delete mode 100644 csdk/controller/src/remoting/LiteSession.hpp delete mode 100644 csdk/controller/src/remoting/LiteSessionImpl.cpp delete mode 100644 csdk/controller/src/remoting/LiteSessionImpl.h delete mode 100644 csdk/controller/src/remoting/LiteTargetDevice.hpp delete mode 100644 csdk/controller/src/remoting/LiteTargetDeviceProxy.cpp delete mode 100644 csdk/controller/src/remoting/LiteTargetDeviceProxy.h delete mode 100644 csdk/controller/src/remoting/LiteUUIDLess.hpp delete mode 100644 csdk/libcoap-4.1.1/config.log delete mode 100755 csdk/libcoap-4.1.1/config.status delete mode 100644 csdk/ubstack/README delete mode 100644 csdk/ubstack/include/occore.h delete mode 100644 csdk/ubstack/include/ocinternalapi.h delete mode 100644 csdk/ubstack/makefile delete mode 100644 csdk/ubstack/src/ocmodelimpl.cpp delete mode 100644 csdk/ubstack/src/ocmodelimpl.h delete mode 100644 csdk/ubstack/test/ubstacktests.cpp diff --git a/csdk/android/OCClient/AndroidManifest.xml b/csdk/android/OCClient/AndroidManifest.xml deleted file mode 100644 index f630fc2..0000000 --- a/csdk/android/OCClient/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCClient/ic_launcher-web.png b/csdk/android/OCClient/ic_launcher-web.png deleted file mode 100644 index a18cbb48c431dfcc163fce2b6e27e981f8c09f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51394 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 - - \ No newline at end of file diff --git a/csdk/android/OCClient/proguard-project.txt b/csdk/android/OCClient/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/csdk/android/OCClient/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/csdk/android/OCClient/project.properties b/csdk/android/OCClient/project.properties deleted file mode 100644 index 0a91e62..0000000 --- a/csdk/android/OCClient/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 -android.library.reference.1=../OCLib diff --git a/csdk/android/OCClient/res/drawable-hdpi/ic_launcher.png b/csdk/android/OCClient/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 288b66551d1efd1f13dd06f20a67534d2df57946..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7658 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 diff --git a/csdk/android/OCClient/res/drawable-xhdpi/ic_launcher.png b/csdk/android/OCClient/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index d4fb7cd9d868f1d7d9964f1686dcbc018ef9495a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12516 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 diff --git a/csdk/android/OCClient/res/layout/activity_occlient.xml b/csdk/android/OCClient/res/layout/activity_occlient.xml deleted file mode 100644 index ddca803..0000000 --- a/csdk/android/OCClient/res/layout/activity_occlient.xml +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/csdk/android/OCClient/res/layout/fragment_occlient.xml b/csdk/android/OCClient/res/layout/fragment_occlient.xml deleted file mode 100644 index 6a1b26e..0000000 --- a/csdk/android/OCClient/res/layout/fragment_occlient.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/csdk/android/OCClient/res/menu/occlient.xml b/csdk/android/OCClient/res/menu/occlient.xml deleted file mode 100644 index 17e8a8d..0000000 --- a/csdk/android/OCClient/res/menu/occlient.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/OCClient/res/values-v11/styles.xml b/csdk/android/OCClient/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/OCClient/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/OCClient/res/values-v14/styles.xml b/csdk/android/OCClient/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/OCClient/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/OCClient/res/values-w820dp/dimens.xml b/csdk/android/OCClient/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/OCClient/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/OCClient/res/values/dimens.xml b/csdk/android/OCClient/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/OCClient/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/OCClient/res/values/strings.xml b/csdk/android/OCClient/res/values/strings.xml deleted file mode 100644 index 365bc25..0000000 --- a/csdk/android/OCClient/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - OCClient - Hello world! - Settings - - diff --git a/csdk/android/OCClient/res/values/styles.xml b/csdk/android/OCClient/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/OCClient/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/OCClient/src/com/oc/ub/sample/LightControl.java b/csdk/android/OCClient/src/com/oc/ub/sample/LightControl.java deleted file mode 100644 index eb5222a..0000000 --- a/csdk/android/OCClient/src/com/oc/ub/sample/LightControl.java +++ /dev/null @@ -1,83 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.ub.sample; - -import com.oc.OCObserver; -import com.oc.annotations.OCInterface; -import com.oc.annotations.OCProperty; - -/** - * APPLICATION NOTE: This interface is exposed to via the framework because of the @OCInterface - * annotation. Without the annotation, this interface would be ignored by the framework. - * - * APPLICATION NOTE: This interface needs to be accessible on the client and the server as the - * contract for operation. - * - */ -@OCInterface -public interface LightControl { - /** - * APPLICATION NOTE: This is a synchronous request. It will throw immediately if the stack is down - * or the network is otherwise not available. It may throw is the remote side does not responds or - * returns an error. - * - * @param powered - The new power state of this implemented interface. - */ - @OCProperty(name = "powered") - void setPowered(boolean powered); - - /** - * APPLICATION NOTE: This is a synchronous request. It will throw immediately if the stack is down - * or the network is otherwise not available. It may throw is the remote side does not responds or - * returns an error. - * - * @return Returns power state of this implemented interface. - */ - @OCProperty(name = "powered") - boolean isPowered(); - - /** - * APPLICATION NOTE: It is the objects responsibility to throw an exception (TBD) if it cannot - * handle an additional observers which will in turn return an error to the requestor. - * - * @param observer the observer that will be notified when a change to the power property has - * occurred. - */ - @OCProperty(name = "powered") - void addPoweredObserver(OCObserver observer); - - /** - * APPLICATION NOTE: Even properties (or methods) that are not annotated are exposed, by default, - * via the framework. Getter and setter methods are assumed to be properties unless annotated - * otherwise. - * - * @param level - Sets the power level of this implemented interface. - */ - void setLevel(int level); - - int getLevel(); - - /** - * APPLICATION NOTE: This is an example of a method. The annotation is not required except to - * override the defaults. - */ - void flash(); -} diff --git a/csdk/android/OCClient/src/com/oc/ub/sample/OCClient.java b/csdk/android/OCClient/src/com/oc/ub/sample/OCClient.java deleted file mode 100644 index 7dad3e6..0000000 --- a/csdk/android/OCClient/src/com/oc/ub/sample/OCClient.java +++ /dev/null @@ -1,154 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.ub.sample; - -import com.oc.OCDiscovery; -import com.oc.OCObserver; -import com.oc.OCResource; -import com.oc.OCResourceResultHandler; -import com.oc.OCServer; -import com.oc.ub.sampleclient.R; - -import android.app.Activity; -import android.app.Fragment; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; - -public class OCClient extends Activity { - private static String TAG = "OCCLIENT"; - private OCServer ocServer = null; - private OCDiscovery ocDiscovery = null; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_occlient); - - if (savedInstanceState == null) { - getFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()) - .commit(); - } - - ocServer = new OCServer(); - ocServer.start(); - ocDiscovery = ocServer.getDiscoverySingleton(); - - /* - * APPLICATION NOTE: All callbacks will come through on a new thread and will not interfere with - * the UI thread or the Framework Thread (i.e. Networking Thread) which means that you need to - * use a Handler() to post back to the UI. - */ - ocDiscovery.findResourceByType(null, null, new OCResourceResultHandler() { - @Override - public void onResourcesFound(String serviceURL, OCResource[] resources) { - // NOTE: This means that a service is reporting back zero or more resources - // During the callback, lets check to see if the resource supports the - // light control interface and turn the light on and then subscribe to any changes in the - // light's power state. - for (OCResource resource : resources) { - try { - LightControl control = resource.getInterface(LightControl.class); - - if (control != null) { - control.setPowered(true); - control.isPowered(); - /* - * APPLICATION NOTE: All callbacks will come through on a new thread and will not - * interfere with the UI thread or the Framework Thread (i.e. Networking Thread) which - * means that you need to use a Handler() to post back to the UI. - */ - control.addPoweredObserver(new OCObserver() { - @Override - public void onChanged(Boolean data) { - // TODO: Tell the UI! The state of the Light has changed. - - } - - @Override - public void onFailed(Throwable throwable) { - // TODO: Tell the UI! We are no longer subscribed to events for the Light's power - // state. - } - }); - } - } catch (Exception exception) { - // TODO: Ooops - } - } - - } - - @Override - public void onFailed(Throwable throwable) { - // TODO: Handle the error. The request to find resources has failed. - } - - @Override - public void onCompleted() { - // Nothing to do here... we are just done finding resources is all. - } - }); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.occlient, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will automatically handle clicks on the - // Home/Up button, so long as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - if (id == R.id.action_settings) { - return true; - } - return super.onOptionsItemSelected(item); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - - ocServer.stop(); - } - - /** - * A placeholder fragment containing a simple view. - */ - public static class PlaceholderFragment extends Fragment { - - public PlaceholderFragment() {} - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_occlient, container, false); - return rootView; - } - } -} diff --git a/csdk/android/OCCoap/.cproject b/csdk/android/OCCoap/.cproject deleted file mode 100644 index 16a5f85..0000000 --- a/csdk/android/OCCoap/.cproject +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCCoap/AndroidManifest.xml b/csdk/android/OCCoap/AndroidManifest.xml deleted file mode 100644 index de90b6a..0000000 --- a/csdk/android/OCCoap/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCCoap/jni/Android.mk b/csdk/android/OCCoap/jni/Android.mk deleted file mode 100644 index de45982..0000000 --- a/csdk/android/OCCoap/jni/Android.mk +++ /dev/null @@ -1,98 +0,0 @@ -# OCCOAP # -LOCAL_PATH := $(call my-dir) - -ifeq ($(CCFL_CORE), ) -CCFL_CORE := $(HOME)/peg_ccfl-core -endif - -ifeq ($(LOGGER_OBJ), ) -LOGGER_OBJ := $(CCFL_CORE)/logger -endif - -ifeq ($(COAP_OBJ), ) -COAP_OBJ := $(CCFL_CORE)/libcoap-4.1.1 -endif - -ifeq ($(OCCOAP_OBJ), ) -OCCOAP_OBJ := $(CCFL_CORE)/occoap -endif - -ifeq ($(TB_OBJ), ) -TB_OBJ := $(CCFL_CORE)/stack -endif - -ifeq ($(SOCKET_OBJ), ) -SOCKET_OBJ := $(CCFL_CORE)/ocsocket -endif - -ifeq ($(ANDROID_OBJ), ) -ANDROID_OBJ := $(CCFL_CORE)/android -endif - -# -# OCSocket -# - -# -# OCLogger -# -include $(CLEAR_VARS) -TARGET_PLATFORM := android-16 -LOCAL_MODULE := oclogger -LOCAL_SRC_FILES := $(ANDROID_OBJ)/OCLogger/obj/local/$(TARGET_ARCH_ABI)/libOCLogger.a -include $(PREBUILT_STATIC_LIBRARY) - -# ============================================================== -# OCCoap - Android -# ============================================================== -include $(CLEAR_VARS) - -TARGET_PLATFORM := android-16 - -LOCAL_CPPFLAGS += -D_GLIBCXX__PTHREADS -LOCAL_CPPFLAGS += -D_THREAD_SAFE -LOCAL_CPPFLAGS += -D_REENTRANT -LOCAL_CPPFLAGS += -std=gnu++11 -LOCAL_CPPFLAGS += -s -LOCAL_CPPFLAGS += -DHAVE_SOCKET_ERRNO - -LOCAL_CFLAGS += -DWITH_POSIX - -ifneq ($(TARGET_ARCH), $(X86_ARCH)) - LOCAL_CPPFLAGS += -D__arm__ -endif - -X86_ARCH := x86 - -LOCAL_MODULE := OCCoap - -LOCAL_SRC_FILES := $(COAP_OBJ)/async.c -LOCAL_SRC_FILES += $(COAP_OBJ)/block.c -LOCAL_SRC_FILES += $(COAP_OBJ)/coap_list.c -LOCAL_SRC_FILES += $(COAP_OBJ)/debug.c -LOCAL_SRC_FILES += $(COAP_OBJ)/encode.c -LOCAL_SRC_FILES += $(COAP_OBJ)/hashkey.c -LOCAL_SRC_FILES += $(COAP_OBJ)/net.c -LOCAL_SRC_FILES += $(COAP_OBJ)/option.c -LOCAL_SRC_FILES += $(COAP_OBJ)/pdu.c -LOCAL_SRC_FILES += $(COAP_OBJ)/resource.c -LOCAL_SRC_FILES += $(COAP_OBJ)/str.c -LOCAL_SRC_FILES += $(COAP_OBJ)/subscribe.c -LOCAL_SRC_FILES += $(COAP_OBJ)/uri.c - -LOCAL_C_INCLUDES := $(COAP_OBJ) - -#== -#== OC STUFF -> Consumes LibCoap stuff -LOCAL_SRC_FILES += $(OCCOAP_OBJ)/src/occoap.c - -LOCAL_C_INCLUDES := $(OCCOAP_OBJ)/include -LOCAL_C_INCLUDES += $(LOGGER_OBJ)/include -LOCAL_C_INCLUDES += $(TB_OBJ)/include/ -LOCAL_C_INCLUDES += $(TB_OBJ)/include/internal -LOCAL_C_INCLUDES += $(SOCKET_OBJ)/include - -LOCAL_STATIC_LIBRARIES := oclogger -#== -#== -include $(BUILD_STATIC_LIBRARY) \ No newline at end of file diff --git a/csdk/android/OCCoap/jni/Application.mk b/csdk/android/OCCoap/jni/Application.mk deleted file mode 100644 index 97e3c0e..0000000 --- a/csdk/android/OCCoap/jni/Application.mk +++ /dev/null @@ -1,11 +0,0 @@ -APP_STL := gnustl_static #stlport_static -APP_PLATFORM := android-16 -APP_ABI := armeabi armeabi-v7a x86 -APP_OPTIM := release -#APP_OPTIM := debug -APP_CPPFLAGS += -fno-strict-aliasing -APP_CPPFLAGS += -std=gnu++11 -APP_CPPFLAGS += -D_GLIBCXX_USE_WCHAR_T -APP_CPPFLAGS += -fexceptions -APP_CPPFLAGS += -frtti -#NDK_TOOLCHAIN_VERSION=4.8 \ No newline at end of file diff --git a/csdk/android/OCCoap/proguard-project.txt b/csdk/android/OCCoap/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/csdk/android/OCCoap/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/csdk/android/OCCoap/project.properties b/csdk/android/OCCoap/project.properties deleted file mode 100644 index 9b84a6b..0000000 --- a/csdk/android/OCCoap/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 diff --git a/csdk/android/OCCoap/res/menu/main.xml b/csdk/android/OCCoap/res/menu/main.xml deleted file mode 100644 index d8ee270..0000000 --- a/csdk/android/OCCoap/res/menu/main.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/OCCoap/res/values-v11/styles.xml b/csdk/android/OCCoap/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/OCCoap/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/OCCoap/res/values-v14/styles.xml b/csdk/android/OCCoap/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/OCCoap/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/OCCoap/res/values-w820dp/dimens.xml b/csdk/android/OCCoap/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/OCCoap/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/OCCoap/res/values/dimens.xml b/csdk/android/OCCoap/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/OCCoap/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/OCCoap/res/values/strings.xml b/csdk/android/OCCoap/res/values/strings.xml deleted file mode 100644 index 7a37934..0000000 --- a/csdk/android/OCCoap/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - OCCoap - Hello world! - Settings - - diff --git a/csdk/android/OCCoap/res/values/styles.xml b/csdk/android/OCCoap/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/OCCoap/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/OCLib/AndroidManifest.xml b/csdk/android/OCLib/AndroidManifest.xml deleted file mode 100644 index 6adac62..0000000 --- a/csdk/android/OCLib/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCLib/proguard-project.txt b/csdk/android/OCLib/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/csdk/android/OCLib/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/csdk/android/OCLib/project.properties b/csdk/android/OCLib/project.properties deleted file mode 100644 index dfa4dd0..0000000 --- a/csdk/android/OCLib/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 -android.library=true diff --git a/csdk/android/OCLib/res/drawable-hdpi/ic_launcher.png b/csdk/android/OCLib/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 288b66551d1efd1f13dd06f20a67534d2df57946..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7658 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 diff --git a/csdk/android/OCLib/res/drawable-xhdpi/ic_launcher.png b/csdk/android/OCLib/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index d4fb7cd9d868f1d7d9964f1686dcbc018ef9495a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12516 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 diff --git a/csdk/android/OCLib/res/menu/do_not_use_ui.xml b/csdk/android/OCLib/res/menu/do_not_use_ui.xml deleted file mode 100644 index cb09cd0..0000000 --- a/csdk/android/OCLib/res/menu/do_not_use_ui.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/OCLib/res/values-v11/styles.xml b/csdk/android/OCLib/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/OCLib/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/OCLib/res/values-v14/styles.xml b/csdk/android/OCLib/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/OCLib/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/OCLib/res/values-w820dp/dimens.xml b/csdk/android/OCLib/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/OCLib/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/OCLib/res/values/dimens.xml b/csdk/android/OCLib/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/OCLib/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/OCLib/res/values/strings.xml b/csdk/android/OCLib/res/values/strings.xml deleted file mode 100644 index 48850e8..0000000 --- a/csdk/android/OCLib/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - OCLib - Hello world! - Settings - - diff --git a/csdk/android/OCLib/res/values/styles.xml b/csdk/android/OCLib/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/OCLib/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/OCLib/src/com/oc/OCDiscovery.java b/csdk/android/OCLib/src/com/oc/OCDiscovery.java deleted file mode 100644 index 322d697..0000000 --- a/csdk/android/OCLib/src/com/oc/OCDiscovery.java +++ /dev/null @@ -1,86 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc; - -import java.util.HashMap; - -public class OCDiscovery { - static private native void jniFindResource(String host, HashMap filter, - OCResourceResultHandler handler); - - /** - * Internal API for Service and Resource Discovery - * - * @param host - Host IP Address of a service to direct resource discovery query. If null or - * empty, performs service discovery OR resource discovery query to ALL group members. - * @param filter - Filter Type - Can be one of two of the link - * format equivalent attribute types declared in table 7 of the - * OC-Lite-Product-Specification-V1 Document. Either "n" (i.e. Resource Name) or "rt" - * (i.e. Resource Type). Value - Can be any valid String that's defined to work with CoRE - * Link Attributes as defined in the RFC6690. - * @param handler - Handles callbacks, success states and failure states. - * - * Four modes of discovery defined as follows: - * (NULL/Empty, NULL/Empty) - Performs ALL service discovery AND ALL resource discovery. - * (NULL/Empty, Not Empty) - Performs query for a filtered/scoped/particular resource(s) - * from ALL services. - * (Not Empty, NULL/Empty) - Performs ALL resource discovery on a particular service. - * (Not Empty, Not Empty) - Performs query for a filtered/scoped/particular resource(s) - * from a particular service. - * - * Thread-Safety: TODO Determine if it is going to be safe to call in a UI thread - */ - private void findResource(String host, HashMap filter, - OCResourceResultHandler handler) { - /*** Have to make sure all values are valid so the pass down to JNI runs smoothly. ***/ - String tempHost = host; - HashMap tempFilter = filter; - if (host == null) { - tempHost = ""; - } - if (filter == null) { - tempFilter = new HashMap(); - tempFilter.put("", ""); // TODO: NOt sure if putting an empty key is necessary if the hashmap is empty. - } - // Todo: Throw exception if handler is invalid (i.e. null). - /*** Done ensuring all values are valid. ***/ - jniFindResource(tempHost, tempFilter, handler); - } - - /** - * Queries the network for available resources. - * - * NOTE: This gets posted to a new thread so it doesn't hold the UI or network thread. - * - * @param serviceURL - The URL to the service. NULL for a broadcast/multicast. - * @param resourceType - The resource type filter. NULL for match any. - * - * @throws This may throw if the service is not started, network is bad, etc. - * - * Thread-Safety: TODO Determine if it is going to be safe to call in a UI thread - */ - public void findResourceByType(String serviceURL, String resourceType, - OCResourceResultHandler handler) { - HashMap filteredMap = new HashMap(); - filteredMap.put("rt", resourceType); - findResource(serviceURL, filteredMap, handler); - } -} diff --git a/csdk/android/OCLib/src/com/oc/OCObject.java b/csdk/android/OCLib/src/com/oc/OCObject.java deleted file mode 100644 index 519279f..0000000 --- a/csdk/android/OCLib/src/com/oc/OCObject.java +++ /dev/null @@ -1,37 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc; - -/** - * - * Represents a basic local resource to be offered to remote services. - * - */ -public interface OCObject { - /** - * Determines if the resource should be listed in the well-known core list. - * - * NOTE: This may be better handled at a different location. - * - * @return Returns true if resource should be listed. - */ - boolean isVisible(); -} diff --git a/csdk/android/OCLib/src/com/oc/OCObserver.java b/csdk/android/OCLib/src/com/oc/OCObserver.java deleted file mode 100644 index eb56775..0000000 --- a/csdk/android/OCLib/src/com/oc/OCObserver.java +++ /dev/null @@ -1,60 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc; - -import java.util.UUID; - -/** - * - * TODO: Consider including Attachment like java.nio.CompletionHandler - * - * @param - */ -public class OCObserver implements Comparable> { - private static UUID observerId = UUID.randomUUID(); - - /** - * - * The OC service calls this at intervals n until the expired callback occurs. - * - */ - public void onChanged(T data) {} - - /** - * Called if a failure occurred. No more events will occur after this is callback. - * - * @param throwable - The error that caused this callback sequence to fail. - */ - public void onFailed(Throwable throwable) {} - - @Override - public int compareTo(OCObserver another) { - return observerId.compareTo(another.getObserverId()); - } - - /** - * - * @return observerId associated with this OCObserver object. - */ - UUID getObserverId() { - return observerId; - } -} diff --git a/csdk/android/OCLib/src/com/oc/OCResource.java b/csdk/android/OCLib/src/com/oc/OCResource.java deleted file mode 100644 index 8f78c20..0000000 --- a/csdk/android/OCLib/src/com/oc/OCResource.java +++ /dev/null @@ -1,169 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc; - -import java.net.URI; -import java.util.ArrayList; - -/** - * Static methods allow you to call to the OC stack, while non-static methods provide traversal - * through the tree of hierarchical resources. Non-static methods also retrieve properties of the - * current OCResource object. - */ -public class OCResource { - private OCResource _parent = null; - private ArrayList _children = null; - private boolean _isContainer = false; - - public OCResource(OCResource parent, ArrayList children, boolean isContainer) { - _parent = parent; - _children = children; - _isContainer = isContainer; - } - - OCResource getParent() { - return _parent; - } - - ArrayList getChildren() { - return _children; - } - - /** - * Recursively gets all the operable resources below this in the tree to a depth of 2. - * - * @return Returns an ArrayList of operable OCResource objects below this OCResource's position in - * the tree. - */ - ArrayList getResource() { - return getResources(2); - } - - /** - * Recursively gets all the operable resources below this in the tree. - * - * @param depth - The depth to traverse the tree downward. - * @return Returns an ArrayList of operable OCResource objects below this OCResource's position in - * the tree. - */ - ArrayList getResources(int depth) { - if (depth - 1 <= 0) { - return null; - } - ArrayList retRes = new ArrayList(); - if (_isContainer == true) { // If this is a resource container, add all the resources below me - // in my tree. - for (OCResource child : getChildren()) { - retRes.addAll(child.getResources(depth - 1)); - } - } else { - retRes.add(OCResource.this); - } - return retRes; - } - - /** - * Recursively gets all the container (i.e. inoperable) resources below this in the tree to a - * depth of 2. - * - * @return Returns an ArrayList of inoperable OCResource objects below this OCResource's position - * in the tree. - */ - ArrayList getResourceContainers() { - return getResourceContainers(2); - } - - /** - * Recursively gets all the container (i.e. inoperable) resources below this in the tree. - * - * @param depth - The depth to traverse the tree downward. - * - * @return Returns an ArrayList of inoperable OCResource objects below this OCResource's position - * in the tree. - */ - ArrayList getResourceContainers(int depth) { - if (depth - 1 <= 0) { - return null; - } - ArrayList retRes = new ArrayList(); - if (_isContainer == true) { - for (OCResource child : getChildren()) { - retRes.addAll(child.getResourceContainers(depth - 1)); - } - retRes.add(OCResource.this); - } - return retRes; - } - /** - * Recursively gets all the resources (operable & inoperable) resources below this in the tree - * to a depth of 2. - * - * @return Returns an ArrayList of operable & inoperable OCResource objects below this - * OCResource's position in the tree. - */ - ArrayList getAllResources() { - return getAllResources(2); - } - - /** - * Recursively gets all the resources (operable & inoperable) resources below this in the tree. - * - * @param depth - The depth to traverse the tree downward. - * - * @return Returns an ArrayList of operable & inoperable OCResource objects below this - * OCResource's position in the tree. - */ - ArrayList getAllResources(int depth) { - if (depth - 1 <= 0) { - return null; - } - ArrayList retRes = new ArrayList(); - if (_isContainer == true) { - for (OCResource child : getChildren()) { - retRes.addAll(child.getAllResources(depth - 1)); - } - retRes.add(OCResource.this); - } else { - retRes.add(OCResource.this); - } - return retRes; - } - - /** - * - * @return Returns the resource URI to address this Resource. You can determine the service that - * is hosting this resource by parsing this URI. - */ - URI getURI() { - return null; - } - - /** - * Returns the requested interface for this resource - * - * @param interfaceClass - The interface that is desired. - * - * @return The interface requested or NULL if not supported. - */ - public T getInterface(java.lang.Class interfaceClass) { - return null; - } -} diff --git a/csdk/android/OCLib/src/com/oc/OCResourceResultHandler.java b/csdk/android/OCLib/src/com/oc/OCResourceResultHandler.java deleted file mode 100644 index 43d389f..0000000 --- a/csdk/android/OCLib/src/com/oc/OCResourceResultHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc; - -import java.io.Serializable; - -/** - * - * When a request or command is issued to a resource, an OCResourceResultHandler object must be - * passed as a parameter to handle the callback(s). - * - */ -public interface OCResourceResultHandler extends Serializable { - /** - * - * The OC service calls this repeatedly until completed() or failed() is called. - * - * @param serviceURI - The URI of the reporting service. - * @param resources - The list of resources found on the remote service. - */ - void onResourcesFound(String serviceURI, OCResource[] resources); - - /** - * Called after all of the found resource(s) are reported. - */ - void onCompleted(); - - /** - * Called if a failure occurred. No resources will be reported after this callback. - * - * @param throwable - The error that caused this callback sequence to fail. - */ - void onFailed(Throwable throwable); -} diff --git a/csdk/android/OCLib/src/com/oc/OCSecurityModel.java b/csdk/android/OCLib/src/com/oc/OCSecurityModel.java deleted file mode 100644 index 454b296..0000000 --- a/csdk/android/OCLib/src/com/oc/OCSecurityModel.java +++ /dev/null @@ -1,40 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc; - -import java.net.URI; - -/** - * - * This class (or interface) provides methods to determine whether a remote request is allowed to a - * resource. - * - */ -public class OCSecurityModel { - - public OCSecurityModel() { - // TODO Auto-generated constructor stub - } - - public void checkAccess(URI sourceURI, URI destinationURI, int encryptionLevel, int remoteIdentity) { - // TODO: Need to define... - } -} diff --git a/csdk/android/OCLib/src/com/oc/OCServer.java b/csdk/android/OCLib/src/com/oc/OCServer.java deleted file mode 100644 index b215ab4..0000000 --- a/csdk/android/OCLib/src/com/oc/OCServer.java +++ /dev/null @@ -1,106 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc; - -/** - * This represents a running open connection server. - * - * WARNING: This may change to an interface so that we may transition to a factory pattern - * - */ -public class OCServer { - private native void jniRegisterResource(OCObject object, String url); - - private native void jniUnregisterResource(OCObject object); - - private native void jniStartOCServer(); - - private native void jniStopOCServer(); - - private native OCDiscovery jniGetDiscoverySingleton(); - - /** - * Constructor for OCService. - */ - public OCServer() {} - - /** - * This registers a security model for access control to resources under this service. - * - * @param model - Security Model required for access to this service and control/view of it's - * services. - */ - public void setSecurityModel(OCSecurityModel model) { - // Todo: Pat, What will we do here? - } - - /** - * Registers a resource with the service. - * - * @param object - The OCObject that handles the resource requests - * @param url - The URL under the resource. - * @param accessControl - The access control handler that determines whether the remote device is - * allowed to access this resource. If NULL, all access is granted. - */ - public void registerResource(OCObject object, String url/* TODO: , AccessControl accessControl */) { - jniRegisterResource(object, url); - } - - /** - * Unregisters a resource with the service. - * - * @param object - The OCObject to be unregistered. - */ - public void unregisterResource(OCObject object) { - jniUnregisterResource(object); - } - - /** - * Starts the open connectivity service. - * - * Thread-Safety: TODO Determine if it is going to be safe to call in a UI thread - */ - public void start() { - jniStartOCServer(); - } - - /** - * Stops the open connectivity service. - * - * Thread-Safety: TODO Determine if it is going to be safe to call in a UI thread - */ - public void stop() { - jniStopOCServer(); - } - - /** - * Retrieves access to discovery APIs via the Discovery Singleton delegated by the SDK. Delegation - * is limited to just one singleton per OCServer object. - * - * @return Returns an object which permits access to the open connectivity discovery APIs to just - * one discovery singleton object. - * - * @throws //TODO throws an exception when the discovery singleton has already been checked out. - */ - public OCDiscovery getDiscoverySingleton() { - return jniGetDiscoverySingleton(); - } -} diff --git a/csdk/android/OCLib/src/com/oc/annotations/OCInterface.java b/csdk/android/OCLib/src/com/oc/annotations/OCInterface.java deleted file mode 100644 index 142cb4f..0000000 --- a/csdk/android/OCLib/src/com/oc/annotations/OCInterface.java +++ /dev/null @@ -1,30 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.annotations; - -/** - * - * Base OCInterface Interface. Integral piece used to describe a resource's functionality OTA. - * - */ -public @interface OCInterface { - String name() default ""; -} diff --git a/csdk/android/OCLib/src/com/oc/annotations/OCMethod.java b/csdk/android/OCLib/src/com/oc/annotations/OCMethod.java deleted file mode 100644 index e7eea6d..0000000 --- a/csdk/android/OCLib/src/com/oc/annotations/OCMethod.java +++ /dev/null @@ -1,30 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.annotations; - -/** - * - * Base OCMethod Interface. Integral piece used to describe a resource's functionality OTA. - * - */ -public @interface OCMethod { - String name() default ""; -} diff --git a/csdk/android/OCLib/src/com/oc/annotations/OCProperty.java b/csdk/android/OCLib/src/com/oc/annotations/OCProperty.java deleted file mode 100644 index 693790d..0000000 --- a/csdk/android/OCLib/src/com/oc/annotations/OCProperty.java +++ /dev/null @@ -1,32 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.annotations; - -/** - * - * Base OCProperty Interface. Integral piece used to describe a resource's functionality OTA. - * - */ -public @interface OCProperty { - String name() default ""; - - String type() default ""; -} diff --git a/csdk/android/OCLogger/.cproject b/csdk/android/OCLogger/.cproject deleted file mode 100644 index 93472df..0000000 --- a/csdk/android/OCLogger/.cproject +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCLogger/AndroidManifest.xml b/csdk/android/OCLogger/AndroidManifest.xml deleted file mode 100644 index 0c4428f..0000000 --- a/csdk/android/OCLogger/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCLogger/jni/Android.mk b/csdk/android/OCLogger/jni/Android.mk deleted file mode 100644 index dbc13e9..0000000 --- a/csdk/android/OCLogger/jni/Android.mk +++ /dev/null @@ -1,40 +0,0 @@ -# LOGGER # -LOCAL_PATH := $(call my-dir) - -ifeq ($(CCFL_CORE), ) -CCFL_CORE := $(HOME)/peg_ccfl-core -endif - -ifeq ($(LOGGER_OBJ), ) -LOGGER_OBJ := $(CCFL_CORE)/logger -endif - -# ============================================================== -# OCLogger - Android -# ============================================================== -include $(CLEAR_VARS) - -TARGET_PLATFORM := android-16 - -LOCAL_CPPFLAGS += -D_GLIBCXX__PTHREADS -LOCAL_CPPFLAGS += -D_THREAD_SAFE -LOCAL_CPPFLAGS += -D_REENTRANT -LOCAL_CPPFLAGS += -std=gnu++11 -LOCAL_CPPFLAGS += -s -LOCAL_CPPFLAGS += -DHAVE_SOCKET_ERRNO - -ifneq ($(TARGET_ARCH), $(X86_ARCH)) - LOCAL_CPPFLAGS += -D__arm__ -endif - -X86_ARCH := x86 - -LOCAL_MODULE := OCLogger - -LOCAL_SRC_FILES := $(LOGGER_OBJ)/src/logger.c - -LOCAL_C_INCLUDES := $(LOGGER_OBJ)/include - -LOCAL_STATIC_LIBRARIES += tbstack - -include $(BUILD_STATIC_LIBRARY) \ No newline at end of file diff --git a/csdk/android/OCLogger/jni/Application.mk b/csdk/android/OCLogger/jni/Application.mk deleted file mode 100644 index 97e3c0e..0000000 --- a/csdk/android/OCLogger/jni/Application.mk +++ /dev/null @@ -1,11 +0,0 @@ -APP_STL := gnustl_static #stlport_static -APP_PLATFORM := android-16 -APP_ABI := armeabi armeabi-v7a x86 -APP_OPTIM := release -#APP_OPTIM := debug -APP_CPPFLAGS += -fno-strict-aliasing -APP_CPPFLAGS += -std=gnu++11 -APP_CPPFLAGS += -D_GLIBCXX_USE_WCHAR_T -APP_CPPFLAGS += -fexceptions -APP_CPPFLAGS += -frtti -#NDK_TOOLCHAIN_VERSION=4.8 \ No newline at end of file diff --git a/csdk/android/OCLogger/proguard-project.txt b/csdk/android/OCLogger/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/csdk/android/OCLogger/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/csdk/android/OCLogger/project.properties b/csdk/android/OCLogger/project.properties deleted file mode 100644 index 9b84a6b..0000000 --- a/csdk/android/OCLogger/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 diff --git a/csdk/android/OCLogger/res/menu/main.xml b/csdk/android/OCLogger/res/menu/main.xml deleted file mode 100644 index 77715ec..0000000 --- a/csdk/android/OCLogger/res/menu/main.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/OCLogger/res/values-v11/styles.xml b/csdk/android/OCLogger/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/OCLogger/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/OCLogger/res/values-v14/styles.xml b/csdk/android/OCLogger/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/OCLogger/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/OCLogger/res/values-w820dp/dimens.xml b/csdk/android/OCLogger/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/OCLogger/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/OCLogger/res/values/dimens.xml b/csdk/android/OCLogger/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/OCLogger/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/OCLogger/res/values/strings.xml b/csdk/android/OCLogger/res/values/strings.xml deleted file mode 100644 index 098678c..0000000 --- a/csdk/android/OCLogger/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - OCLogger - Hello world! - Settings - - diff --git a/csdk/android/OCLogger/res/values/styles.xml b/csdk/android/OCLogger/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/OCLogger/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/OCServer/AndroidManifest.xml b/csdk/android/OCServer/AndroidManifest.xml deleted file mode 100644 index ccd8cf9..0000000 --- a/csdk/android/OCServer/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCServer/ic_launcher-web.png b/csdk/android/OCServer/ic_launcher-web.png deleted file mode 100644 index a18cbb48c431dfcc163fce2b6e27e981f8c09f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51394 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 - - \ No newline at end of file diff --git a/csdk/android/OCServer/proguard-project.txt b/csdk/android/OCServer/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/csdk/android/OCServer/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/csdk/android/OCServer/project.properties b/csdk/android/OCServer/project.properties deleted file mode 100644 index 0a91e62..0000000 --- a/csdk/android/OCServer/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 -android.library.reference.1=../OCLib diff --git a/csdk/android/OCServer/res/drawable-hdpi/ic_launcher.png b/csdk/android/OCServer/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 288b66551d1efd1f13dd06f20a67534d2df57946..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7658 zcmVMzJ7$s6+2fii#kNjUp($C`b{IGW1?Vk&cRr0`^|9phjbh zJ=WM_FR>&xzW0Bh_Zx_AZnC@g9PVD-lkc48e9SPzeDCl5KXqnMQu_J$`S|(x`S=e# z0Qs-ZzlhUZeaZb3K&emf{_T)opM4psyY0H?f4!q{l=`eaHEQ7cv!1)#kGoXLcMN*( zpF!fk|5rc~_+OlSImLMUb=m3J>n&pCbi21V;NJpBzR2Xm@>OOviw`uPwEdE9(^>Y*HZsM}@^0hM@I5$wKJ_%B?~a>eJ1W;%d>xgoW3TkC!Fdx> z-aIq)+O1aSTMjv%ZR)ff@_ONX(XsEpM2+rCGzPpvP4Wv==f6Nh!3#8|Jx4?6W7L^n zM8O|>0C9MyAp6b!2R=zH2b~@z&CxFiksE$MFV*LrjYD#|{1^F)&17{Q)(_|JwQb*X z%70)Nsz*LY#oX^udi7fr2#=A&9wVE5gLHNS5$rMo$%4ot$>Q!^>`H9;@<3v$y?+)w~$0O6IT$8`^X_c6?lqSq?iKSB`9~1f!kzP5l?`k z2v8`Fvp^hv>4VRndSmwkcWk@qij7yDu=>0`+E3YZ&EIEnvwEw!S6iFXFW)&h7Z5n$ z7P5EVhFrLaFbck@xPVAd(8YBEbrp$Zab(lG&vD}KE+Gcz2+(N)bgU~7ho1Rj-(wke z-SfcK8*bQec{nM^0qrMju<&yWp?aIisj}6^QaO}<@s7ZuIt5eyd_kDe`ZcnY|SI`7NSadR{_ zUU9|hbBF1X>)^AQo`<`2p;EG!CDC>qiQigu~A%&ODn;HU$U2os7?)1md$t z{@DA#7rX9^$MzfE*mT7M>n@JOhI8Zb==l{e)`cg}ZeY>AksudC#abhl*J5}xd9IGt zTN|`_waY8rj@#oy4m^%{vj5Q()^TSPw%l~U@%v>2hw!kMxbV#q?7ZuRJrBlX@571M z_l++;Bir}Tk8b;-^PUfZnLsWz4qLBzVbf)Tb73S_ed&s2CtUE={jCH@z~d+PP`A+? zRhx}bzS)!G%YWuLzPR;q}rXVW$3KX1J@ZrjdV{=(*KwBuJC#jLaOq9@MW zYQ@nTv$6i-XwhA^-55gvIpBf==WEd3F%yMt`lwuQjIvcG$Zs(gX3Ww2D!NEz=vxbD&8bmZ>o0gc*l@{{ zt-0WUH5crmI6GqHmrkOsIp>1)mquXYGsUd6<|tcfK?*Wq36+{JLo-yoc>(!W_FT)3 zjR+?QMfCra1chSSdqYd=0*gwlGH zgK-eSEIeR`1)o`?iQqKsvOryjIjXmqV$Mbi&TEWNvfK~_OAR4!(!=y}brz5?c&AK8 zap*^48rbk#KH>a78?L<`T=5rZ{+;3ldw?nR zY1}jU4+}fTZ)@6Z&l-1|(TS-`TC4t!9+9OvJ!kE~-b0{G|ruUit(`7jb3UY;uaqc_*(=hsoOb z;H~X9_fYIfElkm6VOrJkSApprH@&oa9T5M6w~_nFUF62yVOd|?LgvF$&%D?6V>uR^oX+ z8HXZ**<<;=YB-!)f>X22jQ*CX7@RBC7^8T(5powBBBRL=NtH&Jnq&MbFiCqyaJpg) zvg>lt;3JR2R$USjU)^GP?28xvY{xw}w(?86hg4k7l<%l8Mg}jlQ8RQLS$f!3%TCEw9W}6_f!Wgkd zQbc6xV{(!N6Q^pzBTyaAV^v_~IvC~-DzLQIg6k+N!DFoLC07sqaG6Z$m$jQ5QkI`| ze9?K=PuTw;h;6$*maRDL%;xR25Q>*eA4V2vYV}Gvzo#zi>qB z7tUC6&=n0Gb|`2y=t``RY^bdr^})sq6E+=uFjb(`%&In8BE8lKA?fPy3|5BSn7_fu z{$psH{1;SpKEe=<4>54q@6mtA2l$)v`{+C1ef;&)_g>q8_t01QJ@gy&K0Y1#0hHB# zhap;jfSSRF(6#sorp|wXqjz6;1`U8u>>vcC4?%Rk8k?M~cGiB(-;@()>#Q$bVJOsh zSYlqMEtLjV6xdC9%wjWU>j+-qpZdyrV+znlzPzAg;^&|#%)p2hu zKjMY9&%Ll@pC=Y|dZKx!2O77#p>C@SYPUFI?j}1jTU2l6W=)yP3N>4;=xjl*W{#>& z_tHHw@)5kvfP9fw&}6Lc73W~4Uo4)ADQ!YLB$#KPgMCLF~hxIahpwN`Dz0;dxMk$ zsxj}hDTbI(EHOo6ry_8Z#Km~SQ#a34JdH0rKRVZX49o&hxsb zdW%_i{4t`!P>SMZh6F|*SOh+U_|OrD1`6)oDGVs z#nn>2no>J0vZ$TcK0LkiP2wqD4+#|pEMSx<8 zBy3c`KtG=8dIiv;?IFWU+D%#h5?z+RRF7Os54lu(WHjoCfPCYI9E(bH@0UH#c6a_# z9ag-|Kx`mqt&`HO8_`0I#imkWCT|$8X-veLX6^<@Y(AWiwFgpBxyG7YM~YdrD84Yh z$g-7+v@XJF<;|%gy=PE?m{P5W_;P(js z07Ke6sR&77q=eO^F51n8O{1~zbR)ibdQ%*QFviex@Noveee1zFY&len%9X=Km&&KO z#}h;D;vV-RK=pb^o~w)LJ%AzyU2^u)R+%%BVYVfOtq>a5mh%-0s(u!!8OWQ74qTM>`A#E+a^O)m7jd+~yZ z;h!BnkLBlYpFP6HJ+nv!64AYQ{1E}oc@0PwG3cD@IK!dg91tmpyA@CGyz=I4Nk*eC z0n%b4Cib`Mm9Ypf+ZT6EH7ssZ0LosdLl>t*8B9k6G`&rAAu;X!?*Feo@wgv+C^Er#EUb?t)YjP=M7J(=rdT7jEpv z$@6=WRw_fRd;~V{Y{jET55JE$KL$n+1l+lM6RoRi5EN&FnFYQ$`Q<_EKHMUL$!OH0 zP3i$;foXZh%sYJ0Id_?XN^rXB$+QL?#)Epvaw9Q=r9OH9o*VqW3OXJtNCn$+T4Osl7O*lIxP=>|ll0S7xZPs$v}^*8M`KrMS> zwMyEoUJ)FYIlmiF0|A<=jhJFBHZf+<4H*H-sNsM#38D_|mcq?=O~mDW`pV|-124Dl zoE3UTND6?)98ZWmNMmjl{NfTovfiR$4> zN|>dC#4;;HWg8NpfhWdIG9StTQ5nK`+$kbB1+7xbeg>jTMrBI{TaSZ<8A)@`YEA|NpiDOAKS&=99DZ~pOg z-tAi7Jh_GBGDqajoj}>@aktWh|M7Sc(C%igTqIZV3`T$|$OuqmwgFd=2q+{&^{do6 z3FC2xtA{tVISchg)kS7X1-nswwR#QE@`Fi3id$`-WX#hR0i|(3wc6zST9{g>L4XF| z9u*)_PpeV@qBKm|P63D)jlBN&DL_4tczl|(C=AQC%(57AUF|9~bgu?@L zLWQmfC?ZQAUZKh-JSG_q4Ne>O6g>gbn0IKR7!x_ z{+ECfDkWm0noweeFu5+gLIxf833Z?>ruH=l!~=7|Ql7yK#o{t~t{%cOj9yxf`qRK( zd3#8F$Kpud$0eQvS!%tOsGg*`n%#iZ*o0}yw;c%(WwE6MNT3WS2I?H{W-WSR zf%dNf3P#(ee-3En<~iK8ML_Yh2vWHL;)^X2mZ8I4?2vDStqLjV`b?_Rcw3UUL@Lg& zdGD57rN=_kjK0$`|NUQk4bYCGjfXs?|Vbt|}i=bpx_p_!^J| zyz0)Q#x}o&1KRYHapikJ4Z;6ZL9ZyQiGWB!3A4C*$jvH@kXT}e2ss7mVC6#rQ=Nv9 zg06D~iGW%N&>};z`cA6SXW?lkPi;r_`%CWuI#u<10z_$3OCSJLAZk*8)}#(v0}(mH zx&cuPsACP*0ln|iS9|6=;Af7q*1u~1nFfKw>%wlonS|XtMGAWYETo9A( z2#?7shaDXa{}`04Q=U*^$Z{4~cjYd$60#PU3#m0mT?r+2U12lr=h@0_f7P3BQTLf% zVC5T;CAl#z&!{UhTTci{*AfB~C4yI|`UB^Q1E+D2bJ~OEXE)gpARSRbye(0vNYT3m zXDDOB)WN83PQ|&4$HjQkQ}2j?>fZ#UxbM}gmpFFn01D?!!>CCEFg8jV!D(t#2X!l` zOq&21i-6*CN5W&0+UFMTYJUisVfe?$T$AM72HAUhXn5_SC zufKWd7q9a>-#87Az&L3~V4V3?zp2L8Wuf}JNBXMzyZWen$Xk-y6%jRs3r7m+1c)n$ z#~}_#F#(W>Zx6@M(m;q@1rcecShlVP-#of6)<6RFSR4>{G5#~Z@AloV(bQ6iNwJ3T zPZ)~uEOkl>nuyNVKx_#CD$}Bhx*Jfb0+74E+D;W$mEZC{D?mQzz2r&<&CGgFr;J*U z;nPd)bY-!hzOVFu^x=j+J?848^r3CQM<4NlQ}<5v;ee`FMCBJYj}jF`0Ud9uh`Sqy zme#;QNvKSaAXq*KA<2eVwXqSm?p#M%lOjl8`}z_VwwGgkq!#=V29a8*DK66%6*HZn za4_7x_Ad@%qVq5Z1xB?(tp@$rS3tP_{&#$ivCj|e`+BKzap;)5 zrqNw9YjnhFJA*@-uYi;(&X6P`B;M#!AQ$IJJQD_`sv0+}zGFa2(HAXwt|8r)Dy*7P`CKEOrm60c zl4}_tDp!v>b2Anxw-JJpjqdowsCkEky#C77Tl!H~r9Sc5!v}|D7|aVwRlggNrHdJ5 z_DGxUinOZXNUgF%${Z`CR9Rr=Tyt8uIZ|sZ$SjdoV~zAWTcp?8Bct8{@_Hv^);lAk z)&=P`F7#YyB+nX7Z3QVN-qF9XOqAZCuSN9<&$s+jbhb_Sqy)*U zDJdF=$umPr`3T78cq6k)26>ei(&vmudeul|%pJ+()$T%O?P!)&=gG3`y;)AfSmZWL zKwhH{@)~^UXJ6#h`5?1q98zbyBd*B)<+MEWO_6z0znEOZzrAzc+2CId$f*i6_nW5o zo#WWQGUo|>d6kQa(^L_ZqK~L73&a&TQFIztR6uVN<}89$!1gW=|@3`g&Qu=g0K z0Q9l2me?(XD0@S(N)$AW`*U%2`Vpf+PLMo%6>M$ez3#>P%DzhX4}9S2mqDnuf$ zvwSeUOr1?DQbS~(DuUC8!7qLoWD!F#!gmn4*dW2`2Y|w6xH!8_RK8CxDU9&%53kU{ z7#BTEj9(L`s$fEtCYu;$@t*-GtI6s?{48}wkf>$Qpk7LynoV{1P9KIb!9(FXVTfSm z`U3@}jBp+uFy#IS|9*mZm@<4~hhb8pIw??t&T8%KH} zd_5oL3r;E?>o_S+_wK}4WnuEnVbsMF)Ld->tAkLv7D7_>Sm1Q43l>fv^m}&!@vnm~ z9P_t~T8qwvN=<<)D85`%98bg)NvPkFkh^Gfc?JzTHhlOezxz8t`R*zqDf*vJnW@@E za9DJ{4n0So%mC4OdMq?uuPY!QT1^c$sj_MZw6pxRo)U&j?vrCXr?D0!9*ODHqx znqFeu6<=a4#1`1I$uo@Zjtw6=NlBrCKCgQ^+h0ZH8u-Q*m_ALL<5O4m2Hnvj*wc>ks?G z2G34C@E_ZLZKgG#r9IGlue=QUde;x0&cEf}-^JJmm+rK2tvlk-Rei)^T;Dlp|J|h@ z^m+gPwY2+#Jp|DwyKZ{cr#D)vv<3?RYtkmp$A#M_scJjzTH4xNh5}{7UZcq4B{H*L zAbrC#D0V!CY|}%?3-2R&-YsP7u%Pze_gYZ0)AsviO2LRhr%`gXg-+>Ct8*6~gsguK z#ocE}dD{&cL$1D$Nahk|Gw0#KoMAkBPxj3Dsk7U=vbNLla&#_VG^p9{qm1aoZlq4X z^Cs&0V~Cl@NMI=QP@|Gq(}0&K#8vp=Jm%rVTTdK%=7x@k&di334&4O8uk5(sqd^Q_ zOZx$2J`a)j^giNo8q0Qj^e(~C7xVD# zBMhtX326_pU@IUwD0ag^9a#=8X??`t?%Wdb?IN60 zFU5H#fIN^s2jJ9e3jX;b?0@8i_S^2*cGVr<-K)a(^8r}3&jQ&SjUUMBc)a)44{XT~ zKlMpG`6^Vs@6j}zdy)c%>BZfb9XR-87LGiduL=0*b8mD$U4(;==VR}EFYLPIfh||3 zVcW$8=vDXN$A_m-+HT1LV5F7&O24xA)DN34P8+uS&iwD&Z+kG?ZaSg;#ynhn(2U*J z7o+`-JNDe0iH`fTu;=b9%D4zSZ+fEb+6-*E=!SLQIb-b!2XtJJqGfL^@-~|yYrPpH zDuess3cWG!rE%Avcd_4iaawO{mmOL!+JO`WtzC|EbjIc@u9RgrY^6+ZxiSr#F1cYt z*Hq9wXgcGBHOK8yeb|PmV}+va76iZo87&rwFVj~C$j1Kv_X7KXwa2GL)gQN2uQ_Rr zhSN5hW^6noMAKP&G@o-s%Q+|V$!I=1Src^QDMwA@bUv3^5H)(M zP^vZL9y0!PAE}eBBhux_lLe!GGl+Xg{I`3M7LZhacjB4%!EKjCzGcV#KFV+LG)%3v zI;ND*|Lq0kdwSp$Z!~oArwQR+?+d_E@5L2TL6@q&1o#akT(Z zndVr!!swDu+<3e83k&~x@|pkk9~tTM6EElYY`)@nyKIl?+yR4VyX-Qw{l?suT{mZ{ z*(PoMemYaUV^Z&mLId~RH+*9o4=!dxr6P}$-AS-}?D(>a?2OwLAAWHcK?T+U+_$Bd0H+2K@Gd&HJ$ zK4(wOI~lDPoJn0=(R6Yu>N}^R`de32>~TT)&M7Evb3nlsA@Vj^BY(3Mxh3+qS|V?Y zS)T$?52Vx^VMU=nGe2_lzTo7E%M}fVOhKEu=9<*CMoe%rr^|hz&R+)vpssD+Kj*gE zoK!aQ8D*m(lI!@IMw`3ro0N>T_T||djOZc8DBfj?(%oh#?=Xj|!-6<&si6w1GO7+M zjn0?06YqERQKxVl%Y9R1t~VwM89`oa2yq!7%hL^**`d070_B|8lzKkH2G1srz%hZc z-vXeM1z>wp(O|$R*76~zMvKYkFkT_Lsj1cWuKetqCS~lPR({m>_c<1>YplWIm~qkCnxIgemozS;3?C_$TSDl-C+CIqbEq zCX_fsCQz<-ZtC0-|1ux|s}J~mn%!!9EOm_mLm5F*l>q_Z!7FrBUUG$9S?XE?CUcz; zh+W9jM#wgUl9lC@J$q4J1?cr4@Xv zC^A5pf=2*!cl(LQ$CD~ia@YZ9!d8g!mvYVuy$9F>H9HpkDSMspa7w*ClU!#&57I|; z9v8DiM&-*^2@8_z^qKT#L$FoI-DHfStwL-&CZ*-U8CoX1!GAY~{=Iqo3RiC*M)Te% zDA$;id>WDp5j6|+5t7PNb`n)s9@BLZQJyhcxS9^XxCB1Yr?ld~MQ3=p1X3Q^FgE&dXYoUL}|I+_tJ#&iuIehCwfO`ksO(*Xf!Iu!m%R*UUE zc`c7&Ga^~VLu3w@nG>d4k)*QEOswKDiUvL{1B{Tj(Hi$2Uqb!HG^7>#;p~OOc=P79 zChz@$_w>BNkrTU-kg)*u>vM4V`UyzNjY!!H2ml`u>60+if7F(xV!hNvs&+;T+b6~v ziUmjwjtWJ?|2$v-+3W20CROujrO0C?6cJe*mZud`l`u20g3C~UKtrST7I@TsLlfxT zpRS;)H68_3;ka<=6nb9w;KbH)cE1ndBo=P5nsyo76C}JWC3gl zkZ|)7R`ck4S(P$IA`2jqf51ZY)h7cRWNo2CvsxUsCspx?K0I1%ar*#-=vF6`StTc| z=4yI_)CgJY`T+DB+q^gKoI_DyrXeZ{?DVDlFg` zpxfl1z|Bn{y0R*zXb@;9=AXddKX3q-^M_`)IJ8MCx%4Gm#FcQdJVTF}6FhpYq}WnU z=NLKl1}m|d&F23FK!4Ld>HZ1%bv}6cs{5C~`|aAz?+}rx&kisGV2EW3a}9tc@#FJY zx+*F7)U^UyW)lFh;cgcft)T+~P9Ff+?0|L;|Asv#_;@FTt0OHFyh%M6701yR@XhM%MVnb5s%)PZNAfoq&3TkEL;fEkdEzkO3~En?B5L zajKC}rsGQW5L2Ls5XCsgGjK$Mq}V!vK&jd0me&$r8_e+V>GgNy^9cdSsd^Ux+r$@t z1`w6QLrks(A{4f8U!q&(C*hQd2|!A{fWF%Z@g;^#fY_p$Li%998y97*V@6yFM;%+J zhsf-S2uK>I_E@4@oT74;usf*43Le-QL9+r%l?Z3fANpB7e+8iO*8mv2eobTfXUy;&SFz++{h$;;GQAtS4_Vq$VFUj<3*L;5#51F~?1#Tb8y zL3@D2^r?3g|EcHFi5)Jpzy7AMc}bkC!m1Ad^#NOjxKa*H%yGz41rWbaX%y#4_d^YU zS3S>YfW0Mvhat=L#{BRx@Jk$z@C-IFEC35cE8XDk!zmX^g+n5;Y^E!#yej1?&-!I4 z*7HL{U55VF4Vm_IpYfm03*qrZemoxgSt^x&P}~w2oLp(ECMgBm2W%DCBg%Eu?1ZCOGtXt46rC#51~p{aY#0c z`aGt9nm3n+@Jucu(`^teae7Gt>w0my z;V&Ln!n%O8UVy%9OsOf&5Lax5m^@RWkO0AQV|HnW#zhVNjC5 z&QD@+Hdsah<~Spv&<&Cz7l@0TATD-5La7szST==8DxV7Zs{bJOfUMjT(h?8E<+;)F z!Txoy+^oY-%AX;UzQ^EytyJMjQ?gy>e-5`rU&AY8B9^Q)L6}^K6uFI2=56;OsRLQ@nJU84FF?X+ZtcpuQhaRJtXG zD#wv5j=}th(WK?Nm^^zVY^Qx)p{04H1a1Eam)SPchpC-reSv9~ID z7K0BUr^!7&reGoynL827)AeXt>rs#sFm=wD@_tQ^l)HO)28`%k7(JSHS2WS3T=>T6 zVPTl%AOoP_((0%B#uRYWQ3QY;PNAthc*p87(-(~w_s@@*G!OGdG2?n@Z;MccKEjmj zCWXg%N1Cl3@FMN^ww3wT!Rl3Nx>pqNmCoPihHyw&svtvB z==>~sl?Ri&TGShnW^;H!%-D(l5HGuff;fK;5F6Qtr8xR6OL27eUe15#ClL1K1%cH| ruJZJht7Zygm5zVW`osRPe+>Ii)X|D+8y7?e00000NkvXXu0mjf#L-I; diff --git a/csdk/android/OCServer/res/drawable-xhdpi/ic_launcher.png b/csdk/android/OCServer/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index d4fb7cd9d868f1d7d9964f1686dcbc018ef9495a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12516 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 diff --git a/csdk/android/OCServer/res/layout/activity_occlient.xml b/csdk/android/OCServer/res/layout/activity_occlient.xml deleted file mode 100644 index ceb71d5..0000000 --- a/csdk/android/OCServer/res/layout/activity_occlient.xml +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/csdk/android/OCServer/res/layout/fragment_occlient.xml b/csdk/android/OCServer/res/layout/fragment_occlient.xml deleted file mode 100644 index 2a88268..0000000 --- a/csdk/android/OCServer/res/layout/fragment_occlient.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/csdk/android/OCServer/res/menu/occlient.xml b/csdk/android/OCServer/res/menu/occlient.xml deleted file mode 100644 index 17e8a8d..0000000 --- a/csdk/android/OCServer/res/menu/occlient.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/OCServer/res/values-v11/styles.xml b/csdk/android/OCServer/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/OCServer/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/OCServer/res/values-v14/styles.xml b/csdk/android/OCServer/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/OCServer/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/OCServer/res/values-w820dp/dimens.xml b/csdk/android/OCServer/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/OCServer/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/OCServer/res/values/dimens.xml b/csdk/android/OCServer/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/OCServer/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/OCServer/res/values/strings.xml b/csdk/android/OCServer/res/values/strings.xml deleted file mode 100644 index 365bc25..0000000 --- a/csdk/android/OCServer/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - OCClient - Hello world! - Settings - - diff --git a/csdk/android/OCServer/res/values/styles.xml b/csdk/android/OCServer/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/OCServer/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/OCServer/src/com/oc/ub/sample/LightControl.java b/csdk/android/OCServer/src/com/oc/ub/sample/LightControl.java deleted file mode 100644 index 6cfac95..0000000 --- a/csdk/android/OCServer/src/com/oc/ub/sample/LightControl.java +++ /dev/null @@ -1,91 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.ub.sample; - -import com.oc.OCObserver; -import com.oc.annotations.OCInterface; -import com.oc.annotations.OCProperty; - -/** - * APPLICATION NOTE: This interface is exposed to via the framework because of the @OCInterface - * annotation. Without the annotation, this interface would be ignored by the framework. - * - * APPLICATION NOTE: This interface needs to be accessible on the client and the server as the - * contract for operation. - * - */ -@OCInterface -public interface LightControl { - /** - * APPLICATION NOTE: This is a synchronous request. It will throw immediately if the stack is down - * or the network is otherwise not available. It may throw is the remote side does not responds or - * returns an error. - * - * @param powered - The new power state of this implemented interface. - */ - @OCProperty(name = "powered") - void setPowered(boolean powered); - - /** - * APPLICATION NOTE: This is a synchronous request. It will throw immediately if the stack is down - * or the network is otherwise not available. It may throw is the remote side does not responds or - * returns an error. - * - * @return Returns power state of this implemented interface. - */ - @OCProperty(name = "powered") - boolean isPowered(); - - /** - * APPLICATION NOTE: It is the objects responsibility to throw an exception (TBD) if it cannot - * handle an additional observers which will in turn return an error to the requestor. - * - * @param observer the observer that will be notified when a change to the power property has - * occurred. - */ - @OCProperty(name = "powered") - void addPoweredObserver(OCObserver observer); - - /** - * - * @param observer the observer that will be no longer notified when a change to the power - * property has occurred. - */ - @OCProperty(name = "powered") - void removePoweredObserver(OCObserver observer); - - /** - * APPLICATION NOTE: Even properties (or methods) that are not annotated are exposed, by default, - * via the framework. Getter and setter methods are assumed to be properties unless annotated - * otherwise. - * - * @param level - Sets the power level of this implemented interface. - */ - void setLevel(int level); - - int getLevel(); - - /** - * APPLICATION NOTE: This is an example of a method. The annotation is not required except to - * override the defaults. - */ - void flash(); -} diff --git a/csdk/android/OCServer/src/com/oc/ub/sample/MyLight.java b/csdk/android/OCServer/src/com/oc/ub/sample/MyLight.java deleted file mode 100644 index 159633e..0000000 --- a/csdk/android/OCServer/src/com/oc/ub/sample/MyLight.java +++ /dev/null @@ -1,79 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.ub.sample; - -import com.oc.OCObject; -import com.oc.OCObserver; - -public class MyLight implements OCObject, LightControl { - - public MyLight() { - // TODO Auto-generated constructor stub - } - - @Override - public boolean isVisible() { - return true; - } - - @Override - public void setPowered(boolean powered) { - // TODO Auto-generated method stub - - } - - @Override - public boolean isPowered() { - // TODO Auto-generated method stub - return false; - } - - @Override - public void setLevel(int level) { - // TODO Auto-generated method stub - - } - - @Override - public int getLevel() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public void flash() { - // TODO Auto-generated method stub - - } - - @Override - public void addPoweredObserver(OCObserver observer) { - // TODO Auto-generated method stub - - } - - @Override - public void removePoweredObserver(OCObserver observer) { - // TODO Auto-generated method stub - - } - -} diff --git a/csdk/android/OCServer/src/com/oc/ub/sample/OCService.java b/csdk/android/OCServer/src/com/oc/ub/sample/OCService.java deleted file mode 100644 index b7791c1..0000000 --- a/csdk/android/OCServer/src/com/oc/ub/sample/OCService.java +++ /dev/null @@ -1,112 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.ub.sample; - -import com.oc.OCSecurityModel; -import com.oc.OCServer; -import com.oc.ub.sampleclient.R; - -import android.app.Activity; -import android.app.Fragment; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; - -public class OCService extends Activity { - private static String TAG = "OCCLIENT"; - private OCServer service = null; - private MyLight resource = null; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_occlient); - - if (savedInstanceState == null) { - getFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()) - .commit(); - } - - // NOTE: We throw exceptions for the bad errors... so no return codes - try { - // In a complete example, the MyLight class should have callback to - // update the UI - resource = new MyLight(); - service = new OCServer(); - service.setSecurityModel(new OCSecurityModel()); - // TODO: Mats, will we allow one resource to be mapped to two URLs??? - service.registerResource(resource, "/light/a"); - // TODO: Mats, will we allow one resource to be mapped to two URLs??? - // service.registerResource(resource, "/light/b", new OCAccessHandler()); - service.start(); - } catch (Exception exception) { - finish(); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.occlient, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will automatically handle clicks on the - // Home/Up button, so long as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - if (id == R.id.action_settings) { - return true; - } - return super.onOptionsItemSelected(item); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - - try { - service.unregisterResource(resource); - service.stop(); - } catch (Exception exception) { - // TODO: Handle exception - } - } - - /** - * A placeholder fragment containing a simple view. - */ - public static class PlaceholderFragment extends Fragment { - - public PlaceholderFragment() {} - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_occlient, container, false); - return rootView; - } - } -} diff --git a/csdk/android/OCSocket/.cproject b/csdk/android/OCSocket/.cproject deleted file mode 100644 index 6334d03..0000000 --- a/csdk/android/OCSocket/.cproject +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCSocket/AndroidManifest.xml b/csdk/android/OCSocket/AndroidManifest.xml deleted file mode 100644 index 72a152d..0000000 --- a/csdk/android/OCSocket/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCSocket/jni/Android.mk b/csdk/android/OCSocket/jni/Android.mk deleted file mode 100644 index 187b559..0000000 --- a/csdk/android/OCSocket/jni/Android.mk +++ /dev/null @@ -1,58 +0,0 @@ -# LOGGER # -LOCAL_PATH := $(call my-dir) - -ifeq ($(CCFL_CORE), ) -CCFL_CORE := $(HOME)/peg_ccfl-core -endif - -ifeq ($(LOGGER_OBJ), ) -LOGGER_OBJ := $(CCFL_CORE)/logger -endif - -ifeq ($(SOCKET_OBJ), ) -SOCKET_OBJ := $(CCFL_CORE)/ocsocket -endif - -ifeq ($(ANDROID_OBJ), ) -ANDROID_OBJ := $(CCFL_CORE)/android -endif - -# -# OCLogger -# -include $(CLEAR_VARS) -TARGET_PLATFORM := android-16 -LOCAL_MODULE := oclogger -LOCAL_SRC_FILES := $(ANDROID_OBJ)/OCLogger/obj/local/$(TARGET_ARCH_ABI)/libOCLogger.a -include $(PREBUILT_STATIC_LIBRARY) - -# ============================================================== -# OCLogger - Android -# ============================================================== -include $(CLEAR_VARS) - -TARGET_PLATFORM := android-16 - -LOCAL_CPPFLAGS += -D_GLIBCXX__PTHREADS -LOCAL_CPPFLAGS += -D_THREAD_SAFE -LOCAL_CPPFLAGS += -D_REENTRANT -LOCAL_CPPFLAGS += -std=gnu++11 -LOCAL_CPPFLAGS += -s -LOCAL_CPPFLAGS += -DHAVE_SOCKET_ERRNO - -ifneq ($(TARGET_ARCH), $(X86_ARCH)) - LOCAL_CPPFLAGS += -D__arm__ -endif - -X86_ARCH := x86 - -LOCAL_MODULE := OCSocket - -LOCAL_SRC_FILES := $(SOCKET_OBJ)/src/ocsocket.c - -LOCAL_C_INCLUDES := $(SOCKET_OBJ)/include -LOCAL_C_INCLUDES += $(LOGGER_OBJ)/include - -LOCAL_STATIC_LIBRARIES := oclogger - -include $(BUILD_STATIC_LIBRARY) \ No newline at end of file diff --git a/csdk/android/OCSocket/proguard-project.txt b/csdk/android/OCSocket/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/csdk/android/OCSocket/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/csdk/android/OCSocket/project.properties b/csdk/android/OCSocket/project.properties deleted file mode 100644 index 9b84a6b..0000000 --- a/csdk/android/OCSocket/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 diff --git a/csdk/android/OCSocket/res/layout/activity_main.xml b/csdk/android/OCSocket/res/layout/activity_main.xml deleted file mode 100644 index fe46b8c..0000000 --- a/csdk/android/OCSocket/res/layout/activity_main.xml +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/csdk/android/OCSocket/res/layout/fragment_main.xml b/csdk/android/OCSocket/res/layout/fragment_main.xml deleted file mode 100644 index 1a15f82..0000000 --- a/csdk/android/OCSocket/res/layout/fragment_main.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/csdk/android/OCSocket/res/menu/main.xml b/csdk/android/OCSocket/res/menu/main.xml deleted file mode 100644 index b5122fc..0000000 --- a/csdk/android/OCSocket/res/menu/main.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/OCSocket/res/values-v11/styles.xml b/csdk/android/OCSocket/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/OCSocket/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/OCSocket/res/values-v14/styles.xml b/csdk/android/OCSocket/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/OCSocket/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/OCSocket/res/values-w820dp/dimens.xml b/csdk/android/OCSocket/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/OCSocket/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/OCSocket/res/values/dimens.xml b/csdk/android/OCSocket/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/OCSocket/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/OCSocket/res/values/strings.xml b/csdk/android/OCSocket/res/values/strings.xml deleted file mode 100644 index 6dc3461..0000000 --- a/csdk/android/OCSocket/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - OCSocket - Hello world! - Settings - - diff --git a/csdk/android/OCSocket/res/values/styles.xml b/csdk/android/OCSocket/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/OCSocket/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/OCTBStack/.cproject b/csdk/android/OCTBStack/.cproject deleted file mode 100644 index 92192fc..0000000 --- a/csdk/android/OCTBStack/.cproject +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCTBStack/AndroidManifest.xml b/csdk/android/OCTBStack/AndroidManifest.xml deleted file mode 100644 index 6492c52..0000000 --- a/csdk/android/OCTBStack/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCTBStack/jni/Android.mk b/csdk/android/OCTBStack/jni/Android.mk deleted file mode 100644 index 53e0e92..0000000 --- a/csdk/android/OCTBStack/jni/Android.mk +++ /dev/null @@ -1,64 +0,0 @@ -# TBSTACK # -LOCAL_PATH := $(call my-dir) - -ifeq ($(CCFL_CORE), ) -CCFL_CORE := $(HOME)/peg_ccfl-core -endif - -ifeq ($(OCCOAP_OBJ), ) -OCCOAP_OBJ := $(CCFL_CORE)/occoap -endif - -ifeq ($(TB_OBJ), ) -TB_OBJ := $(CCFL_CORE)/stack -endif - -ifeq ($(LOGGER_OBJ), ) -LOGGER_OBJ := $(CCFL_CORE)/logger -endif - -ifeq ($(ANDROID_OBJ), ) -ANDROID_OBJ := $(CCFL_CORE)/android -endif - -# -# OCCoap -# -include $(CLEAR_VARS) -TARGET_PLATFORM := android-16 -LOCAL_MODULE := occoap -LOCAL_SRC_FILES := $(ANDROID_OBJ)/OCCoap/obj/local/$(TARGET_ARCH_ABI)/libOCCoap.a -include $(PREBUILT_STATIC_LIBRARY) - -# ============================================================== -# OCLib - Android -# ============================================================== -include $(CLEAR_VARS) - -TARGET_PLATFORM := android-16 - -LOCAL_CPPFLAGS += -D_GLIBCXX__PTHREADS -LOCAL_CPPFLAGS += -D_THREAD_SAFE -LOCAL_CPPFLAGS += -D_REENTRANT -LOCAL_CPPFLAGS += -std=gnu++11 -LOCAL_CPPFLAGS += -s -LOCAL_CPPFLAGS += -DHAVE_SOCKET_ERRNO - -ifneq ($(TARGET_ARCH), $(X86_ARCH)) - LOCAL_CPPFLAGS += -D__arm__ -endif - -X86_ARCH := x86 - -LOCAL_MODULE := TBStack - -LOCAL_SRC_FILES := $(TB_OBJ)/src/ocstack.c - -LOCAL_C_INCLUDES := $(TB_OBJ)/include/ -LOCAL_C_INCLUDES += $(TB_OBJ)/include/internal -LOCAL_C_INCLUDES += $(OCCOAP_OBJ)/include -LOCAL_C_INCLUDES += $(LOGGER_OBJ)/include - -LOCAL_STATIC_LIBRARIES += occoap - -include $(BUILD_STATIC_LIBRARY) \ No newline at end of file diff --git a/csdk/android/OCTBStack/jni/Application.mk b/csdk/android/OCTBStack/jni/Application.mk deleted file mode 100644 index 97e3c0e..0000000 --- a/csdk/android/OCTBStack/jni/Application.mk +++ /dev/null @@ -1,11 +0,0 @@ -APP_STL := gnustl_static #stlport_static -APP_PLATFORM := android-16 -APP_ABI := armeabi armeabi-v7a x86 -APP_OPTIM := release -#APP_OPTIM := debug -APP_CPPFLAGS += -fno-strict-aliasing -APP_CPPFLAGS += -std=gnu++11 -APP_CPPFLAGS += -D_GLIBCXX_USE_WCHAR_T -APP_CPPFLAGS += -fexceptions -APP_CPPFLAGS += -frtti -#NDK_TOOLCHAIN_VERSION=4.8 \ No newline at end of file diff --git a/csdk/android/OCTBStack/proguard-project.txt b/csdk/android/OCTBStack/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/csdk/android/OCTBStack/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/csdk/android/OCTBStack/project.properties b/csdk/android/OCTBStack/project.properties deleted file mode 100644 index 9b84a6b..0000000 --- a/csdk/android/OCTBStack/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 diff --git a/csdk/android/OCTBStack/res/menu/main.xml b/csdk/android/OCTBStack/res/menu/main.xml deleted file mode 100644 index 11f8a2e..0000000 --- a/csdk/android/OCTBStack/res/menu/main.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/OCTBStack/res/values-v11/styles.xml b/csdk/android/OCTBStack/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/OCTBStack/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/OCTBStack/res/values-v14/styles.xml b/csdk/android/OCTBStack/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/OCTBStack/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/OCTBStack/res/values-w820dp/dimens.xml b/csdk/android/OCTBStack/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/OCTBStack/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/OCTBStack/res/values/dimens.xml b/csdk/android/OCTBStack/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/OCTBStack/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/OCTBStack/res/values/strings.xml b/csdk/android/OCTBStack/res/values/strings.xml deleted file mode 100644 index 93531f7..0000000 --- a/csdk/android/OCTBStack/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - OCTBStack - Hello world! - Settings - - diff --git a/csdk/android/OCTBStack/res/values/styles.xml b/csdk/android/OCTBStack/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/OCTBStack/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/OCUBStack/.cproject b/csdk/android/OCUBStack/.cproject deleted file mode 100644 index 7327e07..0000000 --- a/csdk/android/OCUBStack/.cproject +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCUBStack/AndroidManifest.xml b/csdk/android/OCUBStack/AndroidManifest.xml deleted file mode 100644 index a9f64be..0000000 --- a/csdk/android/OCUBStack/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/csdk/android/OCUBStack/jni/Android.mk b/csdk/android/OCUBStack/jni/Android.mk deleted file mode 100644 index 2afd36c..0000000 --- a/csdk/android/OCUBStack/jni/Android.mk +++ /dev/null @@ -1,101 +0,0 @@ -# UBSTACK # -LOCAL_PATH := $(call my-dir) - -ifeq ($(CCFL_CORE), ) -CCFL_CORE := $(HOME)/peg_ccfl-core -endif - -ifeq ($(UB_OBJ), ) -UB_OBJ := $(CCFL_CORE)/ubstack -endif - -ifeq ($(TB_OBJ), ) -TB_OBJ := $(CCFL_CORE)/stack -endif - -ifeq ($(ANDROID_OBJ), ) -ANDROID_OBJ := $(CCFL_CORE)/android -endif - -ifeq ($(LOGGER_OBJ), ) -LOGGER_OBJ := $(CCFL_CORE)/logger -endif - -ifeq ($(BOOST_OBJ), ) -BOOST_OBJ := $(HOME)/android-dev/boost/android -endif - -# -# TBStack -# -include $(CLEAR_VARS) -TARGET_PLATFORM := android-16 -LOCAL_MODULE := tbstack -LOCAL_SRC_FILES := $(ANDROID_OBJ)/OCTBStack/obj/local/$(TARGET_ARCH_ABI)/libTBStack.a -include $(PREBUILT_STATIC_LIBRARY) - -# -# OCCoap -# -include $(CLEAR_VARS) -TARGET_PLATFORM := android-16 -LOCAL_MODULE := occoap -LOCAL_SRC_FILES := $(ANDROID_OBJ)/OCCoap/obj/local/$(TARGET_ARCH_ABI)/libOCCoap.a -include $(PREBUILT_STATIC_LIBRARY) - -# -# OCLogger -# -include $(CLEAR_VARS) -TARGET_PLATFORM := android-16 -LOCAL_MODULE := oclogger -LOCAL_SRC_FILES := $(ANDROID_OBJ)/OCLogger/obj/local/$(TARGET_ARCH_ABI)/libOCLogger.a -include $(PREBUILT_STATIC_LIBRARY) - -# -# Boost -# -include $(CLEAR_VARS) -TARGET_PLATFORM := android-16 -LOCAL_MODULE := boost_thread -LOCAL_SRC_FILES := $(BOOST_OBJ)/$(TARGET_ARCH_ABI)/lib/libboost_thread-gcc-mt-1_49.a -include $(PREBUILT_STATIC_LIBRARY) - -# ============================================================== -# UBStack - Android -# ============================================================== -include $(CLEAR_VARS) - -TARGET_PLATFORM := android-16 - -LOCAL_CPPFLAGS += -D_GLIBCXX__PTHREADS -LOCAL_CPPFLAGS += -D_THREAD_SAFE -LOCAL_CPPFLAGS += -D_REENTRANT -LOCAL_CPPFLAGS += -std=gnu++11 -LOCAL_CPPFLAGS += -s -LOCAL_CPPFLAGS += -DHAVE_SOCKET_ERRNO - -ifneq ($(TARGET_ARCH), $(X86_ARCH)) - LOCAL_CPPFLAGS += -D__arm__ -endif - -X86_ARCH := x86 - -LOCAL_MODULE := UBStack - -LOCAL_SRC_FILES := $(UB_OBJ)/src/ocmodelimpl.cpp - -LOCAL_C_INCLUDES := $(UB_OBJ)/src -LOCAL_C_INCLUDES += $(UB_OBJ)/include -LOCAL_C_INCLUDES += $(TB_OBJ)/include -LOCAL_C_INCLUDES += $(TB_OBJ)/internal -LOCAL_C_INCLUDES += $(LOGGER_OBJ)/include - -LOCAL_C_INCLUDES += $(BOOST_OBJ)/include - -LOCAL_STATIC_LIBRARIES := tbstack -LOCAL_STATIC_LIBRARIES += oclogger -LOCAL_STATIC_LIBRARIES += boost_thread -LOCAL_STATIC_LIBRARIES += occoap - -include $(BUILD_SHARED_LIBRARY) \ No newline at end of file diff --git a/csdk/android/OCUBStack/jni/Application.mk b/csdk/android/OCUBStack/jni/Application.mk deleted file mode 100644 index 97e3c0e..0000000 --- a/csdk/android/OCUBStack/jni/Application.mk +++ /dev/null @@ -1,11 +0,0 @@ -APP_STL := gnustl_static #stlport_static -APP_PLATFORM := android-16 -APP_ABI := armeabi armeabi-v7a x86 -APP_OPTIM := release -#APP_OPTIM := debug -APP_CPPFLAGS += -fno-strict-aliasing -APP_CPPFLAGS += -std=gnu++11 -APP_CPPFLAGS += -D_GLIBCXX_USE_WCHAR_T -APP_CPPFLAGS += -fexceptions -APP_CPPFLAGS += -frtti -#NDK_TOOLCHAIN_VERSION=4.8 \ No newline at end of file diff --git a/csdk/android/OCUBStack/proguard-project.txt b/csdk/android/OCUBStack/proguard-project.txt deleted file mode 100644 index f2fe155..0000000 --- a/csdk/android/OCUBStack/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/csdk/android/OCUBStack/project.properties b/csdk/android/OCUBStack/project.properties deleted file mode 100644 index 9b84a6b..0000000 --- a/csdk/android/OCUBStack/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-16 diff --git a/csdk/android/OCUBStack/res/menu/main.xml b/csdk/android/OCUBStack/res/menu/main.xml deleted file mode 100644 index 718076a..0000000 --- a/csdk/android/OCUBStack/res/menu/main.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/OCUBStack/res/values-v11/styles.xml b/csdk/android/OCUBStack/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/OCUBStack/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/OCUBStack/res/values-v14/styles.xml b/csdk/android/OCUBStack/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/OCUBStack/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/OCUBStack/res/values-w820dp/dimens.xml b/csdk/android/OCUBStack/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/OCUBStack/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/OCUBStack/res/values/dimens.xml b/csdk/android/OCUBStack/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/OCUBStack/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/OCUBStack/res/values/strings.xml b/csdk/android/OCUBStack/res/values/strings.xml deleted file mode 100644 index b228dfd..0000000 --- a/csdk/android/OCUBStack/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - OCUBStack - Hello world! - Settings - - diff --git a/csdk/android/OCUBStack/res/values/styles.xml b/csdk/android/OCUBStack/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/OCUBStack/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/UnitTests/AndroidManifest.xml b/csdk/android/UnitTests/AndroidManifest.xml deleted file mode 100644 index fb73f22..0000000 --- a/csdk/android/UnitTests/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - diff --git a/csdk/android/UnitTests/ic_launcher-web.png b/csdk/android/UnitTests/ic_launcher-web.png deleted file mode 100644 index a18cbb48c431dfcc163fce2b6e27e981f8c09f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51394 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 diff --git a/csdk/android/UnitTests/res/drawable-xhdpi/ic_launcher.png b/csdk/android/UnitTests/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index d4fb7cd9d868f1d7d9964f1686dcbc018ef9495a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12516 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 diff --git a/csdk/android/UnitTests/res/layout/activity_unit_tests.xml b/csdk/android/UnitTests/res/layout/activity_unit_tests.xml deleted file mode 100644 index a699c1d..0000000 --- a/csdk/android/UnitTests/res/layout/activity_unit_tests.xml +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/csdk/android/UnitTests/res/layout/fragment_unit_tests.xml b/csdk/android/UnitTests/res/layout/fragment_unit_tests.xml deleted file mode 100644 index a9679fa..0000000 --- a/csdk/android/UnitTests/res/layout/fragment_unit_tests.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/csdk/android/UnitTests/res/menu/unit_tests.xml b/csdk/android/UnitTests/res/menu/unit_tests.xml deleted file mode 100644 index 629cbe2..0000000 --- a/csdk/android/UnitTests/res/menu/unit_tests.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/csdk/android/UnitTests/res/values-v11/styles.xml b/csdk/android/UnitTests/res/values-v11/styles.xml deleted file mode 100644 index 3c02242..0000000 --- a/csdk/android/UnitTests/res/values-v11/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/csdk/android/UnitTests/res/values-v14/styles.xml b/csdk/android/UnitTests/res/values-v14/styles.xml deleted file mode 100644 index a91fd03..0000000 --- a/csdk/android/UnitTests/res/values-v14/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/csdk/android/UnitTests/res/values-w820dp/dimens.xml b/csdk/android/UnitTests/res/values-w820dp/dimens.xml deleted file mode 100644 index f3e7020..0000000 --- a/csdk/android/UnitTests/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 64dp - - diff --git a/csdk/android/UnitTests/res/values/dimens.xml b/csdk/android/UnitTests/res/values/dimens.xml deleted file mode 100644 index 55c1e59..0000000 --- a/csdk/android/UnitTests/res/values/dimens.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - 16dp - 16dp - - diff --git a/csdk/android/UnitTests/res/values/strings.xml b/csdk/android/UnitTests/res/values/strings.xml deleted file mode 100644 index 3aea803..0000000 --- a/csdk/android/UnitTests/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - UnitTests - Hello world! - Settings - - diff --git a/csdk/android/UnitTests/res/values/styles.xml b/csdk/android/UnitTests/res/values/styles.xml deleted file mode 100644 index 6ce89c7..0000000 --- a/csdk/android/UnitTests/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/csdk/android/UnitTests/src/com/oc/unittests/README_How To Run Test.txt b/csdk/android/UnitTests/src/com/oc/unittests/README_How To Run Test.txt deleted file mode 100644 index 994fc9e..0000000 --- a/csdk/android/UnitTests/src/com/oc/unittests/README_How To Run Test.txt +++ /dev/null @@ -1,3 +0,0 @@ -To run this project as a unit test: - -Right-click on project->Run As->JUnit Test (Do not select "Android JUnit Test"!!!!!!) \ No newline at end of file diff --git a/csdk/android/UnitTests/src/com/oc/unittests/UnitTest.java b/csdk/android/UnitTests/src/com/oc/unittests/UnitTest.java deleted file mode 100644 index f1b3921..0000000 --- a/csdk/android/UnitTests/src/com/oc/unittests/UnitTest.java +++ /dev/null @@ -1,150 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.unittests; - -import static org.junit.Assert.*; -import junit.framework.Assert; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import com.oc.OCDiscovery; -import com.oc.OCObserver; -import com.oc.OCResource; -import com.oc.OCResourceResultHandler; -import com.oc.OCSecurityModel; -import com.oc.OCServer; - -public class UnitTest { - private OCServer clientService = null; - private OCServer serverService = null; - private OCDiscovery ocDiscovery = null; - private UnitTestResource serverResource = null; - - @Before - public void init() throws Exception { - clientService = new OCServer(); - clientService.start(); - ocDiscovery = clientService.getDiscoverySingleton(); - } - - @After - public void destroy() throws Exception { - try { - clientService.stop(); - clientService = null; - serverService.unregisterResource(serverResource); - serverService.stop(); - } catch (Exception exception) { - // TODO: Handle exception - } - } - - @Test - public void findMyself() { - client(); - server(); - } - - @SuppressWarnings("serial") - public void client() { - assertNotNull(clientService); - - /* - * APPLICATION NOTE: All callbacks will come through on a new thread and will not interfere with - * the UI thread or the Framework Thread (i.e. Networking Thread) which means that you need to - * use a Handler() to post back to the UI. - */ - ocDiscovery.findResourceByType(null, null, new OCResourceResultHandler() { - @Override - public void onResourcesFound(String serviceURL, OCResource[] resources) { - // NOTE: This means that a service is reporting back zero or more resources - // During the callback, lets check to see if the resource supports the - // light control interface and turn the light on and then subscribe to any changes in the - // light's power state. - for (OCResource resource : resources) { - try { - UnitTestControlItf control = resource.getInterface(UnitTestControlItf.class); - assertNotNull(control); - if (control != null) { - control.setState(true); - control.isTrue(); - - Assert.assertEquals(true, control.isTrue()); - - /* - * APPLICATION NOTE: All callbacks will come through on a new thread and will not - * interfere with the UI thread or the Framework Thread (i.e. Networking Thread) which - * means that you need to use a Handler() to post back to the UI. - */ - control.addMyUnitTestObserver(new OCObserver() { - @Override - public void onChanged(Boolean data) { - // TODO: Tell the UI! The state of the Light has changed. - - } - - @Override - public void onFailed(Throwable throwable) { - // TODO: Tell the UI! We are no longer subscribed to events for the Light's power - // state. - } - }); - } - } catch (Exception exception) { - // TODO: Ooops - } - } - - } - - @Override - public void onFailed(Throwable throwable) { - // TODO: Handle the error. The request to find resources has failed. - } - - @Override - public void onCompleted() { - // Nothing to do here... we are just done finding resources is all. - } - }); - } - - public void server() { - // NOTE: We throw exceptions for the bad errors... so no return codes - try { - // In a complete example, the MyLight class should have callback to - // update the UI - serverResource = new UnitTestResource(); - serverService = new OCServer(); - serverService.setSecurityModel(new OCSecurityModel()); - // TODO: Mats, will we allow one resource to be mapped to two URLs??? - serverService.registerResource(serverResource, "/ResourceTypeGoesHere/a"); - // TODO: Mats, will we allow one resource to be mapped to two URLs??? - // service.registerResource(resource, "/light/b", new OCAccessHandler()); - serverService.start(); - } catch (Exception exception) { - // finish(); - return; // End the application. - } - } -} diff --git a/csdk/android/UnitTests/src/com/oc/unittests/UnitTestControlItf.java b/csdk/android/UnitTests/src/com/oc/unittests/UnitTestControlItf.java deleted file mode 100644 index 163b522..0000000 --- a/csdk/android/UnitTests/src/com/oc/unittests/UnitTestControlItf.java +++ /dev/null @@ -1,58 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.unittests; - -import com.oc.OCObserver; -import com.oc.annotations.OCInterface; -import com.oc.annotations.OCProperty; - -@OCInterface -public interface UnitTestControlItf { - /** - * APPLICATION NOTE: This is a synchronous request. It will throw immediately if the stack is down - * or the network is otherwise not available. It may throw if the remote side does not responds or - * returns an error. - * - * @param state - The new state of this implemented interface. - */ - @OCProperty(name = "UnitTestName") - void setState(boolean state); - - /** - * APPLICATION NOTE: This is a synchronous request. It will throw immediately if the stack is down - * or the network is otherwise not available. It may throw is the remote side does not responds or - * returns an error. - * - * @return Returns state of this implemented interface. - */ - @OCProperty(name = "UnitTestName") - boolean isTrue(); - - /** - * APPLICATION NOTE: It is the objects responsibility to throw an exception if it cannot handle - * any additional observers which will in turn return an error to the requestor. - * - * @param observer the observer that will be notified when a change to the state property has - * occurred. - */ - @OCProperty(name = "UnitTestName") - void addMyUnitTestObserver(OCObserver observer); -} diff --git a/csdk/android/UnitTests/src/com/oc/unittests/UnitTestResource.java b/csdk/android/UnitTests/src/com/oc/unittests/UnitTestResource.java deleted file mode 100644 index 6c12746..0000000 --- a/csdk/android/UnitTests/src/com/oc/unittests/UnitTestResource.java +++ /dev/null @@ -1,52 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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 com.oc.unittests; - -import com.oc.OCObject; -import com.oc.OCObserver; - -public class UnitTestResource implements OCObject, UnitTestControlItf { - - @Override - public void setState(boolean state) { - // TODO Auto-generated method stub - - } - - @Override - public boolean isTrue() { - // TODO Auto-generated method stub - return false; - } - - @Override - public void addMyUnitTestObserver(OCObserver observer) { - // TODO Auto-generated method stub - - } - - @Override - public boolean isVisible() { - // TODO Auto-generated method stub - return false; - } - -} diff --git a/csdk/controller/README.txt b/csdk/controller/README.txt deleted file mode 100644 index 7f25863..0000000 --- a/csdk/controller/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -2014-02-25 Doug Hudson -Created core subdir for C++ API and CCFL Core. Makefile builds a test Linux executable. - -2014-02-14 Doug Hudson -Added current C++ source files for remoting. The remoting controller code interfaces to the -CCF Stack. The remoting code compiles in CCF, but have not yet added the ability to build in -the CCF-Lite repo. diff --git a/csdk/controller/core/include/core/Characteristic.hpp b/csdk/controller/core/include/core/Characteristic.hpp deleted file mode 100644 index bfeed4f..0000000 --- a/csdk/controller/core/include/core/Characteristic.hpp +++ /dev/null @@ -1,114 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef CHARACTERISTIC_H_ -#define CHARACTERISTIC_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include -#include "Core.h" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - -// ============================================================================ -// Class -// ============================================================================ -class PropertyGetResult { - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~PropertyGetResult() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual QueryResultType getResult() const = 0; - virtual const std::string& getName() const = 0; - virtual const std::string& getValue() const = 0; -}; - -typedef std::function PropertyGetFunction; - -// ============================================================================ -// Class -// ============================================================================ -class PropertySetResult { - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~PropertySetResult() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual QueryResultType getResult() const = 0; - virtual const std::string& getName() const = 0; - virtual const std::string& getValue() const = 0; -}; - -typedef std::function PropertySetFunction; - -// ============================================================================ -// Class -// ============================================================================ - -class Characteristic { - // ============================================================ - // Type Definition(s) - // ============================================================ - public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~Characteristic() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual const std::string& getName() const = 0; - virtual bool isReadable() const = 0; - virtual bool isWritable() const = 0; - virtual bool isConstant() const = 0; -}; - -} -} -} - -#endif diff --git a/csdk/controller/core/include/core/Core.h b/csdk/controller/core/include/core/Core.h deleted file mode 100644 index f0d990b..0000000 --- a/csdk/controller/core/include/core/Core.h +++ /dev/null @@ -1,69 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef CORE_H_ -#define CORE_H_ - -#include -typedef boost::uuids::uuid UUID_t; - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - -// ============================================================================ -// Enums -// ============================================================================ -enum QueryResultType { - SUCCESS, - FAILURE -}; - -} -} -} - -#ifdef CPPV11 -#include - namespace Intel { - namespace CCFL { - namespace API { - typedef std::mutex mutex; - typedef std::lock_guard mutex_lock_guard; - } - } - } -#else -#include -#include - namespace Intel { - namespace CCFL { - namespace API { - typedef boost::mutex mutex; - typedef boost::lock_guard mutex_lock_guard; - } - } - } -#endif - -#endif /* CORE_H_ */ diff --git a/csdk/controller/core/include/core/Description.hpp b/csdk/controller/core/include/core/Description.hpp deleted file mode 100644 index dbcef31..0000000 --- a/csdk/controller/core/include/core/Description.hpp +++ /dev/null @@ -1,87 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef DESCRIPTION_H_ -#define DESCRIPTION_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include "Service.hpp" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - -// ============================================================================ -// Class -// ============================================================================ -class DescriptionGetResult { - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~DescriptionGetResult() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual QueryResultType getResult() const = 0; - virtual const std::set& getServices() const = 0; -}; - -typedef std::function DescriptionGetFunction; - -// ============================================================================ -// Class -// ============================================================================ -class Description { - // ============================================================ - // Type Definition(s) - // ============================================================ - public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~Description() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual const std::set& getServices() const = 0; -}; - -} -} -} - -#endif /* DESCRIPTION_H_ */ diff --git a/csdk/controller/core/include/core/Device.hpp b/csdk/controller/core/include/core/Device.hpp deleted file mode 100644 index a90361e..0000000 --- a/csdk/controller/core/include/core/Device.hpp +++ /dev/null @@ -1,152 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef DEVICE_H_ -#define DEVICE_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include - -#include "Core.h" -#include "UUIDLess.hpp" -#include "Link.hpp" -#include "SimpleLogger.h" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - -static const char DEVICE_TAG[] = "Device"; - -class Device { - // ============================================================ - // Type Definition(s) - // ============================================================ -public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - typedef std::list LinkList; - -public: - Device(const UUID_t& deviceId) { - deviceId_ = deviceId; - name_ = ""; - } - virtual ~Device() { - linkList_.clear(); - }; - -public: - const UUID_t& getId() { - mutex_lock_guard lock(deviceMutex_); - return deviceId_; - }; - - const std::string& getName() { - mutex_lock_guard lock(deviceMutex_); - return name_; - }; - - void setName(const std::string& name) { - mutex_lock_guard lock(deviceMutex_); - name_ = name; - }; - - void addLink(const Link::SharedPtr& link) { - logDebug(DEVICE_TAG, "Entering Link::addLink"); - assert(link); - mutex_lock_guard lock(deviceMutex_); - - // If list is empty, go ahead and add - if (linkList_.empty()) - { - logDebug(DEVICE_TAG, "Link::addLink, linkList empty, adding"); - linkList_.push_back(link); - return; - } - - // Search list for the link. If already in list, return - for (auto iter = linkList_.begin(); iter != linkList_.end(); ++iter) { - if (*iter == link) { - logDebug(DEVICE_TAG, "Link::addLink, link already in linkList"); - return; - } - } - - // Not already in list, so add - logDebug(DEVICE_TAG, "Link::addLink, adding link"); - linkList_.push_back(link); - } - - bool removeLink(const Link::SharedPtr& link) { - logDebug(DEVICE_TAG, "Entering Link::removeLink"); - assert(link); - - mutex_lock_guard lock(deviceMutex_); - // Return immediately if the list is empty - if (linkList_.empty()) { - logDebug(DEVICE_TAG, "Link::removeLink, linkList empty"); - return false; - } - - // Search list for the link. If in the list, return - for (auto iter = linkList_.begin(); iter != linkList_.end(); ++iter) { - if (*iter == link) { - linkList_.erase(iter); - logDebug(DEVICE_TAG, "Link::removeLink, removing link"); - return true; - } - } - - return false; - } - - LinkList getLinks() { - mutex_lock_guard lock(deviceMutex_); - return linkList_; - } - - uint32_t getLinkCount() { - mutex_lock_guard lock(deviceMutex_); - return (uint32_t)linkList_.size(); - } - -private: - UUID_t deviceId_; - std::string name_; - LinkList linkList_; - mutex deviceMutex_; -}; - -} -} -} - - - -#endif /* DEVICE_H_ */ diff --git a/csdk/controller/core/include/core/InternalApi.h b/csdk/controller/core/include/core/InternalApi.h deleted file mode 100644 index 7cef308..0000000 --- a/csdk/controller/core/include/core/InternalApi.h +++ /dev/null @@ -1,196 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef INTERNALAPI_H_ -#define INTERNALAPI_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include -#include "Core.h" -#include "Description.hpp" -#include "Characteristic.hpp" -#include "Protocol.hpp" -#include "Device.hpp" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - - -// ============================================================================ -// Device Class(es) -// ============================================================================ - -#if 0 -// ============================================================================ -// Class -// ============================================================================ -class DeviceIdsGetResult { - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~DeviceIdsGetResult() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual QueryResultType getResult() const = 0; - virtual const std::set& getDeviceIds() const = 0; -}; - -typedef std::function DeviceIdsGetFunction; - -// ============================================================================ -// Class -// ============================================================================ -class DeviceGetInfoResult { - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~DeviceGetInfoResult() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual QueryResultType getResult() const = 0; - virtual const std::string& getName() const = 0; - virtual const Description::SharedPtr& getDescription() const = 0; - virtual bool isLocal() = 0; -}; - -typedef std::function DeviceGetInfoFunction; -#endif - -// ============================================================================ -// Class -// ============================================================================ -class GetDevicesResult { - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~GetDevicesResult() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual QueryResultType getResult() const = 0; - virtual const std::list& getDeviceList() const = 0; -}; - -typedef std::function GetDevicesFunction; - - -// ============================================================================ -// Class -// ============================================================================ -typedef uint32_t DeviceObserverHandle; -const DeviceObserverHandle INVALID_DEVICE_OBSERVER_HANDLE = (DeviceObserverHandle)0; - -class DeviceEvent { -public: - enum DeviceChange { - DEVICE_CURRENT_COLLECTION, - DEVICE_ADDED, - DEVICE_REMOVED - }; - - struct DeviceEventInfo { - UUID_t deviceId; - DeviceChange deviceChange; - }; - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~DeviceEvent() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual QueryResultType getResult() const = 0; - virtual DeviceObserverHandle getObserverHandle() const = 0; - virtual const std::list& getDeviceIdList() const = 0; -}; - -typedef std::function DeviceEventFunction; - - -// ============================================================================ -// Class -// ============================================================================ -class Model : public std::enable_shared_from_this { - // ============================================================ - // Type Definition(s) - // ============================================================ - public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - - // ============================================================ - // Factory - // ============================================================ - public: - static SharedPtr createModel(); - - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~Model() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual void getDevices(GetDevicesFunction& asyncReturnFunc) = 0; - - // Add/remove device observer - virtual void removeDeviceObserver(DeviceObserverHandle observerHandle) = 0; - virtual void setDeviceObserver(DeviceEventFunction& asyncEventFunction) = 0; - - // Register/unregister a protocol - virtual const Protocols::Protocol::Handle registerProtocol(const Protocols::Protocol::SharedPtr& protocol) = 0; - virtual bool unregisterProtocol(const Protocols::Protocol::Handle protocolHandle) = 0; - virtual Device::SharedPtr getDevice(const UUID_t& deviceId) = 0; - virtual void signalDeviceChange(const UUID_t& deviceId, DeviceEvent::DeviceChange deviceEvent) = 0; - -}; - - -} -} -} - -#endif /* INTERNALAPI_H_ */ diff --git a/csdk/controller/core/include/core/Link.hpp b/csdk/controller/core/include/core/Link.hpp deleted file mode 100644 index 6b8bab6..0000000 --- a/csdk/controller/core/include/core/Link.hpp +++ /dev/null @@ -1,114 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LINK_HPP_ -#define LINK_HPP_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include "Description.hpp" -#include "Service.hpp" -#include "Characteristic.hpp" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - -class Link { - // ============================================================ - // Type Definition(s) - // ============================================================ -public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - - typedef std::function RegisteredGetPropFunction; - typedef std::function RegisteredSetPropFunction; - typedef std::function RegisteredGetDescriptionFunction; - -public: - Link() { - name_ = "unknown link name"; - registeredGetPropFunction_ = nullptr; - registeredSetPropFunction_ = nullptr; - registeredGetDescriptionFunction_ = nullptr; - }; - - virtual ~Link() {}; - - virtual const std::string& getName() { - return name_; - } - - virtual void setName(const std::string name) { - name_ = name; - } - - // Used at application interface - virtual void getProperty(const std::string& propertyName, PropertyGetFunction& asyncReturnFunc) { - // Call registered function - if (nullptr != registeredGetPropFunction_) { - registeredGetPropFunction_(propertyName, asyncReturnFunc); - } - } - - virtual void setProperty(const std::string& propertyName, const std::string& propertyValue, PropertySetFunction& asyncReturnFunc) { - if (nullptr != registeredSetPropFunction_) { - registeredSetPropFunction_(propertyName, propertyValue, asyncReturnFunc); - } - } - - virtual void getDescription(DescriptionGetFunction& asyncReturnFunc) { - if (nullptr != registeredGetDescriptionFunction_) { - registeredGetDescriptionFunction_(asyncReturnFunc); - } - } - - // Used at protocol interface - virtual void registerGetPropertyFunction(RegisteredGetPropFunction& registeredGetPropFunction) { - registeredGetPropFunction_ = registeredGetPropFunction; - } - - virtual void registerSetPropertyFunction(RegisteredSetPropFunction& registeredSetPropFunction) { - registeredSetPropFunction_ = registeredSetPropFunction; - } - - virtual void registerGetDescriptionFunction(RegisteredGetDescriptionFunction& registeredGetDescriptionFunction) { - registeredGetDescriptionFunction_ = registeredGetDescriptionFunction; - } - -private: - std::string name_; - RegisteredGetPropFunction registeredGetPropFunction_; - RegisteredSetPropFunction registeredSetPropFunction_; - RegisteredGetDescriptionFunction registeredGetDescriptionFunction_; -}; - -} -} -} - -#endif /* LINK_HPP_ */ diff --git a/csdk/controller/core/include/core/Protocol.hpp b/csdk/controller/core/include/core/Protocol.hpp deleted file mode 100644 index 5bfde8d..0000000 --- a/csdk/controller/core/include/core/Protocol.hpp +++ /dev/null @@ -1,74 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef PROTOCOL_H_ -#define PROTOCOL_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include -#include "Device.hpp" - -// ============================================================================ -// Forward declaration -// ============================================================================ -namespace Intel { - namespace CCFL { - namespace API { - class Model; - } - } -} - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace Protocols { - -class Protocol -{ -public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - typedef uint32_t Handle; - - static const Handle INVALID_HANDLE = (Handle)0; -public: - virtual ~Protocol() {}; - -public: - virtual void setModel(const std::shared_ptr& model) = 0; - virtual const Handle getHandle() = 0; - virtual void setHandle(const Handle handle) = 0; - virtual const std::string& getName() = 0; - virtual void forceDeviceDiscovery() = 0; -}; - -} -} -} - -#endif /* PROTOCOL_H_ */ diff --git a/csdk/controller/core/include/core/Service.hpp b/csdk/controller/core/include/core/Service.hpp deleted file mode 100644 index 55b3d3f..0000000 --- a/csdk/controller/core/include/core/Service.hpp +++ /dev/null @@ -1,67 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef SERVICE_H_ -#define SERVICE_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include "Characteristic.hpp" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - -class Service { - // ============================================================ - // Type Definition(s) - // ============================================================ - public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~Service() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - - virtual const std::string& getName() const = 0; - virtual const std::set& getCharacteristics() const = 0; -}; - -} -} -} - - -#endif /* SERVICE_H_ */ diff --git a/csdk/controller/core/include/core/SimpleLogger.cpp b/csdk/controller/core/include/core/SimpleLogger.cpp deleted file mode 100644 index 8cdfbf9..0000000 --- a/csdk/controller/core/include/core/SimpleLogger.cpp +++ /dev/null @@ -1,133 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - - -/* - * SimpleLogger.cpp - * - * Created on: Mar 27, 2014 - * Author: dkhudson - */ -#include "SimpleLogger.h" - -#ifdef __ANDROID__ - #include -#endif - -namespace Intel { -namespace CCFL { - -void LOG(const char * format, ...) { -#ifdef __ANDROID__ - va_list args; - va_start (args, format); - __android_log_vprint(ANDROID_LOG_INFO, "CCF-Lite-ANDROID", format, args); - va_end (args); -#elif defined __linux__ - printf("INFO: CCF-Lite-LINUX: "); - va_list args; - va_start (args, format); - vprintf(format, args); - va_end (args); - printf("\n"); -#endif -} - -void logDebug(const char * tag, const char * format, ...) { -#ifdef __ANDROID__ - va_list args; - va_start (args, format); - __android_log_vprint(ANDROID_LOG_DEBUG, tag, format, args); - va_end (args); -#elif defined __linux__ - printf("DEBUG: %s: ", tag); - va_list args; - va_start (args, format); - vprintf(format, args); - va_end (args); - printf("\n"); -#endif -} -void logInfo(const char * tag, const char * format, ...) { -#ifdef __ANDROID__ - va_list args; - va_start (args, format); - __android_log_vprint(ANDROID_LOG_INFO, tag, format, args); - va_end (args); -#elif defined __linux__ - printf("INFO: %s: ", tag); - va_list args; - va_start (args, format); - vprintf(format, args); - va_end (args); - printf("\n"); -#endif -} - -void logWarn(const char * tag, const char * format, ...) { -#ifdef __ANDROID__ - va_list args; - va_start (args, format); - __android_log_vprint(ANDROID_LOG_WARN, tag, format, args); - va_end (args); -#elif defined __linux__ - printf("WARN: %s: ", tag); - va_list args; - va_start (args, format); - vprintf(format, args); - va_end (args); - printf("\n"); -#endif -} - -void logError(const char * tag, const char * format, ...) { -#ifdef __ANDROID__ - va_list args; - va_start (args, format); - __android_log_vprint(ANDROID_LOG_ERROR, tag, format, args); - va_end (args); -#elif defined __linux__ - printf("ERROR: %s: ", tag); - va_list args; - va_start (args, format); - vprintf(format, args); - va_end (args); - printf("\n"); -#endif -} - -void logFatal(const char * tag, const char * format, ...) { -#ifdef __ANDROID__ - va_list args; - va_start (args, format); - __android_log_vprint(ANDROID_LOG_FATAL, tag, format, args); - va_end (args); -#elif defined __linux__ - printf("FATAL: %s: ", tag); - va_list args; - va_start (args, format); - vprintf(format, args); - va_end (args); - printf("\n"); -#endif -} - -} -} diff --git a/csdk/controller/core/include/core/SimpleLogger.h b/csdk/controller/core/include/core/SimpleLogger.h deleted file mode 100644 index 735709b..0000000 --- a/csdk/controller/core/include/core/SimpleLogger.h +++ /dev/null @@ -1,61 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LOGGER_H_ -#define LOGGER_H_ - -#include -#include -#include - -namespace Intel { -namespace CCFL { - -void logDebug(const char * tag, const char * format, ...); -void logInfo(const char * tag, const char * format, ...); -void logWarn(const char * tag, const char * format, ...); -void logError(const char * tag, const char * format, ...); -void logFatal(const char * tag, const char * format, ...); - - -//#ifndef NDEBUG -//#if 0 -// #ifdef __linux__ -// #include -// #define LOG(...) printf(__VA_ARGS__); printf("\n"); -// #elif __ANDROID__ -// #include -// #define LOG(...) _android_log_print(ANDROID_LOG_INFO, "LOG_TAG", __VA_ARGS__); -// #elif _WIN64 -// #define LOG(...) -// #elif _WIN32 -// #define LOG(...) -// #elif __APPLE__ -// #define LOG(...) -// #else -// #endif -//#else -// #define LOG(...) -//#endif - -} -} - -#endif /* LOGGER_H_ */ diff --git a/csdk/controller/core/include/core/UUIDLess.hpp b/csdk/controller/core/include/core/UUIDLess.hpp deleted file mode 100644 index 9f5874a..0000000 --- a/csdk/controller/core/include/core/UUIDLess.hpp +++ /dev/null @@ -1,50 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef UUIDLESS_HPP_ -#define UUIDLESS_HPP_ - -// ============================================================================ -// Includes -// ============================================================================ - -#include -#include "Core.h" - - // ============================================================================ - // Namespace - // ============================================================================ - namespace Intel { - namespace CCFL { - - class UUIDLess - { - public: - bool operator()(const UUID_t &uuid1, const UUID_t &uuid2) const - { - return memcmp(&uuid1, &uuid2, sizeof(uuid1))<0; - } - }; - -} -} - - -#endif /* UUIDLESS_HPP_ */ diff --git a/csdk/controller/core/makefile b/csdk/controller/core/makefile deleted file mode 100644 index 0fcc7fb..0000000 --- a/csdk/controller/core/makefile +++ /dev/null @@ -1,100 +0,0 @@ -# //****************************************************************** -# // -# // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -# // -# //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -# // -# // 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. -# // -# //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -# -# override with `make BUILD=release` -# default to debug build -BUILD := debug - -CC := g++ - -PROG := core - -SRC_DIR := ./src -TEST_DIR := ./test -TEMP_DIR := ./include/core - -CC_FLAGS.debug := -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -pedantic -fpic -CC_FLAGS.release := -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -fpic -CC_FLAGS := $(CC_FLAGS.$(BUILD)) - -INC := -I$(SRC_DIR) -INC += -I./include/core -INC += -I$(TEST_DIR) -INC += -I../include/controller - -LIBS := -#LIBS := -lpthread -#LIBS += -lboost_thread-mt -#LIBS += -lboost_thread - -# using make's computed variables to select object and bin folders -# depending on the build type -OBJ_DIR.debug := ./obj/debug -OBJ_DIR.release := ./obj/release -OBJ_DIR := $(OBJ_DIR.$(BUILD)) - -BIN_DIR.debug := ./bin/debug -BIN_DIR.release := ./bin/release -BIN_DIR := $(BIN_DIR.$(BUILD)) - -CPP_FILES := $(wildcard $(SRC_DIR)/*.cpp) -CPP_FILES += $(wildcard $(TEST_DIR)/*.cpp) -CPP_FILES += $(wildcard $(TEMP_DIR)/*.cpp) -OBJ_FILES := $(addprefix $(OBJ_DIR)/,$(notdir $(CPP_FILES:.cpp=.o))) -H_FILES := $(wildcard ./include/core/*.hpp) -H_FILES += $(wildcard ./include/core/*.h) -H_FILES += $(wildcard $(TEST_DIR)/*.h) -LD_FLAGS := -L/usr/lib - - -all: $(PROG) - -$(PROG): $(OBJ_FILES) - $(CC) -o $@ $^ $(LD_FLAGS) $(LIBS) - mv ./$(PROG) ./$(BIN_DIR) - - -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h $(H_FILES) - $(CC) $(CC_FLAGS) $(INC) -c -o $@ $< - -$(OBJ_DIR)/%.o: $(TEST_DIR)/%.cpp $(H_FILES) - $(CC) $(CC_FLAGS) $(INC) -c -o $@ $< - -$(OBJ_DIR)/%.o: $(TEMP_DIR)/%.cpp $(H_FILES) - $(CC) $(CC_FLAGS) $(INC) -c -o $@ $< - -.PHONY: clean -clean : - rm -rf ./obj/debug/* - rm -rf ./obj/release/* - rm -rf ./bin/debug/* - rm -rf ./bin/release/* - - -.PHONY: print_vars - -print_vars: - @echo "" - @echo 'BUILD = '$(value BUILD) - @echo 'INC = '$(value INC) - @echo 'CPP_FILES = '$(value CPP_FILES) - @echo 'LIBS = '$(value LIBS) - - diff --git a/csdk/controller/core/src/ModelImpl.cpp b/csdk/controller/core/src/ModelImpl.cpp deleted file mode 100644 index aefd20c..0000000 --- a/csdk/controller/core/src/ModelImpl.cpp +++ /dev/null @@ -1,446 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -// ============================================================================ -// Includes -// ============================================================================ -#include "ModelImpl.h" -//#include "DeviceImpl.h" -#include "SimpleLogger.h" -#include -#include -#include - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - -static const char TAG[] = "ModelImpl"; - -// ============================================================================ -// GetDevicesResult Implementation Class -// ============================================================================ -class GetDeviceSuccess : public GetDevicesResult { -public: - virtual ~GetDeviceSuccess() {} - -// ============================================================ -// Public Method(s) -// ============================================================ -public: - virtual QueryResultType getResult() const { - return SUCCESS; - } - - virtual const std::list& getDeviceList() const { - return deviceList_; - } - -public: - std::list deviceList_; -}; - -// ============================================================================ -// DeviceEvent Implementation Class -// ============================================================================ -class DeviceEventSuccess : public DeviceEvent { -// ============================================================ -// Constructor & Destructor -// ============================================================ -public: - DeviceEventSuccess() { - deviceObserverHandle_ = INVALID_DEVICE_OBSERVER_HANDLE; - } - virtual ~DeviceEventSuccess() {} - -// ============================================================ -// Public Method(s) -// ============================================================ -public: - virtual QueryResultType getResult() const { - return SUCCESS; - } - - virtual DeviceObserverHandle getObserverHandle() const { - return deviceObserverHandle_; - } - - virtual const std::list& getDeviceIdList() const { - return deviceInfoList_; - } - -public: - DeviceObserverHandle deviceObserverHandle_; - std::list deviceInfoList_; -}; - -// ============================================================================ -// Model Factory -// ============================================================================ -Model::SharedPtr Model::createModel() { - logDebug(TAG, "Entering Model::createModel"); - return ModelImpl::createModel(); -} - -ModelImpl::SharedPtr ModelImpl::createModel() { - // Get singleton of ModelImpl. - logDebug(TAG, "Entering ModelImpl::createModel"); - static SharedPtr instance = std::make_shared(); - - return instance; -} -// ============================================================================ -// Constructors & Destructors -// ============================================================================ -ModelImpl::ModelImpl() { - logDebug(TAG, "Entering ModelImpl::ModelImpl"); - - // initialize random seed for use with random protocol handles - srand(time(NULL)); -} - -ModelImpl::~ModelImpl() { - logDebug(TAG, "Entering ModelImpl::~ModelImpl"); - protocolMap_.clear(); - deviceList_.clear(); - deviceObserverMap_.clear(); -} - -// ============================================================================ -// Public methods -// ============================================================================ - -void ModelImpl::getDevices(GetDevicesFunction& asyncReturnFunc) { - logDebug(TAG, "Entering ModelImpl::getDevices"); - - mutex_lock_guard lock(deviceListMutex_); - - GetDeviceSuccess result; - // Insert from the model device list to the result device list - result.deviceList_.insert(result.deviceList_.end(), deviceList_.begin(), deviceList_.end()); - - // Invoke the callback - asyncReturnFunc(result); -} - -// Add/remove device observer -void ModelImpl::removeDeviceObserver(DeviceObserverHandle observerHandle) { - logDebug(TAG, "Entering ModelImpl::removeDeviceObserver"); - - mutex_lock_guard lock(deviceObserverMapMutex_); - for (auto iter = deviceObserverMap_.begin(); iter != deviceObserverMap_.end(); ++iter) { - if (iter->first == observerHandle) { - // Remove protocol - deviceObserverMap_.erase(iter); - logDebug(TAG, "ModelImpl::removeDeviceObserver, removed observer handle %d", (uint32_t)observerHandle); - return; - } - } -} - -void ModelImpl::setDeviceObserver(DeviceEventFunction& asyncEventFunction) { - // TODO: anyway to ensure that asyncEventFunction is valid? nullptr check? - logDebug(TAG, "Entering ModelImpl::setDeviceObserver"); - - // Create a local scope here so that the mutex will be released at the end of the scope - { - mutex_lock_guard lock(deviceObserverMapMutex_); - // Get a handle that is not already in use - DeviceObserverHandle observerHandle; - do { - observerHandle = generateDeviceObserverHandle(); - } while (isDeviceObserverHandleInUse(observerHandle)); - - // Add observer to the map. - // Insert returns a pair with the second a bool set to true if a new element - // was inserted or false if an equivalent key already existed. - if (deviceObserverMap_.insert(DeviceObserverMap::value_type(observerHandle, asyncEventFunction)).second) { - logDebug(TAG, "Entering ModelImpl::setDeviceObserver, observer added"); - } - else { - logDebug(TAG, "ModelImpl::setDeviceObserver: Error inserting observer"); - } - } - - // Notify the observers - DeviceIdList deviceIdList = getDeviceIdList(); - notifyDeviceObservers(DeviceEvent::DeviceChange::DEVICE_CURRENT_COLLECTION, deviceIdList); -} - -const Protocols::Protocol::Handle ModelImpl::registerProtocol(const Protocols::Protocol::SharedPtr& protocol) { - logDebug(TAG, "Entering ModelImpl::registerProtocol"); - - // Validate protocol - assert(protocol); - - logDebug(TAG, "ModelImpl::registerProtocol, trying to register protocol %s", protocol->getName().c_str()); - - // Iterate through map and ensure that the protocol is not already registered - Protocols::Protocol::Handle handle = Protocols::Protocol::INVALID_HANDLE; - bool protocolRegistered = false; - - mutex_lock_guard lock(protocolMapMutex_); - - for (auto iter = protocolMap_.begin(); iter != protocolMap_.end(); ++iter) { - // TODO: need to handle a protocol that no longer is in scope. - // Remove from map and maybe notify apps that devices and/or connections are no longer present - Protocols::Protocol::SharedPtr sharedProtocol = iter->second.lock(); - if (sharedProtocol) { - if (sharedProtocol->getName() == protocol->getName()) { - logDebug(TAG, "ModelImpl::registerProtocol, protocol %s already registered", protocol->getName().c_str()); - protocolRegistered = true; - break; - } - } - } - - // If the protocol isn't registered, create a new handle and add - // the protocol to the map - if (!protocolRegistered) { - - // Get a handle that is not already in use - do { - handle = generateProtocolHandle(); - } while (isHandleInUse(handle)); - - // Add protocol to the map. - // Insert returns a pair with the second a bool set to true if a new element - // was inserted or false if an equivalent key already existed. - Protocols::Protocol::WeakPtr weakProtocol = protocol; - if (!protocolMap_.insert(ProtocolMap::value_type(handle, weakProtocol)).second) { - logDebug(TAG, "ModelImpl::registerProtocol: Error inserting protocol %s", protocol->getName().c_str()); - handle = Protocols::Protocol::INVALID_HANDLE; - } - else { - logDebug(TAG, "ModelImpl::registerProtocol: registered protocol = %s", protocol->getName().c_str()); - protocol->setHandle(handle); - } - } - - return handle; -} - -bool ModelImpl::unregisterProtocol(const Protocols::Protocol::Handle protocolHandle) { - logDebug(TAG, "Entering ModelImpl::unregisterProtocol"); - - bool handleFound = false; - - mutex_lock_guard lock(protocolMapMutex_); - - for (auto iter = protocolMap_.begin(); iter != protocolMap_.end(); ++iter) { - if (iter->first == protocolHandle) { - handleFound = true; - // Remove protocol - protocolMap_.erase(iter); - logDebug(TAG, "ModelImpl::unregisterProtocol, unregistering protocol handle %d", (uint32_t)protocolHandle); - break; - } - } - - return handleFound; -} - -Device::SharedPtr ModelImpl::getDevice(const UUID_t& deviceId) { - logDebug(TAG, "Entering ModelImpl::getDevice"); - - // Get a device from the device list. If the device already exists, return that - // device. If not, create a new device with the specified device id, add it to - // the device list, and then return the device - mutex_lock_guard lock(deviceListMutex_); - if (deviceList_.empty()) - { - logDebug(TAG, "ModelImpl::getDevice, device list empty, adding device"); - return addDeviceToList(deviceId); - } - - // Search list for the device based on device id - for (auto iter = deviceList_.begin(); iter != deviceList_.end(); ++iter) { - Device::SharedPtr device = *iter; - if (device->getId() == deviceId) { - logDebug(TAG, "ModelImpl::getDevice, device found in list"); - return device; - } - } - - // If here, device not found in list, so add and return - logDebug(TAG, "ModelImpl::getDevice, device not found in list, adding device"); - return addDeviceToList(deviceId); -} - -void ModelImpl::signalDeviceChange(const UUID_t& deviceId, DeviceEvent::DeviceChange deviceEvent) { - - uint32_t linkCount; - DeviceIdList deviceIdList; - bool sendNotification = false; - - // Create a local scope so that the deviceListMutex_ will be released at the end - // of the local scope - { - mutex_lock_guard lock(deviceListMutex_); - // Search list for the device based on device id - for (auto iter = deviceList_.begin(); iter != deviceList_.end(); ++iter) { - Device::SharedPtr device = *iter; - if (device->getId() == deviceId) { - linkCount = device->getLinkCount(); - logDebug(TAG, "ModelImpl::signalDeviceChange, device found, number of links = %d", linkCount); - - if (deviceEvent == DeviceEvent::DeviceChange::DEVICE_ADDED) { - // If DEVICE_ADDED and only one link, then that indicates that this is the first - // time that the device was found by a protocol, so a notification must be sent. - // Multiple links in the device indicate that that the device was previously found - // by other protocols, so a notification is not required - if (linkCount == 1) { - deviceIdList.push_back(deviceId); - sendNotification = true; - } - } - else if (deviceEvent == DeviceEvent::DeviceChange::DEVICE_REMOVED) { - // If DEVICE_REMOVED and no links remain in the device, then the - // device needs to be removed from the device list and - // a device removal notification must be sent. - if (linkCount == 0) { - deviceIdList.push_back(deviceId); - deviceList_.erase(iter); - sendNotification = true; - } - } - break; - } - } - } - - // Since a device was added or removed, notify the device observers - if (sendNotification) { - notifyDeviceObservers(deviceEvent, deviceIdList); - } -} - -// ============================================================================ -// Private methods -// ============================================================================ -const Protocols::Protocol::Handle ModelImpl::generateProtocolHandle() { - // Handle between 1 and (RAND_MAX -1) - Protocols::Protocol::Handle handle = (Protocols::Protocol::Handle)(rand() % (RAND_MAX - 1) + 1); - - return handle; -} - -bool ModelImpl::isHandleInUse(Protocols::Protocol::Handle handle) { - bool handleFound = false; - - for (auto iter = protocolMap_.begin(); iter != protocolMap_.end(); ++iter) { - if (iter->first == handle) { - handleFound = true; - break; - } - } - return handleFound; -} - -Device::SharedPtr ModelImpl::addDeviceToList(const UUID_t& deviceId) { - logDebug(TAG, "Entering ModelImpl::addDeviceToList"); - - deviceList_.push_back(std::make_shared(deviceId)); - return deviceList_.back(); -} - -DeviceObserverHandle ModelImpl::generateDeviceObserverHandle() { - // Handle between 1 and (RAND_MAX -1) - DeviceObserverHandle handle = (DeviceObserverHandle)(rand() % (RAND_MAX - 1) + 1); - - return handle; -} - -bool ModelImpl::isDeviceObserverHandleInUse(DeviceObserverHandle observerHandle) { - bool handleFound = false; - - for (auto iter = deviceObserverMap_.begin(); iter != deviceObserverMap_.end(); ++iter) { - if (iter->first == observerHandle) { - handleFound = true; - break; - } - } - return handleFound; -} - -void ModelImpl::notifyDeviceObservers(DeviceEvent::DeviceChange event, const DeviceIdList& deviceIdList) { - logDebug(TAG, "Entering ModelImpl::notifyDeviceObservers"); - - // Iterate through the device id list that was passed to the notifier - // and create a list of DeviceEvent::DeviceEventInfo objects. - // Set the device id and the event in the DeviceEvent::DeviceEventInfo object - std::list deviceEventInfoList; - DeviceEvent::DeviceEventInfo info; - for (auto iter = deviceIdList.begin(); iter != deviceIdList.end(); ++iter) { - info.deviceId = *iter; - info.deviceChange = event; - - deviceEventInfoList.push_back(info); - } - - mutex_lock_guard lock(deviceObserverMapMutex_); - - // Nothing to do if there are no observers - if (deviceObserverMap_.empty()) { - return; - } - - DeviceObserverHandle observerHandle; - DeviceEventFunction eventFunction; - - // For every observer in the observer map: - for (auto iter = deviceObserverMap_.begin(); iter != deviceObserverMap_.end(); ++iter) { - observerHandle = iter->first; - eventFunction = iter->second; - - // 1. Create a DeviceEventSuccess object and set the observer handle - DeviceEventSuccess deviceEventSuccess; - deviceEventSuccess.deviceObserverHandle_ = observerHandle; - - // 2. Insert the deviceEventInfoList into the DeviceEventSuccess object list - deviceEventSuccess.deviceInfoList_.insert(deviceEventSuccess.deviceInfoList_.end(), deviceEventInfoList.begin(), deviceEventInfoList.end()); - - // 3. Invoke the observer's callback function - eventFunction(deviceEventSuccess); - } - -} - -ModelImpl::DeviceIdList ModelImpl::getDeviceIdList() { - - mutex_lock_guard lock(deviceListMutex_); - - DeviceIdList deviceIdList; - - // Search list for the device based on device id - for (auto iter = deviceList_.begin(); iter != deviceList_.end(); ++iter) { - Device::SharedPtr device = *iter; - deviceIdList.push_back(device->getId()); - } - - return deviceIdList; -} - -} -} -} diff --git a/csdk/controller/core/src/ModelImpl.h b/csdk/controller/core/src/ModelImpl.h deleted file mode 100644 index 9f54530..0000000 --- a/csdk/controller/core/src/ModelImpl.h +++ /dev/null @@ -1,101 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef MODELIMPL_H_ -#define MODELIMPL_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include - -#include "Protocol.hpp" -#include "UUIDLess.hpp" -#include "InternalApi.h" -#include "Core.h" - - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace API { - -class ModelImpl : public Model -{ -public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - -public: - // Factory - static SharedPtr createModel(); - -public: - // Constructor & Destructor - ModelImpl(); - virtual ~ModelImpl(); - - // Get the device list - virtual void getDevices(GetDevicesFunction& asyncReturnFunc); - - // Add/remove device observer - virtual void removeDeviceObserver(DeviceObserverHandle observerHandle); - virtual void setDeviceObserver(DeviceEventFunction& asyncEventFunction); - - // Register/unregister a protocol - virtual const Protocols::Protocol::Handle registerProtocol(const Protocols::Protocol::SharedPtr& protocol); - virtual bool unregisterProtocol(const Protocols::Protocol::Handle protocolHandle); - virtual Device::SharedPtr getDevice(const UUID_t& deviceId); - virtual void signalDeviceChange(const UUID_t& deviceId, DeviceEvent::DeviceChange deviceEvent); - -private: - typedef std::map ProtocolMap; - typedef std::list DeviceList; - typedef std::map DeviceObserverMap; - typedef std::list DeviceIdList; -private: - const Protocols::Protocol::Handle generateProtocolHandle(); - bool isHandleInUse(Protocols::Protocol::Handle handle); - Device::SharedPtr addDeviceToList(const UUID_t& deviceId); - - DeviceObserverHandle generateDeviceObserverHandle(); - bool isDeviceObserverHandleInUse(DeviceObserverHandle observerHandle); - DeviceIdList getDeviceIdList(); - void notifyDeviceObservers(DeviceEvent::DeviceChange event, const DeviceIdList& deviceIdList); - -private: - ProtocolMap protocolMap_; - DeviceList deviceList_; - DeviceObserverMap deviceObserverMap_; - - mutex protocolMapMutex_; - mutex deviceListMutex_; - mutex deviceObserverMapMutex_; -}; - -} -} -} -#endif /* MODELIMPL_H_ */ diff --git a/csdk/controller/core/test/CCFL-CoreTest.cpp b/csdk/controller/core/test/CCFL-CoreTest.cpp deleted file mode 100644 index a2abc4e..0000000 --- a/csdk/controller/core/test/CCFL-CoreTest.cpp +++ /dev/null @@ -1,230 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -//#include -#include -#include - -#ifdef __linux__ - #include - #include - #include -#endif - - -#include -#include "InternalApi.h" -#include "SimpleLogger.h" -#include "MockProtocol.h" -#include "Core.h" -#include "Description.hpp" - -#include -#include -#include - -const std::string MOCK_DEVICE_ID0 = "7c34ad16-ae8c-415b-94cc-d8053f4f9f8e"; -const std::string MOCK_DEVICE_ID1 = "646344d0-271c-49dd-8b13-3a7bec1237bd"; -const std::string MOCK_DEVICE_ID2 = "74c406ca-1cfb-4106-a82f-6123e3fe3555"; - -static const char TAG[] = "CCFL-CoreTest.cpp"; - -UUID_t toUuid(const std::string& uuidStr) { - boost::uuids::string_generator gen; - return gen(uuidStr); -} - -using namespace std; - -void setPropertyAsync(const Intel::CCFL::API::PropertySetResult& result) { - Intel::CCFL::logDebug(TAG, "\t********entering main::setPropertyAsync********"); - if (result.getResult() == Intel::CCFL::API::QueryResultType::SUCCESS) { - Intel::CCFL::logDebug(TAG, "\t QueryResultType::SUCCESS"); - Intel::CCFL::logDebug(TAG, "\t property:"); - Intel::CCFL::logDebug(TAG, "\t\t name = %s", result.getName().c_str()); - Intel::CCFL::logDebug(TAG, "\t\t value = %s", result.getValue().c_str()); - } - Intel::CCFL::logDebug(TAG, "\t********leaving main::setPropertyAsync********"); -} - -void getPropertyAsync(const Intel::CCFL::API::PropertyGetResult& result) { - Intel::CCFL::logDebug(TAG, "\t********entering main::getPropertyAsync********"); - if (result.getResult() == Intel::CCFL::API::QueryResultType::SUCCESS) { - Intel::CCFL::logDebug(TAG, "\t QueryResultType::SUCCESS"); - Intel::CCFL::logDebug(TAG, "\t property:"); - Intel::CCFL::logDebug(TAG, "\t\t name = %s", result.getName().c_str()); - Intel::CCFL::logDebug(TAG, "\t\t value = %s", result.getValue().c_str()); - } - Intel::CCFL::logDebug(TAG, "\t********leaving main::getPropertyAsync********"); -} - -void getDescriptionAsync(const Intel::CCFL::API::DescriptionGetResult& result) { - Intel::CCFL::logDebug(TAG, "\t********entering main::getDescriptionAsync********"); - - if (result.getResult() == Intel::CCFL::API::QueryResultType::SUCCESS) { - Intel::CCFL::logDebug(TAG, "\t QueryResultType::SUCCESS"); - std::set serviceSet = result.getServices(); - - for (auto iter = serviceSet.begin(); iter != serviceSet.end(); ++iter) { - Intel::CCFL::API::Service::WeakPtr serviceWeak = *iter; - Intel::CCFL::API::Service::SharedPtr service = serviceWeak.lock(); - if (service) { - Intel::CCFL::logDebug(TAG, "\t service = %s", service->getName().c_str()); - - std::set characteristicSet = service->getCharacteristics(); - for (auto iter = characteristicSet.begin(); iter != characteristicSet.end(); ++iter) { - Intel::CCFL::API::Characteristic::WeakPtr characteristicWeak = *iter; - Intel::CCFL::API::Characteristic::SharedPtr characteristic = characteristicWeak.lock(); - if (characteristic) { - Intel::CCFL::logDebug(TAG, "\t\t characteristic = %s", characteristic->getName().c_str()); - Intel::CCFL::logDebug(TAG, "\t\t readable = %d", characteristic->isReadable()); - Intel::CCFL::logDebug(TAG, "\t\t writable = %d", characteristic->isWritable()); - Intel::CCFL::logDebug(TAG, "\t\t constant = %d", characteristic->isConstant()); - } - } - } - } - } - Intel::CCFL::logDebug(TAG, "\t********leaving main::getDescriptionAsync********"); -} - -void getDevicesAsync(const Intel::CCFL::API::GetDevicesResult& result) { - Intel::CCFL::logDebug(TAG, "Entering main::getDevicesAsync"); - - if (result.getResult() == Intel::CCFL::API::QueryResultType::SUCCESS) { - Intel::CCFL::logDebug(TAG, "main::getDevicesAsync, QueryResultType::SUCCESS"); - std::list deviceList = result.getDeviceList(); - // Search list for the device based on device id - if (deviceList.size() > 0) { - for (auto iter = deviceList.begin(); iter != deviceList.end(); ++iter) { - Intel::CCFL::API::Device::WeakPtr deviceWeak = *iter; - Intel::CCFL::API::Device::SharedPtr device = deviceWeak.lock(); - if (device) { - Intel::CCFL::logDebug(TAG, "\tDevice:"); - Intel::CCFL::logDebug(TAG, "\t name = %s", device->getName().c_str()); - Intel::CCFL::logDebug(TAG, "\t UUID = %s", to_string(device->getId()).c_str()); - - // Test characteristic stuff - if (device->getName() == "MockDevice0") { - if (device->getLinkCount() > 0) { - Intel::CCFL::API::Device::LinkList linkList = device->getLinks(); - Intel::CCFL::API::Link::WeakPtr linkWeak = linkList.front(); - Intel::CCFL::API::Link::SharedPtr linkShared = linkWeak.lock(); - if (linkShared) { - // Test set/get properties - Intel::CCFL::API::DescriptionGetFunction descriptionGetFunction = getDescriptionAsync; - linkShared->getDescription(descriptionGetFunction); - Intel::CCFL::API::PropertyGetFunction propertyGetFunction = getPropertyAsync; - linkShared->getProperty("CHARACTERISTIC_0", propertyGetFunction); - linkShared->getProperty("CHARACTERISTIC_1", propertyGetFunction); - - Intel::CCFL::API::PropertySetFunction propertySetFunction = setPropertyAsync; - linkShared->setProperty("CHARACTERISTIC_0", "new_CHARACTERISTIC_0_Value", propertySetFunction); - linkShared->setProperty("CHARACTERISTIC_1", "new_CHARACTERISTIC_1_Value", propertySetFunction); - - linkShared->getProperty("CHARACTERISTIC_0", propertyGetFunction); - linkShared->getProperty("CHARACTERISTIC_1", propertyGetFunction); - } - } - } - } - } - } - else { - Intel::CCFL::logDebug(TAG, "\t No devices found"); - } - } -} - -#ifdef __ANDROID__ - int android_jni_entry() { -#elif defined __linux__ - int main() { -#endif - - Intel::CCFL::logDebug(TAG, "Starting CCFL Core Test"); - - // Create MockProtocols. Two are created to make sure that multiples are registered and unregistered correctly - std::shared_ptr mockProtocol = std::make_shared(); - mockProtocol->setName("MockProtocol"); - - // Get a model from the CCFL API so that we can access the API interface - Intel::CCFL::API::Model::WeakPtr modelWeak = Intel::CCFL::API::Model::createModel(); - Intel::CCFL::API::Model::SharedPtr modelShared = modelWeak.lock(); - if (modelShared) { - - mockProtocol->setModel(modelShared); - - // Register the MockProtocol - Intel::CCFL::Protocols::Protocol::Handle handle; - handle = modelShared->registerProtocol(mockProtocol); - Intel::CCFL::logDebug(TAG, "Protocol %s handle = %d", mockProtocol->getName().c_str(), (uint32_t)handle); - - Intel::CCFL::API::GetDevicesFunction deviceFunc = getDevicesAsync; - modelShared->getDevices(deviceFunc); - - mockProtocol->testAddDevice(toUuid(MOCK_DEVICE_ID0), "MockDevice0"); - modelShared->getDevices(deviceFunc); - - Intel::CCFL::API::DeviceEventFunction deviceEventLambda = [](const Intel::CCFL::API::DeviceEvent& result)->void { - Intel::CCFL::logDebug(TAG, "main::deviceEventAsyncLambda"); - if (result.getResult() == Intel::CCFL::API::QueryResultType::SUCCESS) { - Intel::CCFL::API::DeviceObserverHandle handle = result.getObserverHandle(); - Intel::CCFL::logDebug(TAG, "main::deviceEventAsyncLambda, observer handle = %ld", (uint32_t)handle); - std::list infoList = result.getDeviceIdList(); - for (auto iter = infoList.begin(); iter != infoList.end(); ++iter) { - Intel::CCFL::API::DeviceEvent::DeviceEventInfo info = *iter; - Intel::CCFL::logDebug(TAG, "\t Device UUID = %s", to_string(info.deviceId).c_str()); - switch (info.deviceChange) { - case Intel::CCFL::API::DeviceEvent::DeviceChange::DEVICE_CURRENT_COLLECTION: - Intel::CCFL::logDebug(TAG, "\t Event = DEVICE_CURRENT_COLLECTION"); - break; - case Intel::CCFL::API::DeviceEvent::DeviceChange::DEVICE_ADDED: - Intel::CCFL::logDebug(TAG, "\t Event = DEVICE_ADDED"); - break; - case Intel::CCFL::API::DeviceEvent::DeviceChange::DEVICE_REMOVED: - Intel::CCFL::logDebug(TAG, "\t Event = DEVICE_REMOVED"); - break; - default: - Intel::CCFL::logDebug(TAG, "\t Event = unknown"); - break; - } - } - } - }; - modelShared->setDeviceObserver(deviceEventLambda); - - mockProtocol->testAddDevice(toUuid(MOCK_DEVICE_ID1), "MockDevice1"); - modelShared->getDevices(deviceFunc); - mockProtocol->testAddDevice(toUuid(MOCK_DEVICE_ID2), "MockDevice2"); - modelShared->getDevices(deviceFunc); - mockProtocol->testRemoveDevice(toUuid(MOCK_DEVICE_ID0)); - modelShared->getDevices(deviceFunc); - - Intel::CCFL::logDebug(TAG, "Sleep for 5 sec"); - std::this_thread::sleep_for(std::chrono::seconds(5)); - modelShared->unregisterProtocol(handle); - Intel::CCFL::logDebug(TAG, "Sleep for 5 sec"); - } - - - Intel::CCFL::logDebug(TAG, "Exiting CCFL Core Test"); - return 0; -} diff --git a/csdk/controller/core/test/MockProtocol.cpp b/csdk/controller/core/test/MockProtocol.cpp deleted file mode 100644 index 1c04269..0000000 --- a/csdk/controller/core/test/MockProtocol.cpp +++ /dev/null @@ -1,361 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -// ============================================================================ -// Includes -// ============================================================================ -#include "MockProtocol.h" -#include "SimpleLogger.h" -#include "InternalApi.h" -#include "Link.hpp" -#include "Description.hpp" -#include "Service.hpp" -#include "Characteristic.hpp" -#include - -#include -#include -#include -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace Protocols { - -static const char TAG[] = "MockProtocol"; - -const std::string MockProtocol::MOCK_DEVICE_ID = "7c34ad16-ae8c-415b-94cc-d8053f4f9f8e"; -static std::string characteristic0Value = "CHARACTERISTIC_0_VALUE"; - -// ============================================================================ -// PropertyGetResult Implementation Class -// ============================================================================ -class PropertyGetResultImpl : public API::PropertyGetResult { -public: - PropertyGetResultImpl() { - name_ = ""; - value_ = ""; - } - virtual ~PropertyGetResultImpl() {} - -public: - virtual API::QueryResultType getResult() const { - return API::QueryResultType::SUCCESS; - } - - virtual const std::string& getName() const { - return name_; - } - - virtual const std::string& getValue() const { - return value_; - } - -public: - std::string name_; - std::string value_; -}; - -// ============================================================================ -// PropertySetResult Implementation Class -// ============================================================================ -class PropertySetResultImpl : public API::PropertySetResult { -public: - PropertySetResultImpl() { - name_ = ""; - value_ = ""; - } - virtual ~PropertySetResultImpl() {} - -public: - virtual API::QueryResultType getResult() const { - return API::QueryResultType::SUCCESS; - } - - virtual const std::string& getName() const { - return name_; - } - - virtual const std::string& getValue() const { - return value_; - } - -public: - std::string name_; - std::string value_; - -}; - -// ============================================================================ -// Characteristic Implementation Class -// ============================================================================ -class CharacteristicImpl : public API::Characteristic { -public: - CharacteristicImpl() { - name_ = ""; - isReadable_ = true; - isWritable_ = true; - isConstant_ = false; - } - virtual ~CharacteristicImpl() {} - -public: - virtual const std::string& getName() const { - return name_; - } - virtual bool isReadable() const { - return isReadable_; - } - virtual bool isWritable() const { - return isWritable_; - } - virtual bool isConstant() const { - return isConstant_; - } - -public: - std::string name_; - bool isReadable_; - bool isWritable_; - bool isConstant_; -}; - -// ============================================================================ -// Service Implementation Class -// ============================================================================ -class ServiceImpl : public API::Service { -public: - ServiceImpl() { - name_ = ""; - } - - virtual ~ServiceImpl() {} - -public: - - virtual const std::string& getName() const { - return name_; - } - - virtual const std::set& getCharacteristics() const { - return characteristicSet_; - } -public: - std::string name_; - std::set characteristicSet_; -}; -// ============================================================================ -// DescriptionGetResult Implementation Class -// ============================================================================ -class DescriptionGetResultImpl : public API::DescriptionGetResult { -public: - virtual ~DescriptionGetResultImpl() {} - -public: - virtual API::QueryResultType getResult() const { - return API::QueryResultType::SUCCESS; - }; - - virtual const std::set& getServices() const { - return serviceSet_; - } - -public: - std::set serviceSet_; -}; - -// ============================================================================ -// RegisteredSetPropFunction -// ============================================================================ -void setPropertyFunction(const std::string& propertyName, const std::string& propertyValue, const API::PropertySetFunction& asyncReturnFunc) { - logDebug(TAG, "Entering MockProtocol::setPropertyFunction"); - - PropertySetResultImpl result; - - if (propertyName == "CHARACTERISTIC_0") { - // CHARACTERISTIC_0 is read/write, non-constant, so allow it to be set to new value - result.name_ = "CHARACTERISTIC_0"; - characteristic0Value = propertyValue; - result.value_ = characteristic0Value; - } - else if (propertyName == "CHARACTERISTIC_1") { - // CHARACTERISTIC_1 is constant, so ignore new value - result.name_ = "CHARACTERISTIC_1"; - result.value_ = "CHARACTERISTIC_1_VALUE"; - } - - asyncReturnFunc(result); -} -// ============================================================================ -// RegisteredGetPropFunction -// ============================================================================ -void getPropertyFunction(const std::string& propertyName, const API::PropertyGetFunction& asyncReturnFunc) { - logDebug(TAG, "Entering MockProtocol::getPropertyFunction"); - - PropertyGetResultImpl result; - - if (propertyName == "CHARACTERISTIC_0") { - result.name_ = "CHARACTERISTIC_0"; - result.value_ = characteristic0Value; - } - else if (propertyName == "CHARACTERISTIC_1") { - result.name_ = "CHARACTERISTIC_1"; - result.value_ = "CHARACTERISTIC_1_VALUE"; - } - - asyncReturnFunc(result); -} - -// ============================================================================ -// RegisteredGetDescriptionFunction -// ============================================================================ -void getDescriptionFunction(const API::DescriptionGetFunction& asyncReturnFunc) { - logDebug(TAG, "Entering MockProtocol::getDescriptionFunction"); - - DescriptionGetResultImpl result; - - std::shared_ptr service = std::make_shared(); - if (service) { - service->name_ = "SERVICE_A"; - std::shared_ptr characteristic0 = std::make_shared(); - if (characteristic0) { - characteristic0->name_ = "CHARACTERISTIC_0"; - service->characteristicSet_.insert(characteristic0); - } - std::shared_ptr characteristic1 = std::make_shared(); - if (characteristic1) { - characteristic1->name_ = "CHARACTERISTIC_1"; - characteristic1->isReadable_ = true; - characteristic1->isWritable_ = false; - characteristic1->isConstant_ = true; - - service->characteristicSet_.insert(characteristic1); - } - - result.serviceSet_.insert(service); - } - - - // Invoke the callback - asyncReturnFunc(result); -} - -// ============================================================================ -// Class -// ============================================================================ -MockProtocol::MockProtocol() -{ - logDebug(TAG, "Entering MockProtocol::MockProtocol"); - - name_ = "Mock Protocol"; - handle_ = Protocol::INVALID_HANDLE; -} - -MockProtocol::~MockProtocol() -{ - logDebug(TAG, "Entering MockProtocol::~MockProtocol"); -} - -void MockProtocol::setModel(const std::shared_ptr& model) { - logDebug(TAG, "Entering MockProtocol::setModel"); - model_ = model; -} - -const Intel::CCFL::Protocols::Protocol::Handle MockProtocol::getHandle() { - logDebug(TAG, "Entering MockProtocol::getHandle"); - return 0; -} - -void MockProtocol::setHandle(const Handle handle) { - logDebug(TAG, "Entering MockProtocol::setHandle"); - handle_ = handle; -} - -const std::string& MockProtocol::getName() { -// logDebug(TAG, "Entering MockProtocol::getName"); - return name_; -} - -void MockProtocol::setName(const std::string& name) -{ - logDebug(TAG, "Entering MockProtocol::setName, name = %s", name.c_str()); - name_ = name; -} - -void MockProtocol::forceDeviceDiscovery() { - logDebug(TAG, "Entering MockProtocol::forceDeviceDiscovery"); -} - -// Test interface -void MockProtocol::testAddDevice(const UUID_t& deviceId, const std::string deviceName) { - logDebug(TAG, "Entering MockProtocol::testAddDevice, device name = %s, device UUID = %s", deviceName.c_str(), to_string(deviceId).c_str()); - - std::shared_ptr sharedModel = model_.lock(); - if (sharedModel) { - API::Device::SharedPtr device = sharedModel->getDevice(deviceId); - if (device) { - device->setName(deviceName); - // Add a link to the device - API::Link::SharedPtr link = std::make_shared(); - - // Register property functions for the link - API::Link::RegisteredGetDescriptionFunction regGetDescriptionFunction = getDescriptionFunction; - link->registerGetDescriptionFunction(regGetDescriptionFunction); - API::Link::RegisteredGetPropFunction regGetPropFunction = getPropertyFunction; - link->registerGetPropertyFunction(regGetPropFunction); - API::Link::RegisteredSetPropFunction regSetPropFunction = setPropertyFunction; - link->registerSetPropertyFunction(regSetPropFunction); - - // Add the link to the device and signal the model that the device changed - device->addLink(link); - sharedModel->signalDeviceChange(deviceId, API::DeviceEvent::DeviceChange::DEVICE_ADDED); - } - } -} - -void MockProtocol::testRemoveDevice(const UUID_t& deviceId) { - logDebug(TAG, "Entering MockProtocol::testRemoveDevice, device UUID = %s", to_string(deviceId).c_str()); - - std::shared_ptr sharedModel = model_.lock(); - if (sharedModel) { - API::Device::SharedPtr device = sharedModel->getDevice(deviceId); - if (device) { - // Remove the link - uint32_t linkCnt = device->getLinkCount(); - logDebug(TAG, "MockProtocol::testRemoveDevice, link count = %d", linkCnt); - if (linkCnt > 0) { - API::Device::LinkList linkList = device->getLinks(); - API::Link::SharedPtr link = linkList.front(); - if (link) { - logDebug(TAG, "MockProtocol::testRemoveDevice, removing link"); - if (device->removeLink(link)) { - logDebug(TAG, "MockProtocol::testRemoveDevice, link removed, signaling device change"); - sharedModel->signalDeviceChange(deviceId, API::DeviceEvent::DeviceChange::DEVICE_REMOVED); - } - } - } - } - } -} - -} -} -} diff --git a/csdk/controller/core/test/MockProtocol.h b/csdk/controller/core/test/MockProtocol.h deleted file mode 100644 index cfab6f2..0000000 --- a/csdk/controller/core/test/MockProtocol.h +++ /dev/null @@ -1,75 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef MOCKPROTOCOL_H_ -#define MOCKPROTOCOL_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include "Protocol.hpp" -#include "Core.h" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace Intel { -namespace CCFL { -namespace Protocols { - -// ============================================================================ -// Class -// ============================================================================ -class MockProtocol : public Protocol -{ -public: - MockProtocol(); - virtual ~MockProtocol(); -public: - virtual void setModel(const std::shared_ptr& model); - virtual const Handle getHandle(); - virtual void setHandle(const Handle handle); - virtual const std::string& getName(); - virtual void setName(const std::string& name); - virtual void forceDeviceDiscovery(); - -private: - std::string name_; - Handle handle_; - std::weak_ptr model_; - -// Test interface -public: - void testAddDevice(const UUID_t& deviceId, const std::string deviceName); - void testRemoveDevice(const UUID_t& deviceId); -private: - static const std::string MOCK_DEVICE_ID; - -}; - - -} -} -} - -#endif /* MOCKPROTOCOL_H_ */ diff --git a/csdk/controller/src/remoting/LiteConnection.cpp b/csdk/controller/src/remoting/LiteConnection.cpp deleted file mode 100644 index 351a07d..0000000 --- a/csdk/controller/src/remoting/LiteConnection.cpp +++ /dev/null @@ -1,49 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -// ============================================================================ -// Includes -// ============================================================================ -#include "LiteConnection.h" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace remoting { - - // ============================================================================ - // Constructor/Destructor - // ============================================================================ - //--------------------------------------------------------------------------- - // Constructor - //--------------------------------------------------------------------------- - LiteConnection::LiteConnection(int socket) : socket_(socket) - { - - } - - //--------------------------------------------------------------------------- - // Destructor - //--------------------------------------------------------------------------- - LiteConnection::~LiteConnection() - { - } - -} diff --git a/csdk/controller/src/remoting/LiteConnection.h b/csdk/controller/src/remoting/LiteConnection.h deleted file mode 100644 index 2bb7932..0000000 --- a/csdk/controller/src/remoting/LiteConnection.h +++ /dev/null @@ -1,50 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LITECONNECTION_H_ -#define LITECONNECTION_H_ - -// ============================================================================ -// Includes -// ============================================================================ - - -// ============================================================================ -// Namespace -// ============================================================================ -namespace remoting { - - // ========================================================================== - // Class - // ========================================================================== - - class LiteConnection { - public: - // TODO: socket parameter is faked with an int for now until I know how the connection info will be conveyed - LiteConnection(int socket); - virtual ~LiteConnection(); - - private: - int socket_; - }; - -} - -#endif /* LITECONNECTION_H_ */ diff --git a/csdk/controller/src/remoting/LiteRemoting.cpp b/csdk/controller/src/remoting/LiteRemoting.cpp deleted file mode 100644 index 20709d7..0000000 --- a/csdk/controller/src/remoting/LiteRemoting.cpp +++ /dev/null @@ -1,322 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -// ============================================================================ -// Includes -// ============================================================================ -#include "LiteRemoting.h" - -#include -#include -#include -#include - -#ifdef DEBUG -#include -#endif - -// ============================================================================ -// Namespace -// ============================================================================ -namespace remoting { - - // ============================================================================ - // Macros - // ============================================================================ - // TODO: Need application ID for Remoting - const std::string LiteRemoting::APPLICATION_UUID_STRING = "7A1B397B-B576-44C4-943F-000000000001"; - -// ============================================================================ -// Macros -// ============================================================================ -#ifdef DEBUG - #define LOG_PRINT(X) __android_log_print(ANDROID_LOG_VERBOSE, "LiteRemoting", (X)); -#else - #define LOG_PRINT(X) -#endif - -// ============================================================================ -// Constructor/Destructor/getInstance -// ============================================================================ - //--------------------------------------------------------------------------- - // Constructor - // Called by getInstance method (Singleton patter) - //--------------------------------------------------------------------------- - LiteRemoting::LiteRemoting(PrivateConstructKey key) { - - apiResultReady_ = false; - -// public static final String applicationId = "7A1B397B-B576-44C4-943F-000000000001"; -// public static final UUID applicationUUID = UUID.fromString(applicationId); - - // Begin CCF API interaction - pCCFService_ = API::Service::createService(); - if (pCCFService_) - { - pCCFService_->registerApplication(); - - UUID_t applicationId; - StringToUuid(APPLICATION_UUID_STRING.c_str(), &applicationId); - - pCCFContext_ = pCCFService_->createContext(applicationId); - - if (pCCFContext_) - { - doStartup(); - } - } - } - - //--------------------------------------------------------------------------- - // Destructor - //--------------------------------------------------------------------------- - LiteRemoting::~LiteRemoting() { - // Empty containers - sessionMap_.clear(); - targetDeviceProxyMap_.clear(); - - // Turn off observer callbacks - pCCFContext_->setSessionObserver(); - pCCFContext_->setUserObserver(); - - // CCF APP interaction - if (pCCFService_) - { - pCCFService_->deregisterApplication(); - } - } - - //--------------------------------------------------------------------------- - // getInstance (Singleton pattern - //--------------------------------------------------------------------------- - // Get singleton instance of LiteRemoting - boost::shared_ptr LiteRemoting::getInstance() { - LOG_PRINT("LiteRemoting::getInstance()"); - - static boost::shared_ptr instance = boost::make_shared(PrivateConstructKey()); - - return instance; - } - -// ============================================================================ -// Methods -// ============================================================================ - void LiteRemoting::doStartup() { - - // Get the local session id - boost::unique_lock lock(mutex_); - queryMySessionId(); - while (!apiResultReady_) - { - // TODO: maybe do cond_.timed_wait() ??? - cond_.wait(lock); - } - - // Get local session info - lock.lock(); - queryMySessionInfo(); - while (!apiResultReady_) - { - // TODO: maybe do cond_.timed_wait() ??? - cond_.wait(lock); - } - - // Now that we have local session info, set the session observer - pCCFContext_->setSessionObserver(boost::bind(&LiteRemoting::sessionObserver, this, _1)); - - // TODO: set up connection observer - - // TODO: set up device observer - - } - - void LiteRemoting::addSessionToMap(UUID_t sessionId) { - // Add session to the sessionMap - auto iter = sessionMap_.find(sessionId); - if (iter == sessionMap_.end() ) - { - // sessionUUID not found, so add session - sessionMap_[sessionId] = boost::make_shared(pCCFContext_, sessionId); - } - } - - boost::shared_ptr LiteRemoting::getSessionFromMap(UUID_t sessionId) { - boost::shared_ptr pSession; - try { - pSession = sessionMap_.at(sessionId); - } - catch (const std::out_of_range& oor) { - // sessionId not found, so add session - sessionMap_[sessionId] = boost::make_shared(pCCFContext_, sessionId); - } - - return sessionMap_[sessionId]; - } - - void LiteRemoting::addTargetDeviceToMap(UUID_t targetDeviceId) { - // A LiteTargetDeviceProxy with this targetDeviceId was not found, so add - // Add target device to the targetDeviceProxyMap_ - auto iter = targetDeviceProxyMap_.find(targetDeviceId); - if (iter == targetDeviceProxyMap_.end() ) - { - // targetDeviceId not found, so add session - targetDeviceProxyMap_[targetDeviceId] = boost::make_shared(targetDeviceId); - } - - } - - boost::shared_ptr LiteRemoting::getTargetDeviceFromMap(UUID_t targetDeviceId) { - boost::shared_ptr pTargetDevice; - try { - pTargetDevice = targetDeviceProxyMap_.at(targetDeviceId); - } - catch (const std::out_of_range& oor) { - // sessionId not found, so add session - targetDeviceProxyMap_[targetDeviceId] = boost::make_shared(targetDeviceId); - } - - return targetDeviceProxyMap_[targetDeviceId]; - - } - - void LiteRemoting::handleNewTargetDevice(UUID_t targetDeviceId) { - addTargetDeviceToMap(targetDeviceId); - //session.sendDeviceArrival(device); - } - - // TODO: socket parameter is faked with an int for now until I know how the connection info will be conveyed - void LiteRemoting::handleNewConnection(UUID_t sessionId, int socket) { - // Validate socket - if (socket == 0) { - return; - } - - // Get the specified session and a new connection - boost::shared_ptr pSession = getSessionFromMap(sessionId); - boost::shared_ptr pConnection = boost::make_shared(socket); - // TODO: add device info to connection - - // List deviceProxyList = new ArrayList(); - // synchronized (deviceProxySet) { - // for(LiteDeviceProxy device : deviceProxySet) { - // if (device.isLocal()) { - // deviceProxyList.add(device); - // } - // } - // } - // for(LiteDeviceProxy device : deviceProxyList) { - // try { - // connection.sendDeviceArrival(device); - // } catch (IOException e) { - // e.printStackTrace(); - // } - // } - - // Add the new connection to the session - pSession->addConnection(pConnection); - } - - void LiteRemoting::queryMySessionId() { - apiResultReady_ = false; - - pCCFContext_->querySessionId([this](const API::SessionIdResult& sessionIdResult) -> void { - - API::SessionIdResult::ResultType queryResult = sessionIdResult.getResult(); - boost::lock_guard lock(mutex_); - switch (queryResult) { - case API::SessionIdResult::ResultType::Success: - LOG_PRINT("LiteRemoting::queryMySessionId() - queryResult == Success"); - mySessionId_ = sessionIdResult.getSessionId(); - apiResultReady_ = true; - break; - case API::SessionIdResult::ResultType::InternalError: - LOG_PRINT("LiteRemoting::queryMySessionId() - queryResult == InternalError"); - break; - case API::SessionIdResult::ResultType::InvalidLocalSession: - LOG_PRINT("LiteRemoting::queryMySessionId() - queryResult == InvalidLocalSession"); - break; - default: - LOG_PRINT("LiteRemoting::queryMySessionId() - queryResult == unknown"); - break; - } - cond_.notify_one(); - }); - } - - void LiteRemoting::queryMySessionInfo() - { - apiResultReady_ = false; - -// pCCFContext_->querySession(sessionUUID, std::bind(&LiteRemoting::querySessionObserver, this, _1)); - pCCFContext_->querySession(mySessionId_, [this](const API::SessionQueryResult& sessionQueryResult) -> void { - - API::QueryResultType queryResult = sessionQueryResult.getResult(); - boost::lock_guard lock(mutex_); - switch (queryResult) { - case API::QueryResultType::Success: - LOG_PRINT("LiteRemoting::queryMySessionInfo() - queryResult == Success"); - // TODO: verify that CCF application is in the session application set? - - // Add my local session to the sessionMap - addSessionToMap(mySessionId_); - sessionMap_[mySessionId_]->setPublicAvatarId(sessionQueryResult.getPublicAvatarId()); - sessionMap_[mySessionId_]->setPrivateAvatarId(sessionQueryResult.getPrivateAvatarId()); - sessionMap_[mySessionId_]->setPublicAvatarId(sessionQueryResult.getPublicAvatarId()); - sessionMap_[mySessionId_]->setUserId(sessionQueryResult.getUserId()); - sessionMap_[mySessionId_]->setIssuer(sessionQueryResult.getIssuer()); - sessionMap_[mySessionId_]->setName(sessionQueryResult.getName()); - sessionMap_[mySessionId_]->setStatusText(sessionQueryResult.getStatusText()); - sessionMap_[mySessionId_]->setSecurityCode(sessionQueryResult.getSecurityCode()); - sessionMap_[mySessionId_]->setApplicationSet(sessionQueryResult.getApplicationSet()); - - // TODO: add more conditions before inviting to join session? - if (!sessionMap_[mySessionId_]->isConnected() && !sessionMap_[mySessionId_]->isInvited()) { - sessionMap_[mySessionId_]->invite(); - } - - apiResultReady_ = true; - break; - case API::QueryResultType::NotFound: - LOG_PRINT("LiteRemoting::queryMySessionInfo() - queryResult == NotFound"); - break; - default: - LOG_PRINT("LiteRemoting::queryMySessionInfo() - queryResult == unknown"); - break; - } - cond_.notify_one(); - }); - } - -// ============================================================================ -// Observers -// ============================================================================ - void LiteRemoting::sessionObserver(const API::SessionEvent& sessionEvent) - { - - UUID_t sessionId = sessionEvent.getSessionId(); - - // TODO: Need to put in logic for seeing what's changed. Added, dropped, paused? -// int changeMask = sessionEvent.getWhatChanged(); - - // See if we already have the session in the map. If not, create and add - addSessionToMap(sessionId); - } - -} diff --git a/csdk/controller/src/remoting/LiteRemoting.h b/csdk/controller/src/remoting/LiteRemoting.h deleted file mode 100644 index a95ce2e..0000000 --- a/csdk/controller/src/remoting/LiteRemoting.h +++ /dev/null @@ -1,133 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LITEREMOTING_H_ -#define LITEREMOTING_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include -#include -#include "api.h" -using namespace Intel::STC; - -#include "LiteSessionImpl.h" -#include "LiteUUIDLess.hpp" -#include "LiteTargetDevice.hpp" -#include "LiteTargetDeviceProxy.h" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace remoting { - - // ========================================================================== - // Class - // ========================================================================== - class LiteRemoting { - // ============================================================ - // Constants - // ============================================================ - public: - static const std::string APPLICATION_UUID_STRING; - - // ============================================================ - // Type Definition - // ============================================================ - public: - typedef boost::shared_ptr Ptr; - - // ============================================================ - // Singleton - // ============================================================ - public: - static boost::shared_ptr getInstance(); - - // ============================================================ - // Private key for Singleton with shared_ptr - // LiteRemoting ctor must be public for make_ptr. - // But since we are a singleton, we don't want to allow clients - // to call the ctor. Since client can't access - // PrivateConstructKey, it can't call the public ctor. - // ============================================================ - private: - struct PrivateConstructKey {}; - - // ============================================================ - // Constructor and Destructor - // ============================================================ - public: - LiteRemoting(PrivateConstructKey key); - virtual ~LiteRemoting(); - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - - - // ============================================================ - // Private copy constructor for Singleton - // ============================================================ - private: - LiteRemoting(const LiteRemoting&); - - // ============================================================ - // Private Attributes - // ============================================================ - private: - // CCF API Interface - API::Service::SharedPtr pCCFService_; - API::Context::SharedPtr pCCFContext_; - - UUID_t mySessionId_; - std::map , LiteUUIDLess> sessionMap_; - std::map , LiteUUIDLess> targetDeviceProxyMap_; - boost::condition_variable cond_; - boost::mutex mutex_; - bool apiResultReady_; - - // ============================================================ - // Private Methods - // ============================================================ - private: - void doStartup(); - void queryMySessionId(); - void queryMySessionInfo(); - void addSessionToMap(UUID_t sessionId); - boost::shared_ptr getSessionFromMap(UUID_t sessionId); - void addTargetDeviceToMap(UUID_t targetDeviceId); - boost::shared_ptr getTargetDeviceFromMap(UUID_t targetDeviceId); - void handleNewConnection(UUID_t sessionId, int socket); - void handleNewTargetDevice(UUID_t targetDeviceId); - - // ============================================================ - // Observers - // ============================================================ - private: - void sessionObserver(const API::SessionEvent& sessionEvent); - - }; -} -#endif /* LITEREMOTING_H_ */ diff --git a/csdk/controller/src/remoting/LiteSession.hpp b/csdk/controller/src/remoting/LiteSession.hpp deleted file mode 100644 index c92a27c..0000000 --- a/csdk/controller/src/remoting/LiteSession.hpp +++ /dev/null @@ -1,159 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LITESESSION_HPP_ -#define LITESESSION_HPP_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include -#include "api.h" -using namespace Intel::STC; - -#include "LiteConnection.h" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace remoting { - - class LiteSession - { - - public: - LiteSession(API::Context::SharedPtr pCCFContext, UUID_t uuid) : pCCFContext_(pCCFContext), sessionId_(uuid) {}; - virtual ~LiteSession() { connectionSet_.clear(); }; - - virtual void invite() = 0; - virtual void disconnect() = 0; - - public: - bool isInvited() { - return isInvited_; - } - - bool isConnected() { - return isConnected_; - } - - void setPublicAvatarId(const UUID_t& avatarId) { - publicAvatarId_ = avatarId; - } - - void setPrivateAvatarId(const UUID_t& avatarId) { - privateAvatarId_ = avatarId; - } - - void setUserId(const UUID_t& userId) { - userId_ = userId; - } - - void setIssuer(const std::string& issuer) { - issuer_ = issuer; - } - - void setName(const std::string& name) { - sessionName_ = name; - } - - void setStatusText(const std::string& text) { - statusText_ = text; - } - - void setSecurityCode(const std::string& code) { - securityCode_ = code; - } - - void setApplicationSet(const std::set& applicationSet) { - applicationSet_ = applicationSet; - } - - const UUID_t& getPublicAvatarId() { - return publicAvatarId_; - } - - const UUID_t& getPrivateAvatarId() { - return privateAvatarId_; - } - - const UUID_t& getUserId() { - return userId_; - } - - const std::string& getIssuer() { - return issuer_; - } - - const std::string& getName() { - return sessionName_; - } - - const std::string& getStatusText() { - return statusText_; - } - - const std::string& getSecurityCode() { - return securityCode_; - } - const std::set& getApplicationSet() { - return applicationSet_; - } - - void addConnection(boost::shared_ptr connection) { - connectionSet_.insert(connection); - } - - void removeConnection(boost::shared_ptr connection) { - connectionSet_.erase(connection); - } - - protected: - bool onLocalNetwork_; - bool onCloudNetwork_; - bool isController_; - bool isInvited_; - bool isConnected_; - - API::Context::SharedPtr pCCFContext_; - API::InvitationBuilder::SharedPtr pInvitationBuilder_; - - UUID_t sessionId_; - UUID_t publicAvatarId_; - UUID_t privateAvatarId_; - UUID_t userId_; - std::string issuer_; - std::string sessionName_; - std::string statusText_; - std::string securityCode_; - std::set applicationSet_; - - std::set> connectionSet_; - - - }; - -} - - -#endif /* LITESESSION_HPP_ */ diff --git a/csdk/controller/src/remoting/LiteSessionImpl.cpp b/csdk/controller/src/remoting/LiteSessionImpl.cpp deleted file mode 100644 index f99a38d..0000000 --- a/csdk/controller/src/remoting/LiteSessionImpl.cpp +++ /dev/null @@ -1,69 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#include -#include "LiteSessionImpl.h" - -#ifdef DEBUG -#include -#endif - -namespace remoting { - - LiteSessionImpl::LiteSessionImpl(API::Context::SharedPtr pCCFContext, UUID_t uuid) : LiteSession(pCCFContext, uuid) - { -#ifdef DEBUG - __android_log_print(ANDROID_LOG_VERBOSE, tag, "LiteSessionImpl::LiteSessionImpl()"); -#endif - - if (pCCFContext_) - { - // Set callbacks - using namespace std::placeholders; - - pCCFContext_->querySession(sessionId_, std::bind(&LiteSessionImpl::querySessionObserver, this, _1)); - } - } - - LiteSessionImpl::~LiteSessionImpl() - { - applicationSet_.clear(); - } - - - void LiteSessionImpl::invite() { - if (!isConnected_ && !isInvited_) { - if (pCCFContext_) { - pInvitationBuilder_ = pCCFContext_->createInvitationBuilder(); - isInvited_ = true; - } - } - } - - void LiteSessionImpl::disconnect() { - // TODO: implement - } - - void LiteSessionImpl::querySessionObserver(const API::SessionQueryResult& sessionQueryResult) - { - - } -} - diff --git a/csdk/controller/src/remoting/LiteSessionImpl.h b/csdk/controller/src/remoting/LiteSessionImpl.h deleted file mode 100644 index 1a68729..0000000 --- a/csdk/controller/src/remoting/LiteSessionImpl.h +++ /dev/null @@ -1,47 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LITESESSIONIMPL_H_ -#define LITESESSIONIMPL_H_ - -#include "LiteSession.hpp" -#include "api.h" -using namespace Intel::STC; - -namespace remoting { - - class LiteSessionImpl : public LiteSession - { - public: - LiteSessionImpl(API::Context::SharedPtr pCCFContext, UUID_t uuid); - virtual ~LiteSessionImpl(); - - virtual void invite(); - virtual void disconnect(); - - private: - // Listeners - void querySessionObserver(const API::SessionQueryResult& sessionQueryResult); - }; -} - - -#endif /* LITESESSIONIMPL_H_ */ - diff --git a/csdk/controller/src/remoting/LiteTargetDevice.hpp b/csdk/controller/src/remoting/LiteTargetDevice.hpp deleted file mode 100644 index 284ce55..0000000 --- a/csdk/controller/src/remoting/LiteTargetDevice.hpp +++ /dev/null @@ -1,73 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LITETARGETDEVICE_HPP_ -#define LITETARGETDEVICE_HPP_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include - - -// ============================================================================ -// Namespace -// ============================================================================ -namespace remoting { - - // ========================================================================== - // Class - // ========================================================================== - class LiteTargetDevice - { - public: - LiteTargetDevice(UUID_t uuid) : deviceId_(uuid), name_("Unknown target device"), isLocal_(false) {}; - virtual ~LiteTargetDevice() {}; - - const UUID_t& getDeviceUUID() { - return deviceId_; - } - - const std::string& getName() { - return name_; - } - - bool isLocal() { - return isLocal_; - } - - void setName(const std::string& name) { - name_ = name; - } - - void setLocal(bool isLocal) { - isLocal_ = isLocal; - } - - protected: - UUID_t deviceId_; - std::string name_; - bool isLocal_; - }; - -} - -#endif /* LITETARGETDEVICE_HPP_ */ diff --git a/csdk/controller/src/remoting/LiteTargetDeviceProxy.cpp b/csdk/controller/src/remoting/LiteTargetDeviceProxy.cpp deleted file mode 100644 index c601b7b..0000000 --- a/csdk/controller/src/remoting/LiteTargetDeviceProxy.cpp +++ /dev/null @@ -1,46 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -// ============================================================================ -// Includes -// ============================================================================ -#include "LiteTargetDeviceProxy.h" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace remoting { - - // ============================================================================ - // Constructor/Destructor - // ============================================================================ - //--------------------------------------------------------------------------- - // Constructor - //--------------------------------------------------------------------------- - LiteTargetDeviceProxy::LiteTargetDeviceProxy(UUID_t uuid) : LiteTargetDevice(uuid) - { - } - - LiteTargetDeviceProxy::~LiteTargetDeviceProxy() - { - } - - -} diff --git a/csdk/controller/src/remoting/LiteTargetDeviceProxy.h b/csdk/controller/src/remoting/LiteTargetDeviceProxy.h deleted file mode 100644 index 968a87b..0000000 --- a/csdk/controller/src/remoting/LiteTargetDeviceProxy.h +++ /dev/null @@ -1,53 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LITETARGETDEVICEPROXY_H_ -#define LITETARGETDEVICEPROXY_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include - -#include "LiteTargetDevice.hpp" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace remoting { - - // ========================================================================== - // Class - // ========================================================================== - -class LiteTargetDeviceProxy: public LiteTargetDevice -{ -public: - // Methods - LiteTargetDeviceProxy(UUID_t uuid); - virtual ~LiteTargetDeviceProxy(); - - -private: -}; - -} - -#endif /* LITETARGETDEVICEPROXY_H_ */ diff --git a/csdk/controller/src/remoting/LiteUUIDLess.hpp b/csdk/controller/src/remoting/LiteUUIDLess.hpp deleted file mode 100644 index 5363b49..0000000 --- a/csdk/controller/src/remoting/LiteUUIDLess.hpp +++ /dev/null @@ -1,40 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef LITEUUIDLESS_HPP_ -#define LITEUUIDLESS_HPP_ - -#include - -namespace remoting { - - class LiteUUIDLess - { - public: - bool operator()(const UUID_t &uuid1, const UUID_t &uuid2) const - { - return memcmp(&uuid1, &uuid2, sizeof(uuid1))<0; - } - }; - -} - - -#endif /* LITEUUIDLESS_HPP_ */ diff --git a/csdk/libcoap-4.1.1/config.log b/csdk/libcoap-4.1.1/config.log deleted file mode 100644 index 71dad3f..0000000 --- a/csdk/libcoap-4.1.1/config.log +++ /dev/null @@ -1,1944 +0,0 @@ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by libcoap configure 4.1.1, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ ./configure --host=avr CC=avr-gcc C_EXTRA_FLAGS=-mmcu=atmega2560 -DATMEGA2560 - -## --------- ## -## Platform. ## -## --------- ## - -hostname = precious -uname -m = x86_64 -uname -r = 3.8.0-37-generic -uname -s = Linux -uname -v = #53~precise1-Ubuntu SMP Wed Feb 19 21:37:54 UTC 2014 - -/usr/bin/uname -p = unknown -/bin/uname -X = unknown - -/bin/arch = unknown -/usr/bin/arch -k = unknown -/usr/convex/getsysinfo = unknown -/usr/bin/hostinfo = unknown -/bin/machine = unknown -/usr/bin/oslevel = unknown -/bin/universe = unknown - -PATH: /tmp/automake/home/sachin/jdk1.7.0_51/bin -PATH: /usr/lib/lightdm/lightdm -PATH: /usr/local/sbin -PATH: /usr/local/bin -PATH: /usr/sbin -PATH: /usr/bin -PATH: /sbin -PATH: /bin -PATH: /usr/games -PATH: /home/sachin/android/adt-bundle-linux-x86_64-20131030/sdk/tools -PATH: /home/sachin/android/adt-bundle-linux-x86_64-20131030/sdk/platform-tools -PATH: /var/tmp/android-14/bin - - -## ----------- ## -## Core tests. ## -## ----------- ## - -configure:2175: checking whether make sets $(MAKE) -configure:2197: result: yes -configure:2214: checking for avr-gcc -configure:2241: result: avr-gcc -configure:2510: checking for C compiler version -configure:2519: avr-gcc --version >&5 -avr-gcc (GCC) 4.5.3 -Copyright (C) 2010 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -configure:2530: $? = 0 -configure:2519: avr-gcc -v >&5 -Using built-in specs. -COLLECT_GCC=avr-gcc -COLLECT_LTO_WRAPPER=/usr/lib/gcc/avr/4.5.3/lto-wrapper -Target: avr -Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr/lib --infodir=/usr/share/info --mandir=/usr/share/man --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --enable-shared --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-libssp --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=avr -Thread model: single -gcc version 4.5.3 (GCC) -configure:2530: $? = 0 -configure:2519: avr-gcc -V >&5 -avr-gcc: '-V' option must have argument -configure:2530: $? = 1 -configure:2519: avr-gcc -qversion >&5 -avr-gcc: unrecognized option '-qversion' -avr-gcc: no input files -configure:2530: $? = 1 -configure:2550: checking whether the C compiler works -configure:2572: avr-gcc conftest.c >&5 -configure:2576: $? = 0 -configure:2624: result: yes -configure:2627: checking for C compiler default output file name -configure:2629: result: a.out -configure:2635: checking for suffix of executables -configure:2642: avr-gcc -o conftest conftest.c >&5 -configure:2646: $? = 0 -configure:2668: result: -configure:2690: checking whether we are cross compiling -configure:2698: avr-gcc -o conftest conftest.c >&5 -conftest.c: In function 'main': -conftest.c:13:11: warning: initialization makes pointer from integer without a cast -/tmp/ccBLEQG0.o: In function `main': -conftest.c:(.text+0x16): undefined reference to `fopen' -/usr/lib/gcc/avr/4.5.3/../../../avr/lib/libc.a(malloc.o): In function `malloc': -/build/buildd/avr-libc-1.7.1/avr/lib/avr2/../../../libc/stdlib/malloc.c:80: undefined reference to `__heap_end' -collect2: ld returned 1 exit status -configure:2702: $? = 1 -configure:2709: ./conftest -./configure: line 2711: ./conftest: No such file or directory -configure:2713: $? = 127 -configure:2728: result: yes -configure:2733: checking for suffix of object files -configure:2755: avr-gcc -c conftest.c >&5 -configure:2759: $? = 0 -configure:2780: result: o -configure:2784: checking whether we are using the GNU C compiler -configure:2803: avr-gcc -c conftest.c >&5 -configure:2803: $? = 0 -configure:2812: result: yes -configure:2821: checking whether avr-gcc accepts -g -configure:2841: avr-gcc -c -g conftest.c >&5 -configure:2841: $? = 0 -configure:2882: result: yes -configure:2899: checking for avr-gcc option to accept ISO C89 -configure:2962: avr-gcc -c -g -O2 conftest.c >&5 -configure:2962: $? = 0 -configure:2975: result: none needed -configure:2998: checking for avr-ranlib -configure:3014: found /usr/bin/avr-ranlib -configure:3025: result: avr-ranlib -configure:3089: checking for doxygen -configure:3107: found /usr/bin/doxygen -configure:3120: result: /usr/bin/doxygen -configure:3130: checking for etags -configure:3161: result: /bin/false -configure:3176: checking how to run the C preprocessor -configure:3207: avr-gcc -E conftest.c -configure:3207: $? = 0 -configure:3221: avr-gcc -E conftest.c -conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory -compilation terminated. -configure:3221: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| /* end confdefs.h. */ -| #include -configure:3246: result: avr-gcc -E -configure:3266: avr-gcc -E conftest.c -configure:3266: $? = 0 -configure:3280: avr-gcc -E conftest.c -conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory -compilation terminated. -configure:3280: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| /* end confdefs.h. */ -| #include -configure:3309: checking for grep that handles long lines and -e -configure:3367: result: /bin/grep -configure:3372: checking for egrep -configure:3434: result: /bin/grep -E -configure:3439: checking for ANSI C header files -configure:3459: avr-gcc -c -g -O2 conftest.c >&5 -configure:3459: $? = 0 -configure:3543: result: yes -configure:3556: checking for sys/types.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -conftest.c:44:23: fatal error: sys/types.h: No such file or directory -compilation terminated. -configure:3556: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| -| #include -configure:3556: result: no -configure:3556: checking for sys/stat.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -conftest.c:44:22: fatal error: sys/stat.h: No such file or directory -compilation terminated. -configure:3556: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| -| #include -configure:3556: result: no -configure:3556: checking for stdlib.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -configure:3556: $? = 0 -configure:3556: result: yes -configure:3556: checking for string.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -configure:3556: $? = 0 -configure:3556: result: yes -configure:3556: checking for memory.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -conftest.c:46:20: fatal error: memory.h: No such file or directory -compilation terminated. -configure:3556: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| -| #include -configure:3556: result: no -configure:3556: checking for strings.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -conftest.c:46:21: fatal error: strings.h: No such file or directory -compilation terminated. -configure:3556: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| -| #include -configure:3556: result: no -configure:3556: checking for inttypes.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -configure:3556: $? = 0 -configure:3556: result: yes -configure:3556: checking for stdint.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -configure:3556: $? = 0 -configure:3556: result: yes -configure:3556: checking for unistd.h -configure:3556: avr-gcc -c -g -O2 conftest.c >&5 -conftest.c:48:20: fatal error: unistd.h: No such file or directory -compilation terminated. -configure:3556: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| -| #include -configure:3556: result: no -configure:3568: checking whether byte ordering is bigendian -configure:3583: avr-gcc -c -g -O2 conftest.c >&5 -conftest.c:15:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'a' -configure:3583: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| #ifndef __APPLE_CC__ -| not a universal capable compiler -| #endif -| typedef int dummy; -| -configure:3628: avr-gcc -c -g -O2 conftest.c >&5 -conftest.c:14:23: fatal error: sys/types.h: No such file or directory -compilation terminated. -configure:3628: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| #include -| #include -| -| int -| main () -| { -| #if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) -| bogus endian macros -| #endif -| -| ; -| return 0; -| } -configure:3672: avr-gcc -c -g -O2 conftest.c >&5 -conftest.c: In function 'main': -conftest.c:20:8: error: 'bogus' undeclared (first use in this function) -conftest.c:20:8: note: each undeclared identifier is reported only once for each function it appears in -conftest.c:20:14: error: expected ';' before 'endian' -configure:3672: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| #include -| -| int -| main () -| { -| #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) -| bogus endian macros -| #endif -| -| ; -| return 0; -| } -configure:3728: avr-gcc -c -g -O2 conftest.c >&5 -configure:3728: $? = 0 -configure:3774: result: no -configure:3794: checking for coap_new_pdu in -lcoap -configure:3819: avr-gcc -o conftest -g -O2 conftest.c -lcoap >&5 -/usr/lib/gcc/avr/4.5.3/../../../avr/bin/ld: cannot find -lcoap -collect2: ld returned 1 exit status -configure:3819: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| -| /* Override any GCC internal prototype to avoid an error. -| Use char because int might match the return type of a GCC -| builtin and then its argument prototype would still apply. */ -| #ifdef __cplusplus -| extern "C" -| #endif -| char coap_new_pdu (); -| int -| main () -| { -| return coap_new_pdu (); -| ; -| return 0; -| } -configure:3828: result: no -configure:3840: checking for library containing gethostbyname -configure:3871: avr-gcc -o conftest -g -O2 conftest.c >&5 -/tmp/cc5dRuvo.o: In function `main': -/home/sachin/gitrepos/peg_ccfl-core/libcoap-4.1.1/conftest.c:25: undefined reference to `gethostbyname' -collect2: ld returned 1 exit status -configure:3871: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| -| /* Override any GCC internal prototype to avoid an error. -| Use char because int might match the return type of a GCC -| builtin and then its argument prototype would still apply. */ -| #ifdef __cplusplus -| extern "C" -| #endif -| char gethostbyname (); -| int -| main () -| { -| return gethostbyname (); -| ; -| return 0; -| } -configure:3871: avr-gcc -o conftest -g -O2 conftest.c -lnsl >&5 -/usr/lib/gcc/avr/4.5.3/../../../avr/bin/ld: cannot find -lnsl -collect2: ld returned 1 exit status -configure:3871: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| -| /* Override any GCC internal prototype to avoid an error. -| Use char because int might match the return type of a GCC -| builtin and then its argument prototype would still apply. */ -| #ifdef __cplusplus -| extern "C" -| #endif -| char gethostbyname (); -| int -| main () -| { -| return gethostbyname (); -| ; -| return 0; -| } -configure:3888: result: no -configure:3896: checking for library containing socket -configure:3927: avr-gcc -o conftest -g -O2 conftest.c >&5 -/tmp/cczRzsqr.o: In function `main': -/home/sachin/gitrepos/peg_ccfl-core/libcoap-4.1.1/conftest.c:25: undefined reference to `socket' -collect2: ld returned 1 exit status -configure:3927: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| -| /* Override any GCC internal prototype to avoid an error. -| Use char because int might match the return type of a GCC -| builtin and then its argument prototype would still apply. */ -| #ifdef __cplusplus -| extern "C" -| #endif -| char socket (); -| int -| main () -| { -| return socket (); -| ; -| return 0; -| } -configure:3927: avr-gcc -o conftest -g -O2 conftest.c -lsocket >&5 -/usr/lib/gcc/avr/4.5.3/../../../avr/bin/ld: cannot find -lsocket -collect2: ld returned 1 exit status -configure:3927: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| /* end confdefs.h. */ -| -| /* Override any GCC internal prototype to avoid an error. -| Use char because int might match the return type of a GCC -| builtin and then its argument prototype would still apply. */ -| #ifdef __cplusplus -| extern "C" -| #endif -| char socket (); -| int -| main () -| { -| return socket (); -| ; -| return 0; -| } -configure:3944: result: no -configure:4011: checking assert.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -configure:4011: $? = 0 -configure:4011: result: yes -configure:4011: checking assert.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -configure:4011: $? = 0 -configure:4011: result: yes -configure:4011: checking for assert.h -configure:4011: result: yes -configure:4011: checking arpa/inet.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:48:23: fatal error: arpa/inet.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| #include -configure:4011: result: no -configure:4011: checking arpa/inet.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -conftest.c:15:23: fatal error: arpa/inet.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| /* end confdefs.h. */ -| #include -configure:4011: result: no -configure:4011: checking for arpa/inet.h -configure:4011: result: no -configure:4011: checking limits.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -configure:4011: $? = 0 -configure:4011: result: yes -configure:4011: checking limits.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -configure:4011: $? = 0 -configure:4011: result: yes -configure:4011: checking for limits.h -configure:4011: result: yes -configure:4011: checking netdb.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:49:19: fatal error: netdb.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| #include -configure:4011: result: no -configure:4011: checking netdb.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -conftest.c:16:19: fatal error: netdb.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| /* end confdefs.h. */ -| #include -configure:4011: result: no -configure:4011: checking for netdb.h -configure:4011: result: no -configure:4011: checking netinet/in.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:49:24: fatal error: netinet/in.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| #include -configure:4011: result: no -configure:4011: checking netinet/in.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -conftest.c:16:24: fatal error: netinet/in.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| /* end confdefs.h. */ -| #include -configure:4011: result: no -configure:4011: checking for netinet/in.h -configure:4011: result: no -configure:4011: checking for stdlib.h -configure:4011: result: yes -configure:4011: checking for string.h -configure:4011: result: yes -configure:4011: checking for strings.h -configure:4011: result: no -configure:4011: checking sys/socket.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:51:24: fatal error: sys/socket.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| #include -configure:4011: result: no -configure:4011: checking sys/socket.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -conftest.c:18:24: fatal error: sys/socket.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -configure:4011: result: no -configure:4011: checking for sys/socket.h -configure:4011: result: no -configure:4011: checking sys/time.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:51:22: fatal error: sys/time.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| #include -configure:4011: result: no -configure:4011: checking sys/time.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -conftest.c:18:22: fatal error: sys/time.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -configure:4011: result: no -configure:4011: checking for sys/time.h -configure:4011: result: no -configure:4011: checking time.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:51:18: fatal error: time.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| #include -configure:4011: result: no -configure:4011: checking time.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -conftest.c:18:18: fatal error: time.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -configure:4011: result: no -configure:4011: checking for time.h -configure:4011: result: no -configure:4011: checking for unistd.h -configure:4011: result: no -configure:4011: checking sys/unistd.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:51:24: fatal error: sys/unistd.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| #include -configure:4011: result: no -configure:4011: checking sys/unistd.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -conftest.c:18:24: fatal error: sys/unistd.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -configure:4011: result: no -configure:4011: checking for sys/unistd.h -configure:4011: result: no -configure:4011: checking syslog.h usability -configure:4011: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:51:20: fatal error: syslog.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| #include -configure:4011: result: no -configure:4011: checking syslog.h presence -configure:4011: avr-gcc -E -DWITH_POSIX conftest.c -conftest.c:18:20: fatal error: syslog.h: No such file or directory -compilation terminated. -configure:4011: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -configure:4011: result: no -configure:4011: checking for syslog.h -configure:4011: result: no -configure:4023: checking for size_t -configure:4023: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -configure:4023: $? = 0 -configure:4023: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c: In function 'main': -conftest.c:54:21: error: expected expression before ')' token -configure:4023: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| int -| main () -| { -| if (sizeof ((size_t))) -| return 0; -| ; -| return 0; -| } -configure:4023: result: yes -configure:4034: checking for ssize_t -configure:4034: avr-gcc -c -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c: In function 'main': -conftest.c:54:13: error: 'ssize_t' undeclared (first use in this function) -conftest.c:54:13: note: each undeclared identifier is reported only once for each function it appears in -configure:4034: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| /* end confdefs.h. */ -| #include -| #ifdef HAVE_SYS_TYPES_H -| # include -| #endif -| #ifdef HAVE_SYS_STAT_H -| # include -| #endif -| #ifdef STDC_HEADERS -| # include -| # include -| #else -| # ifdef HAVE_STDLIB_H -| # include -| # endif -| #endif -| #ifdef HAVE_STRING_H -| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -| # include -| # endif -| # include -| #endif -| #ifdef HAVE_STRINGS_H -| # include -| #endif -| #ifdef HAVE_INTTYPES_H -| # include -| #endif -| #ifdef HAVE_STDINT_H -| # include -| #endif -| #ifdef HAVE_UNISTD_H -| # include -| #endif -| int -| main () -| { -| if (sizeof (ssize_t)) -| return 0; -| ; -| return 0; -| } -configure:4034: result: no -configure:4049: checking for stdlib.h -configure:4049: result: yes -configure:4059: checking for GNU libc compatible malloc -configure:4093: result: no -configure:4117: checking for memset -configure:4117: avr-gcc -o conftest -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:45:6: warning: conflicting types for built-in function 'memset' -configure:4117: $? = 0 -configure:4117: result: yes -configure:4117: checking for select -configure:4117: avr-gcc -o conftest -g -O2 -DWITH_POSIX conftest.c >&5 -/tmp/ccgkOSk6.o: In function `main': -/home/sachin/gitrepos/peg_ccfl-core/libcoap-4.1.1/conftest.c:57: undefined reference to `select' -collect2: ld returned 1 exit status -configure:4117: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define ssize_t int -| #define HAVE_STDLIB_H 1 -| #define HAVE_MALLOC 0 -| #define malloc rpl_malloc -| #define HAVE_MEMSET 1 -| /* end confdefs.h. */ -| /* Define select to an innocuous variant, in case declares select. -| For example, HP-UX 11i declares gettimeofday. */ -| #define select innocuous_select -| -| /* System header to define __stub macros and hopefully few prototypes, -| which can conflict with char select (); below. -| Prefer to if __STDC__ is defined, since -| exists even on freestanding compilers. */ -| -| #ifdef __STDC__ -| # include -| #else -| # include -| #endif -| -| #undef select -| -| /* Override any GCC internal prototype to avoid an error. -| Use char because int might match the return type of a GCC -| builtin and then its argument prototype would still apply. */ -| #ifdef __cplusplus -| extern "C" -| #endif -| char select (); -| /* The GNU C library defines this for functions which it implements -| to always fail with ENOSYS. Some functions are actually named -| something starting with __ and the normal name is an alias. */ -| #if defined __stub_select || defined __stub___select -| choke me -| #endif -| -| int -| main () -| { -| return select (); -| ; -| return 0; -| } -configure:4117: result: no -configure:4117: checking for socket -configure:4117: avr-gcc -o conftest -g -O2 -DWITH_POSIX conftest.c >&5 -/tmp/ccZCmbb9.o: In function `main': -/home/sachin/gitrepos/peg_ccfl-core/libcoap-4.1.1/conftest.c:57: undefined reference to `socket' -collect2: ld returned 1 exit status -configure:4117: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define ssize_t int -| #define HAVE_STDLIB_H 1 -| #define HAVE_MALLOC 0 -| #define malloc rpl_malloc -| #define HAVE_MEMSET 1 -| /* end confdefs.h. */ -| /* Define socket to an innocuous variant, in case declares socket. -| For example, HP-UX 11i declares gettimeofday. */ -| #define socket innocuous_socket -| -| /* System header to define __stub macros and hopefully few prototypes, -| which can conflict with char socket (); below. -| Prefer to if __STDC__ is defined, since -| exists even on freestanding compilers. */ -| -| #ifdef __STDC__ -| # include -| #else -| # include -| #endif -| -| #undef socket -| -| /* Override any GCC internal prototype to avoid an error. -| Use char because int might match the return type of a GCC -| builtin and then its argument prototype would still apply. */ -| #ifdef __cplusplus -| extern "C" -| #endif -| char socket (); -| /* The GNU C library defines this for functions which it implements -| to always fail with ENOSYS. Some functions are actually named -| something starting with __ and the normal name is an alias. */ -| #if defined __stub_socket || defined __stub___socket -| choke me -| #endif -| -| int -| main () -| { -| return socket (); -| ; -| return 0; -| } -configure:4117: result: no -configure:4117: checking for strcasecmp -configure:4117: avr-gcc -o conftest -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:46:6: warning: conflicting types for built-in function 'strcasecmp' -configure:4117: $? = 0 -configure:4117: result: yes -configure:4117: checking for strrchr -configure:4117: avr-gcc -o conftest -g -O2 -DWITH_POSIX conftest.c >&5 -conftest.c:47:6: warning: conflicting types for built-in function 'strrchr' -configure:4117: $? = 0 -configure:4117: result: yes -configure:4117: checking for getaddrinfo -configure:4117: avr-gcc -o conftest -g -O2 -DWITH_POSIX conftest.c >&5 -/tmp/cca8ULN8.o: In function `main': -/home/sachin/gitrepos/peg_ccfl-core/libcoap-4.1.1/conftest.c:59: undefined reference to `getaddrinfo' -collect2: ld returned 1 exit status -configure:4117: $? = 1 -configure: failed program was: -| /* confdefs.h */ -| #define PACKAGE_NAME "libcoap" -| #define PACKAGE_TARNAME "libcoap" -| #define PACKAGE_VERSION "4.1.1" -| #define PACKAGE_STRING "libcoap 4.1.1" -| #define PACKAGE_BUGREPORT "" -| #define PACKAGE_URL "" -| #define STDC_HEADERS 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define HAVE_INTTYPES_H 1 -| #define HAVE_STDINT_H 1 -| #define HAVE_ASSERT_H 1 -| #define HAVE_LIMITS_H 1 -| #define HAVE_STDLIB_H 1 -| #define HAVE_STRING_H 1 -| #define ssize_t int -| #define HAVE_STDLIB_H 1 -| #define HAVE_MALLOC 0 -| #define malloc rpl_malloc -| #define HAVE_MEMSET 1 -| #define HAVE_STRCASECMP 1 -| #define HAVE_STRRCHR 1 -| /* end confdefs.h. */ -| /* Define getaddrinfo to an innocuous variant, in case declares getaddrinfo. -| For example, HP-UX 11i declares gettimeofday. */ -| #define getaddrinfo innocuous_getaddrinfo -| -| /* System header to define __stub macros and hopefully few prototypes, -| which can conflict with char getaddrinfo (); below. -| Prefer to if __STDC__ is defined, since -| exists even on freestanding compilers. */ -| -| #ifdef __STDC__ -| # include -| #else -| # include -| #endif -| -| #undef getaddrinfo -| -| /* Override any GCC internal prototype to avoid an error. -| Use char because int might match the return type of a GCC -| builtin and then its argument prototype would still apply. */ -| #ifdef __cplusplus -| extern "C" -| #endif -| char getaddrinfo (); -| /* The GNU C library defines this for functions which it implements -| to always fail with ENOSYS. Some functions are actually named -| something starting with __ and the normal name is an alias. */ -| #if defined __stub_getaddrinfo || defined __stub___getaddrinfo -| choke me -| #endif -| -| int -| main () -| { -| return getaddrinfo (); -| ; -| return 0; -| } -configure:4117: result: no -configure:4117: checking for strnlen -configure:4117: avr-gcc -o conftest -g -O2 -DWITH_POSIX conftest.c >&5 -configure:4117: $? = 0 -configure:4117: result: yes -configure:4250: creating ./config.status - -## ---------------------- ## -## Running config.status. ## -## ---------------------- ## - -This file was extended by libcoap config.status 4.1.1, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = - CONFIG_HEADERS = - CONFIG_LINKS = - CONFIG_COMMANDS = - $ ./config.status - -on precious - -config.status:814: creating Makefile -config.status:814: creating doc/Makefile -config.status:814: creating doc/Doxyfile -config.status:800: error: cannot find input file: `examples/Makefile.in' - -## ---------------- ## -## Cache variables. ## -## ---------------- ## - -ac_cv_c_bigendian=no -ac_cv_c_compiler_gnu=yes -ac_cv_env_CC_set=set -ac_cv_env_CC_value=avr-gcc -ac_cv_env_CFLAGS_set= -ac_cv_env_CFLAGS_value= -ac_cv_env_CPPFLAGS_set= -ac_cv_env_CPPFLAGS_value= -ac_cv_env_CPP_set= -ac_cv_env_CPP_value= -ac_cv_env_LDFLAGS_set= -ac_cv_env_LDFLAGS_value= -ac_cv_env_LIBS_set= -ac_cv_env_LIBS_value= -ac_cv_env_build_alias_set= -ac_cv_env_build_alias_value= -ac_cv_env_host_alias_set=set -ac_cv_env_host_alias_value=avr -ac_cv_env_target_alias_set= -ac_cv_env_target_alias_value= -ac_cv_func_getaddrinfo=no -ac_cv_func_malloc_0_nonnull=no -ac_cv_func_memset=yes -ac_cv_func_select=no -ac_cv_func_socket=no -ac_cv_func_strcasecmp=yes -ac_cv_func_strnlen=yes -ac_cv_func_strrchr=yes -ac_cv_header_arpa_inet_h=no -ac_cv_header_assert_h=yes -ac_cv_header_inttypes_h=yes -ac_cv_header_limits_h=yes -ac_cv_header_memory_h=no -ac_cv_header_netdb_h=no -ac_cv_header_netinet_in_h=no -ac_cv_header_stdc=yes -ac_cv_header_stdint_h=yes -ac_cv_header_stdlib_h=yes -ac_cv_header_string_h=yes -ac_cv_header_strings_h=no -ac_cv_header_sys_socket_h=no -ac_cv_header_sys_stat_h=no -ac_cv_header_sys_time_h=no -ac_cv_header_sys_types_h=no -ac_cv_header_sys_unistd_h=no -ac_cv_header_syslog_h=no -ac_cv_header_time_h=no -ac_cv_header_unistd_h=no -ac_cv_lib_coap_coap_new_pdu=no -ac_cv_objext=o -ac_cv_path_DOXYGEN=/usr/bin/doxygen -ac_cv_path_EGREP='/bin/grep -E' -ac_cv_path_ETAGS=/bin/false -ac_cv_path_GREP=/bin/grep -ac_cv_prog_CC=avr-gcc -ac_cv_prog_CPP='avr-gcc -E' -ac_cv_prog_RANLIB=avr-ranlib -ac_cv_prog_cc_c89= -ac_cv_prog_cc_g=yes -ac_cv_prog_make_make_set=yes -ac_cv_search_gethostbyname=no -ac_cv_search_socket=no -ac_cv_type_size_t=yes -ac_cv_type_ssize_t=no - -## ----------------- ## -## Output variables. ## -## ----------------- ## - -BUILD_SO='' -CC='avr-gcc' -CFLAGS='-g -O2' -CPP='avr-gcc -E' -CPPFLAGS=' -DWITH_POSIX' -DEFS='-DHAVE_CONFIG_H' -DOXYGEN='/usr/bin/doxygen' -ECHO_C='' -ECHO_N='-n' -ECHO_T='' -EGREP='/bin/grep -E' -ETAGS='/bin/false' -EXEEXT='' -GREP='/bin/grep' -LDFLAGS='' -LIBOBJS=' ${LIBOBJDIR}malloc$U.o' -LIBS='' -LTLIBOBJS=' ${LIBOBJDIR}malloc$U.lo' -OBJEXT='o' -PACKAGE_BUGREPORT='' -PACKAGE_NAME='libcoap' -PACKAGE_STRING='libcoap 4.1.1' -PACKAGE_TARNAME='libcoap' -PACKAGE_URL='' -PACKAGE_VERSION='4.1.1' -PATH_SEPARATOR=':' -RANLIB='avr-ranlib' -SET_MAKE='' -SHELL='/bin/bash' -TESTS='' -ac_ct_CC='' -bindir='${exec_prefix}/bin' -build_alias='' -datadir='${datarootdir}' -datarootdir='${prefix}/share' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -dvidir='${docdir}' -exec_prefix='${prefix}' -host_alias='avr' -htmldir='${docdir}' -includedir='${prefix}/include' -infodir='${datarootdir}/info' -libdir='${exec_prefix}/lib' -libexecdir='${exec_prefix}/libexec' -localedir='${datarootdir}/locale' -localstatedir='${prefix}/var' -mandir='${datarootdir}/man' -oldincludedir='/usr/include' -pdfdir='${docdir}' -prefix='/usr/local' -program_transform_name='s,x,x,' -psdir='${docdir}' -sbindir='${exec_prefix}/sbin' -sharedstatedir='${prefix}/com' -sysconfdir='${prefix}/etc' -target_alias='' - -## ----------- ## -## confdefs.h. ## -## ----------- ## - -/* confdefs.h */ -#define PACKAGE_NAME "libcoap" -#define PACKAGE_TARNAME "libcoap" -#define PACKAGE_VERSION "4.1.1" -#define PACKAGE_STRING "libcoap 4.1.1" -#define PACKAGE_BUGREPORT "" -#define PACKAGE_URL "" -#define STDC_HEADERS 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STRING_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_ASSERT_H 1 -#define HAVE_LIMITS_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STRING_H 1 -#define ssize_t int -#define HAVE_STDLIB_H 1 -#define HAVE_MALLOC 0 -#define malloc rpl_malloc -#define HAVE_MEMSET 1 -#define HAVE_STRCASECMP 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRNLEN 1 - -configure: exit 1 diff --git a/csdk/libcoap-4.1.1/config.status b/csdk/libcoap-4.1.1/config.status deleted file mode 100755 index 4cd9ee6..0000000 --- a/csdk/libcoap-4.1.1/config.status +++ /dev/null @@ -1,1004 +0,0 @@ -#! /bin/bash -# Generated by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=${CONFIG_SHELL-/bin/bash} -export SHELL -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by libcoap $as_me 4.1.1, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -# Files that config.status was made for. -config_files=" Makefile doc/Makefile doc/Doxyfile examples/Makefile tests/Makefile" -config_headers=" config.h" - -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to the package provider." - -ac_cs_config="'--host=avr' 'CC=avr-gcc' 'C_EXTRA_FLAGS=-mmcu=atmega2560 -DATMEGA2560' 'host_alias=avr'" -ac_cs_version="\ -libcoap config.status 4.1.1 -configured by ./configure, generated by GNU Autoconf 2.69, - with options \"$ac_cs_config\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='/home/sachin/gitrepos/peg_ccfl-core/libcoap-4.1.1' -srcdir='.' -test -n "$AWK" || AWK=awk -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -if $ac_cs_recheck; then - set X /bin/bash './configure' '--host=avr' 'CC=avr-gcc' 'C_EXTRA_FLAGS=-mmcu=atmega2560 -DATMEGA2560' 'host_alias=avr' $ac_configure_extra_args --no-create --no-recursion - shift - $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 - CONFIG_SHELL='/bin/bash' - export CONFIG_SHELL - exec "$@" -fi - -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; - "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; - "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && -S["LTLIBOBJS"]=" ${LIBOBJDIR}malloc$U.lo" -S["BUILD_SO"]="" -S["TESTS"]="" -S["LIBOBJS"]=" ${LIBOBJDIR}malloc$U.o" -S["EGREP"]="/bin/grep -E" -S["GREP"]="/bin/grep" -S["CPP"]="avr-gcc -E" -S["ETAGS"]="/bin/false" -S["DOXYGEN"]="/usr/bin/doxygen" -S["RANLIB"]="avr-ranlib" -S["OBJEXT"]="o" -S["EXEEXT"]="" -S["ac_ct_CC"]="" -S["CPPFLAGS"]=" -DWITH_POSIX" -S["LDFLAGS"]="" -S["CFLAGS"]="-g -O2" -S["CC"]="avr-gcc" -S["SET_MAKE"]="" -S["target_alias"]="" -S["host_alias"]="avr" -S["build_alias"]="" -S["LIBS"]="" -S["ECHO_T"]="" -S["ECHO_N"]="-n" -S["ECHO_C"]="" -S["DEFS"]="-DHAVE_CONFIG_H" -S["mandir"]="${datarootdir}/man" -S["localedir"]="${datarootdir}/locale" -S["libdir"]="${exec_prefix}/lib" -S["psdir"]="${docdir}" -S["pdfdir"]="${docdir}" -S["dvidir"]="${docdir}" -S["htmldir"]="${docdir}" -S["infodir"]="${datarootdir}/info" -S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" -S["oldincludedir"]="/usr/include" -S["includedir"]="${prefix}/include" -S["localstatedir"]="${prefix}/var" -S["sharedstatedir"]="${prefix}/com" -S["sysconfdir"]="${prefix}/etc" -S["datadir"]="${datarootdir}" -S["datarootdir"]="${prefix}/share" -S["libexecdir"]="${exec_prefix}/libexec" -S["sbindir"]="${exec_prefix}/sbin" -S["bindir"]="${exec_prefix}/bin" -S["program_transform_name"]="s,x,x," -S["prefix"]="/usr/local" -S["exec_prefix"]="${prefix}" -S["PACKAGE_URL"]="" -S["PACKAGE_BUGREPORT"]="" -S["PACKAGE_STRING"]="libcoap 4.1.1" -S["PACKAGE_VERSION"]="4.1.1" -S["PACKAGE_TARNAME"]="libcoap" -S["PACKAGE_NAME"]="libcoap" -S["PATH_SEPARATOR"]=":" -S["SHELL"]="/bin/bash" -_ACAWK -cat >>"$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -D["PACKAGE_NAME"]=" \"libcoap\"" -D["PACKAGE_TARNAME"]=" \"libcoap\"" -D["PACKAGE_VERSION"]=" \"4.1.1\"" -D["PACKAGE_STRING"]=" \"libcoap 4.1.1\"" -D["PACKAGE_BUGREPORT"]=" \"\"" -D["PACKAGE_URL"]=" \"\"" -D["STDC_HEADERS"]=" 1" -D["HAVE_STDLIB_H"]=" 1" -D["HAVE_STRING_H"]=" 1" -D["HAVE_INTTYPES_H"]=" 1" -D["HAVE_STDINT_H"]=" 1" -D["HAVE_ASSERT_H"]=" 1" -D["HAVE_LIMITS_H"]=" 1" -D["HAVE_STDLIB_H"]=" 1" -D["HAVE_STRING_H"]=" 1" -D["ssize_t"]=" int" -D["HAVE_STDLIB_H"]=" 1" -D["HAVE_MALLOC"]=" 0" -D["malloc"]=" rpl_malloc" -D["HAVE_MEMSET"]=" 1" -D["HAVE_STRCASECMP"]=" 1" -D["HAVE_STRRCHR"]=" 1" -D["HAVE_STRNLEN"]=" 1" - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { - line = $ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} - ac_datarootdir_hack=' - s&@datadir@&${datarootdir}&g - s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g - s&@infodir@&${datarootdir}/info&g - s&@localedir@&${datarootdir}/locale&g - s&@mandir@&${datarootdir}/man&g - s&\${datarootdir}&${prefix}/share&g' ;; -esac -ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -} - -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi - ;; - - - esac - -done # for ac_tag - - -as_fn_exit 0 diff --git a/csdk/ubstack/README b/csdk/ubstack/README deleted file mode 100644 index a78d855..0000000 --- a/csdk/ubstack/README +++ /dev/null @@ -1,20 +0,0 @@ -Build notes - -//------------------------------------------------- -// Linux -//------------------------------------------------- -To build, run -make - -To enable logging, ensure that --D TB_LOG -is set in the compiler flags - -//------------------------------------------------- -// Android -//------------------------------------------------- -To enable logging for Android, TB_LOG should be defined in the ./jni/Android.mk file as - -LOCAL_CFLAGS := -DTB_LOG - - diff --git a/csdk/ubstack/include/occore.h b/csdk/ubstack/include/occore.h deleted file mode 100644 index 7ae40b7..0000000 --- a/csdk/ubstack/include/occore.h +++ /dev/null @@ -1,67 +0,0 @@ -//****************************************************************** -/// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef OCCORE_H_ -#define OCCORE_H_ - - -// ============================================================================ -// Namespace -// ============================================================================ -namespace oc { -namespace ub { - -// ============================================================================ -// Enums -// ============================================================================ -enum OCQueryResultType { - SUCCESS, - FAILURE -}; - -enum OCStackMode { - OC_CLIENT = 0, - OC_SERVER, - OC_CLIENT_SERVER -}; - -} -} - -#ifdef CPPV11 -#include - namespace oc { - namespace ub { - typedef std::mutex mutex; - typedef std::lock_guard mutex_lock_guard; - } - } -#else -#include -#include - namespace oc { - namespace ub { - typedef boost::mutex mutex; - typedef boost::lock_guard mutex_lock_guard; - } - } -#endif - -#endif /* OCCORE_H_ */ diff --git a/csdk/ubstack/include/ocinternalapi.h b/csdk/ubstack/include/ocinternalapi.h deleted file mode 100644 index b44f55b..0000000 --- a/csdk/ubstack/include/ocinternalapi.h +++ /dev/null @@ -1,131 +0,0 @@ -//****************************************************************** -/// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -#ifndef INTERNALUBAPI_H_ -#define INTERNALUBAPI_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include -#include -#include -#include "occore.h" - -// ============================================================================ -// Namespace -// ============================================================================ -namespace oc { -namespace ub { - - -// ============================================================================ -// Class -// ============================================================================ -class OCDiscoverServicesResult { - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~OCDiscoverServicesResult() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - virtual OCQueryResultType getResult() const = 0; - virtual const std::list& getServiceList() const = 0; -}; - -typedef std::function OCDiscoverServicesFunction; - -// ============================================================================ -// Class -// ============================================================================ -class OCModel : public std::enable_shared_from_this { - // ============================================================ - // Type Definition(s) - // ============================================================ - public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - - // ============================================================ - // Factory - // ============================================================ - public: - static SharedPtr createModel(); - - // ============================================================ - // Destructor - // ============================================================ - public: - virtual ~OCModel() {} - - // ============================================================ - // Public Method(s) - // ============================================================ - public: - /** - * Start the OC Stack. - * - * @param ipAddr - * IP Address of host device - * @param port - * Port of host device - * @param mode - * Host device is client, server, or client-server - * - * @return - * true - successfully started the OC Stack - * false - error starting the OC Stack - */ - virtual bool start(const std::string ipAddr, int16_t port, OCStackMode mode) = 0; - - /** - * Get all services that have been discovered at time of call - * - * @param asyncReturnFunc - asynchronous callback function that is invoked - * by the OCModel when service discovery - * is complete. The callback will include - * status and a list of all discovered services - */ - virtual void discoverServices(OCDiscoverServicesFunction& asyncReturnFunc) = 0; - - /** - * Add a service to the OCModel - * - * @param url - * URL of the service - * - * @return - * Total number of services in the OCModel - */ - virtual uint16_t addService(const std::string url) = 0; - -}; - - -} -} - -#endif /* INTERNALUBAPI_H_ */ diff --git a/csdk/ubstack/makefile b/csdk/ubstack/makefile deleted file mode 100644 index bb8b3c0..0000000 --- a/csdk/ubstack/makefile +++ /dev/null @@ -1,153 +0,0 @@ -# //****************************************************************** -# // -# // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -# // -# //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -# // -# // 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. -# // -# //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -# -# override with `make BUILD=release` -# default to release build -BUILD := release - -# You must create the file "local.properties" on your local machine which contains any local paths, etc -# local_settings.mk should NOT be committed to repo -include ./local.properties -# GTEST_DIR contains the path to Google Test libs and must be defined in local.properties -# Example: -# GTEST_DIR := /home/johndoe/utils/gtest-1.7.0 - -# NOTE: to run app, make sure that LD_LIBRARY_PATH env variable -# contains $(GTEST_DIR)/lib/.libs - -CC := gcc -CXX := g++ - -PROG := ubstacktest - -SRC_DIR := ./src -TEST_DIR:= ./test -INC_DIR := ./include -LOG_DIR := ../logger -COAP_DIR := ../occoap -STACK_DIR := ../stack - -CC_FLAGS.debug := -O0 -g3 -Wall -c -fmessage-length=0 -pedantic -std=c99 -fpic -DTB_LOG -CC_FLAGS.release := -Os -Wall -c -fmessage-length=0 -std=c99 -fpic -CC_FLAGS := $(CC_FLAGS.$(BUILD)) - -CXX_FLAGS.debug := -O0 -g3 -Wall -c -fmessage-length=0 -pedantic -std=c++0x -fpic -DTB_LOG -CXX_FLAGS.release := -Os -Wall -c -fmessage-length=0 -std=c++0x -fpic -CXX_FLAGS := $(CXX_FLAGS.$(BUILD)) - -INC := -I$(SRC_DIR) -INC += -I$(TEST_DIR) -INC += -I$(INC_DIR) -INC += -I$(LOG_DIR)/include -INC += -I$(COAP_DIR)/include -INC += -I$(STACK_DIR)/include -INC += -I$(STACK_DIR)/include/internal -INC += -I$(GTEST_DIR)/include - - -# using make's computed variables to select object and bin folders -# depending on the build type -OBJ_DIR.debug := ./obj/debug -OBJ_DIR.release := ./obj/release -OBJ_DIR := $(OBJ_DIR.$(BUILD)) - -BIN_DIR.debug := ./bin/debug -BIN_DIR.release := ./bin/release -BIN_DIR := $(BIN_DIR.$(BUILD)) - -C_FILES := $(wildcard $(LOG_DIR)/src/*.c) -C_FILES += $(wildcard $(COAP_DIR)/src/*.c) -C_FILES += $(wildcard $(STACK_DIR)/src/*.c) -CPP_FILES := $(wildcard $(SRC_DIR)/*.cpp) -CPP_FILES += $(wildcard $(TEST_DIR)/*.cpp) -CPP_FILES += $(wildcard $(TEST_DIR)/*.cpp) - -OBJ_FILES := $(addprefix $(OBJ_DIR)/,$(notdir $(CPP_FILES:.cpp=.o) $(C_FILES:.c=.o))) -H_FILES := $(wildcard $(TEST_DIR)/*.h) -H_FILES += $(wildcard $(INC_DIR)/*.h) -H_FILES += $(wildcard $(LOG_DIR)/include/*.h) -LD_FLAGS := -L/usr/lib -LD_FLAGS += -L$(GTEST_DIR)/lib/.libs - - -LIBS := -lpthread -LIBS += -lgtest -LIBS += -lgtest_main - - -all: $(PROG) - mkdir -p ./$(OBJ_DIR) - mkdir -p ./$(BIN_DIR) - - -$(PROG): $(OBJ_FILES) - $(CXX) -o $@ $^ $(LD_FLAGS) $(LIBS) - mkdir -p ./$(BIN_DIR) - mv ./$(PROG) ./$(BIN_DIR) - -# UB Stack -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h $(H_FILES) - mkdir -p ./$(OBJ_DIR) - $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $< - -# UB Stack -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(INC_DIR)/%.h $(H_FILES) - mkdir -p ./$(OBJ_DIR) - $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $< - -# UB Stack unit test -$(OBJ_DIR)/%.o: $(TEST_DIR)/%.cpp $(H_FILES) - mkdir -p ./$(OBJ_DIR) - $(CXX) $(CXX_FLAGS) $(INC) -c -o $@ $< - -# Logger -$(OBJ_DIR)/%.o: $(LOG_DIR)/src/%.c $(LOG_DIR)/include/%.h $(H_FILES) - mkdir -p ./$(OBJ_DIR) - $(CC) $(CC_FLAGS) $(INC) -c -o $@ $< - -# Stack -$(OBJ_DIR)/%.o: $(STACK_DIR)/src/%.c $(STACK_DIR)/include/%.h $(H_FILES) - mkdir -p ./$(OBJ_DIR) - $(CC) $(CC_FLAGS) $(INC) -c -o $@ $< - -# OCCoAP -$(OBJ_DIR)/%.o: $(COAP_DIR)/src/%.c $(COAP_DIR)/include/%.h $(H_FILES) - mkdir -p ./$(OBJ_DIR) - $(CC) $(CC_FLAGS) $(INC) -c -o $@ $< - -.PHONY: clean -clean : - rm -rf ./obj/debug/* - rm -rf ./obj/release/* - rm -rf ./lib/* - rm -rf ./bin/debug/* - rm -rf ./bin/release/* - - -.PHONY: print_vars - -print_vars: - @echo "" - @echo 'BUILD = '$(value BUILD) - @echo 'INC = '$(value INC) - @echo 'CPP_FILES = '$(value CPP_FILES) - @echo 'LIBS = '$(value LIBS) - - diff --git a/csdk/ubstack/src/ocmodelimpl.cpp b/csdk/ubstack/src/ocmodelimpl.cpp deleted file mode 100644 index 4f76a81..0000000 --- a/csdk/ubstack/src/ocmodelimpl.cpp +++ /dev/null @@ -1,214 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - - -// ============================================================================ -// Includes -// ============================================================================ -#include "ocmodelimpl.h" -extern "C" { - #include "logger.h" -} - -#include -#include -#include - -// ============================================================================ -// Namespace -// ============================================================================ -namespace oc { -namespace ub { - -static const char TAG[] = "OCModelImpl"; - -// Global variable used by friend async callback function to access the OCModelImpl instance -OCModelImpl *pModelImpl = 0; - -/** - * Asynchronous callback friend function invoked by the OC Stack upon service discovery - * - * @param result - OC stack result - * @param representation - handle to the representation of the resource - */ -void asyncDoResourcesCallback(OCStackResult result, OCRepresentationHandle representation) { - OC_LOG(INFO, TAG, "Entering asyncDoResourcesCallback"); - - if (representation && (result == OC_STACK_OK)) { - OCResource *resource = (OCResource *)representation; - OC_LOG_V(INFO, TAG, "URI = %s", resource->uri); - - // If the pointer is valid, make a call to the OCModelImpl instance method - if (pModelImpl) { - pModelImpl->addService(resource->uri); - } - } -} - -// ============================================================================ -// OCDiscoverServicesResult Implementation Class -// ============================================================================ -class OCDiscoverServicesSuccess : public OCDiscoverServicesResult { -public: - virtual ~OCDiscoverServicesSuccess() {} - -// ============================================================ -// Public Method(s) -// ============================================================ -public: - virtual OCQueryResultType getResult() const { - return SUCCESS; - } - - virtual const std::list& getServiceList() const { - return serviceList; - } - -public: - std::list serviceList; -}; - - -// ============================================================================ -// Model Factory -// ============================================================================ -OCModel::SharedPtr OCModel::createModel() { - OC_LOG(INFO, TAG, "Entering OCModel::createModel"); - return OCModelImpl::createModel(); -} - -OCModelImpl::SharedPtr OCModelImpl::createModel() { - // Get singleton of ModelImpl. - OC_LOG(INFO, TAG, "Entering OCModelImpl::createModel"); - static SharedPtr instance = std::make_shared(); - - return instance; -} -// ============================================================================ -// Constructors & Destructors -// ============================================================================ -OCModelImpl::OCModelImpl() { - OC_LOG(INFO, TAG, "Entering OCModel::OCModelImpl"); - - pModelImpl = this; - discoverCallback = 0; -} - -OCModelImpl::~OCModelImpl() { - OC_LOG(INFO, TAG, "Entering OCModel::~OCModelImpl"); - // Call OCStack layer - if (OCStop() != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "Stack shutdown error"); - } - - discoverCallback = 0; - serviceList.clear(); -} - -// ============================================================================ -// Public methods -// ============================================================================ -/** - * Start the OC Stack. - * - * @param ipAddr - * IP Address of host device - * @param port - * Port of host device* - * @param mode - * Host device is client, server, or client-server - * - * @return - * true - successfully started the OC Stack - * false - error starting the OC Stack - */ -bool OCModelImpl::start(const std::string ipAddr, int16_t port, OCStackMode mode) { - OC_LOG_V(INFO, TAG, "Entering OCModelImpl::start, IP = %s, port = %d", ipAddr.c_str(), (int)port); - - // Call OCStack layer - initialize stack - if (OCInit(ipAddr.c_str(), port, (OCMode)mode) != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "Stack initialization error"); - return false; - } - - // Call OCStack layer - enable device discovery and provide a callback - if (OCDoResource(OC_REST_GET, OC_EXPLICIT_DEVICE_DISCOVERY_URI, 0, 0, asyncDoResourcesCallback) != OC_STACK_OK) { - OC_LOG(ERROR, TAG, "Stack discovery error"); - return false; - } - return true; -} - -/** - * Get all services that have been discovered at time of call - * - * @param asyncReturnFunc - asynchronous callback function that is invoked - * by the OCModelImpl when service discovery - * is complete. The callback will include - * status and a list of all discovered services - */ -void OCModelImpl::discoverServices(OCDiscoverServicesFunction& asyncReturnFunc) { - OC_LOG(INFO, TAG, "Entering OCModelImpl::discoverServices"); - - mutex_lock_guard lock(serviceListMutex); - - // Save the callback - discoverCallback = asyncReturnFunc; - - // Invoke the callback immediately - invokeDiscoverCallback(); -} - -/** - * Add a service to the OCModelImpl - * - * @param url - URL of the service - * @return Total number of services in the OCModelImpl - */ -uint16_t OCModelImpl::addService(const std::string url) { - OC_LOG_V(INFO, TAG, "Entering OCModelImpl::addService, service = %s", url.c_str()); - serviceList.push_back(url); - - invokeDiscoverCallback(); - return (uint16_t)serviceList.size(); -} - -/** - * Internal methods that invokes the client callback (if it was previously set via discoverServices) - * Called when a new service is discovered. - */ -void OCModelImpl::invokeDiscoverCallback() { - OC_LOG(INFO, TAG, "Entering OCModelImpl::invokeDiscoverCallback"); - // Only invoke the callback if it has been set and and at least one service has been added - // to the service list - if (discoverCallback && (serviceList.size() > 0)) { - OC_LOG(INFO, TAG, "Invoking callback"); - - OCDiscoverServicesSuccess result; - // Insert from the model device list to the result device list - result.serviceList.insert(result.serviceList.end(), serviceList.begin(), serviceList.end()); - - // Invoke the callback - discoverCallback(result); - } -} - -} -} diff --git a/csdk/ubstack/src/ocmodelimpl.h b/csdk/ubstack/src/ocmodelimpl.h deleted file mode 100644 index ee5bcb4..0000000 --- a/csdk/ubstack/src/ocmodelimpl.h +++ /dev/null @@ -1,125 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// 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. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - - -#ifndef OCMODELIMPL_H_ -#define OCMODELIMPL_H_ - -// ============================================================================ -// Includes -// ============================================================================ -#include -#include -#include - -#include "ocinternalapi.h" - -extern "C" { - #include "ocstack.h" -} -// ============================================================================ -// Namespace -// ============================================================================ -namespace oc { -namespace ub { - -class OCModelImpl : public OCModel { -public: - typedef std::shared_ptr SharedPtr; - typedef std::weak_ptr WeakPtr; - -public: - /** - * Factory pattern to create a OCModel singleton - * @return Shared pointer to the OCModel - */ - static SharedPtr createModel(); - -public: - /** - * Constructor - */ - OCModelImpl(); - - /** - * Destructor - */ - virtual ~OCModelImpl(); - - /** - * Start the OC Stack. - * - * @param ipAddr - * IP Address of host device - * @param port - * Port of host device* - * @param mode - * Host device is client, server, or client-server - * - * @return - * true - successfully started the OC Stack - * false - error starting the OC Stack - */ - virtual bool start(const std::string ipAddr, int16_t port, OCStackMode mode); - - /** - * Get all services that have been discovered at time of call - * - * @param asyncReturnFunc - asynchronous callback function that is invoked - * by the OCModelImpl when service discovery - * is complete. The callback will include - * status and a list of all discovered services - */ - virtual void discoverServices(OCDiscoverServicesFunction& asyncReturnFunc); - - /** - * Add a service to the OCModelImpl - * - * @param url - URL of the service - * @return Total number of services in the OCModelImpl - */ - virtual uint16_t addService(const std::string url); - -private: - typedef std::list ServiceList; - -private: - /** - * Internal methods that invokes the client callback (if it was previously set via discoverServices) - * Called when a new service is discovered. - */ - virtual void invokeDiscoverCallback(); - - /** - * Asynchronous callback friend function invoked by the OC Stack upon service discovery - * - * @param result - OC stack result - * @param representation - handle to the representation of the resource - */ - friend void asyncDoResourcesCallback(OCStackResult result, OCRepresentationHandle representation); -private: - ServiceList serviceList; - mutex serviceListMutex; - OCDiscoverServicesFunction discoverCallback; -}; - -} -} -#endif /* OCMODELIMPL_H_ */ diff --git a/csdk/ubstack/test/ubstacktests.cpp b/csdk/ubstack/test/ubstacktests.cpp deleted file mode 100644 index 4cc2bb4..0000000 --- a/csdk/ubstack/test/ubstacktests.cpp +++ /dev/null @@ -1,97 +0,0 @@ -//****************************************************************** -// -// Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - - -#include "ocinternalapi.h" -extern "C" { - #include "logger.h" - #include "ocstack.h" - #include "ocstackinternal.h" -} - -#include "gtest/gtest.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -using namespace std; - - -static const char TAG[] = "TestHarness"; -static const std::string SERVICE_URI_1 = "coap://127.0.0.1:5683/"; -static const std::string SERVICE_URI_2 = "coap://127.0.0.2:5683/"; -static const std::string SERVICE_URI_3 = "coap://127.0.0.3:5683/"; - -void discoverServicesAsync(const oc::ub::OCDiscoverServicesResult& result) { - OC_LOG(INFO, TAG, "Entering discoverServicesAsync"); - - EXPECT_EQ(oc::ub::OCQueryResultType::SUCCESS, result.getResult()); - - if (result.getResult() == oc::ub::OCQueryResultType::SUCCESS) { - OC_LOG(INFO, TAG, "discoverServicesAsync, OCQueryResultType::SUCCESS"); - - std::list serviceList = result.getServiceList(); - EXPECT_GE((int)serviceList.size(), 1); - - if (serviceList.size() > 0) { - for (auto iter = serviceList.begin(); iter != serviceList.end(); ++iter) { - OC_LOG_V(INFO, TAG, "discoverServicesAsync, Service = %s", iter->c_str()); - } - } - } -} -//----------------------------------------------------------------------------- -// Tests -//----------------------------------------------------------------------------- -TEST(UBStackTest, ServiceDiscovery) { - OC_LOG(INFO, TAG, "Running ServiceDiscovery"); - - oc::ub::OCModel::WeakPtr modelWeak = oc::ub::OCModel::createModel(); - oc::ub::OCModel::SharedPtr modelShared = modelWeak.lock(); - EXPECT_TRUE((modelShared != 0)); - if (modelShared) { - // Start model - EXPECT_TRUE(modelShared->start("127.0.0.1", 5683, oc::ub::OC_CLIENT)); - - // Create an async discovery function - oc::ub::OCDiscoverServicesFunction serviceFunction = discoverServicesAsync; - - // Discover - modelShared->discoverServices(serviceFunction); - - // Add service - EXPECT_EQ(1, (int)modelShared->addService(SERVICE_URI_1)); - - // Add service - EXPECT_EQ(2, (int)modelShared->addService(SERVICE_URI_2)); - - // Add service via OC Stack - OCUpdateResources(SERVICE_URI_3.c_str()); - } -} - - -- 2.7.4