From 2a5112f1ab80cac85909cc159788cc3098cc0a8d Mon Sep 17 00:00:00 2001 From: jk13 Date: Fri, 6 Feb 2015 14:34:40 +0900 Subject: [PATCH] [SSM] Upload Tizen sample for 2.3 public sdk IDE 1. Change existing Tizen gbs sample app to using Tizen 2.3_rev1 IDE env Change-Id: I12977bcd4de66d925f6e98f5382f1227d218c72c Signed-off-by: jk13 Reviewed-on: https://gerrit.iotivity.org/gerrit/313 Tested-by: jenkins-iotivity Reviewed-by: Uze Choi --- .../SampleApp/tizen/SSMTesterApp/.exportMap | 4 + .../SampleApp/tizen/SSMTesterApp/.gitignore | 1 + .../SampleApp/tizen/SSMTesterApp/.rds_delta | 6 + .../SampleApp/tizen/SSMTesterApp/.sdk_delta.info | Bin 0 -> 2502 bytes .../SampleApp/tizen/SSMTesterApp/.tproject | 11 + .../SampleApp/tizen/SSMTesterApp/CMakeLists.txt | 45 -- .../SampleApp/tizen/SSMTesterApp/README | 75 --- .../SampleApp/tizen/SSMTesterApp/RELEASE.txt | 98 ---- .../tizen/SSMTesterApp/inc/ssmtesterapp.h | 19 + .../SampleApp/tizen/SSMTesterApp/makefile_org | 70 --- .../tizen/SSMTesterApp/oic-sample/CMakeLists.txt | 51 -- .../oic-sample/com.samsung.ssmtester.rule | 3 - .../oic-sample/com.samsung.ssmtester.xml | 10 - .../tizen/SSMTesterApp/oic-sample/src/oicapp-log.h | 82 --- .../SSMTesterApp/oic-sample/src/oicapp-test.cpp | 496 ------------------ .../SSMTesterApp/oic-sample/src/oicapp-test.h | 86 ---- .../SSMTesterApp/oic-sample/src/oicapp-utils.c | 98 ---- .../SSMTesterApp/oic-sample/src/oicapp-utils.h | 41 -- .../tizen/SSMTesterApp/packaging/ssm.manifest | 5 - .../tizen/SSMTesterApp/packaging/ssm.spec | 53 -- .../tizen/SSMTesterApp/res/ui_controls.edc | 251 ++++++++++ .../tizen/SSMTesterApp/shared/res/ssmtesterapp.png | Bin 0 -> 57662 bytes .../tizen/SSMTesterApp/src/ssmtesterapp.cpp | 557 +++++++++++++++++++++ .../tizen/SSMTesterApp/tizen-manifest.xml | 12 + 24 files changed, 861 insertions(+), 1213 deletions(-) create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.exportMap create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.gitignore create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.rds_delta create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.sdk_delta.info create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.tproject delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/CMakeLists.txt delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/README delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/RELEASE.txt create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/inc/ssmtesterapp.h delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/makefile_org delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/CMakeLists.txt delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/com.samsung.ssmtester.rule delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/com.samsung.ssmtester.xml delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-log.h delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-test.cpp delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-test.h delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-utils.c delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-utils.h delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/packaging/ssm.manifest delete mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/packaging/ssm.spec create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/res/ui_controls.edc create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/shared/res/ssmtesterapp.png create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/src/ssmtesterapp.cpp create mode 100644 service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/tizen-manifest.xml diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.exportMap b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.exportMap new file mode 100644 index 0000000..43e310e --- /dev/null +++ b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.exportMap @@ -0,0 +1,4 @@ +{ + global: main; + local: *; +}; diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.gitignore b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.gitignore new file mode 100644 index 0000000..98bbc31 --- /dev/null +++ b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.gitignore @@ -0,0 +1 @@ +/Debug diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.rds_delta b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.rds_delta new file mode 100644 index 0000000..3eac727 --- /dev/null +++ b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.rds_delta @@ -0,0 +1,6 @@ +#delete +#add +#modify +author-signature.xml +signature1.xml +bin/ssmtesterapp diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.sdk_delta.info b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.sdk_delta.info new file mode 100644 index 0000000000000000000000000000000000000000..9017e059f20c2d15f6d474353ddaea5b29559b71 GIT binary patch literal 2502 zcmbVOOKclO7#_zH@*pi~h{U0SiMS$<>?Ga@kSdiT9*!!6iipxinDu(&Y-4+^oplLt z;eu2NkOImn=>>^Wo)@3s282^7sSpRAO-oB5t&wHd4ndFxGSM?AD_-bT>VDwH z>V@{%XG$8t#ZM3ooQq!=>zCbDlE%LPurbcXw`e6Ot76%$hBjynlk?WvqegpdFT_#m zXBoRms`8?NORqlfcW@3EocI~yv&4CVv0kabJUZ;bycF7>$iD~)Zt3CTTAJ;WHM{Q3 zL*ivv!_;j1xsw=>J$9?|#b~9Y?gA9&fht0s1OSNi}xcV6pe@zfa7~35)a@~}* zyNL2zf&%M5Aj9p%8fUO*A9#fRQb%m`diUPzmYNlu^*v_RXJ?)#6O{1R4~lC?$D-f!Tiyjg<(01?*=T#WTIHsJ>q>G`2| z%nP5C$_#tv#QMbwS*erjvkXo=q;_EP^(#?pbS;<-)F zlumqV-pNo$Y`ARpumRO9mA!!6#*@Pe(Fkavs&xNVsII10bo_c4_*Es{^3kM|72n{j zXx9PXx)Bnh{AS>|T?uI&-!yQs1u@Fs{a{=LPHY@D(aaj*uIPvj7gy6zABp_Pa>7X~ zylyBsI^)zI#*#`>I<`jh1i?Pm5gTr8KuP_3dafF@z!-Udkg=iU07*wr-)0Eb86C0V z77R7$1h!hp&_*@eZ+dq5rRNMh-?t6V_xG}?|5Pl+@oX-i9na>+vy)bCQaV@&R4}v4 ztFMzb6d&dp9-fCK+ky6Em-dSz`$%sBVx*nlfp*@S$aeZ(O+P@|lL>8WC)!i_T&MQh zK0JFc58yTSJ@tRJtsFcPQytoKuU)PfZ3_=b%87M1)VWvJbxud_>Gi_~C(h}J4HuiK zuA*H42~OA1#*ZHnu7Kndf8sUl|AM7wRyPfyn5MP zQf^)OfmFCTM$KJQIC5az@FkXvdAJ;4tPl9UBa`>i$rbX1?;}rg2=<=F7OQ@x;s%|R zK{|FN9vn0cxhtZCB^BDvVh81w>n&}AOWffRWjAa<7zOsA0~c`z;bi7*L&)QCnWp{< zbm^FkQ+33=6Pr3>!^Qbj_rZrN*JIK%d*8bT%B6x1X-l|PZ%_+%;Nr=&y%O(fEEnGx z4zyfcO#Rcw`-Hogz+Hk}oIGG;qmI{?@c|dz`Z|%I1aMGzxVQ|K=tPa@7**QW8e?$h zy2Ty+UB&l6cHv8@HTQxB>rWE)xar^i24f?k_mo@D#GeJ`cBc=lnL7?YL^SXbEtI&z F{svA8>39GD literal 0 HcmV?d00001 diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.tproject b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.tproject new file mode 100644 index 0000000..f1cc1fd --- /dev/null +++ b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/.tproject @@ -0,0 +1,11 @@ + + + + + mobile-2.3 + + + + + + diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/CMakeLists.txt b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/CMakeLists.txt deleted file mode 100644 index 7aa6d40..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(ssm) - -SET(CMAKE_SHARED_LINKER_FLAGS " -Wl,--as-needed") -SET(CMAKE_EXE_LINKER_FLAGS " -Wl,--as-needed -Wl,--hash-style=both") -#SET(EX_SERVER "simpleserver") -#SET(EX_CLIENT "simpleclient") -#SET(EX_CLIENTSERVER "simpleclientserver") -#SET(OCTBSTACK "octbstack") - -#INCLUDE_DIRECTORIES(include) -#INCLUDE_DIRECTORIES(csdk/stack/include) -#INCLUDE_DIRECTORIES(csdk/ocsocket/include) -#INCLUDE_DIRECTORIES(csdk/ocrandom/include) -#INCLUDE_DIRECTORIES(csdk/logger/include) -#INCLUDE_DIRECTORIES(${INCLUDE_INSTALL_DIR}/boost) -#LINK_DIRECTORIES(${CMAKE_BINARY_DIR}) - -#SET(EXTRA_CXXFLAGS "-std=c++11") -#SET(EXTRA_CXXFLAGS "-g3 -std=c++0x") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS}") - -#SET(SRCS -# OCLib/OCReflect.cpp -# OCLib/OCPlatform.cpp -# OCLib/OCResource.cpp -# OCLib/InProcServerWrapper.cpp -# OCLib/InProcClientWrapper.cpp) -#ADD_LIBRARY(${PROJECT_NAME} STATIC ${SRCS}) - -#ADD_EXECUTABLE(${EX_SERVER} examples/simpleserver.cpp) -#TARGET_LINK_LIBRARIES(${EX_SERVER} ${PROJECT_NAME} ${OCTBSTACK} pthread) -#INSTALL(TARGETS ${EX_SERVER} DESTINATION ${BIN_INSTALL_DIR}) - -#ADD_EXECUTABLE(${EX_CLIENT} examples/simpleclient.cpp) -#TARGET_LINK_LIBRARIES(${EX_CLIENT} ${PROJECT_NAME} ${OCTBSTACK} pthread) -#INSTALL(TARGETS ${EX_CLIENT} DESTINATION ${BIN_INSTALL_DIR}) - -#ADD_EXECUTABLE(${EX_CLIENTSERVER} examples/simpleclientserver.cpp) -#TARGET_LINK_LIBRARIES(${EX_CLIENTSERVER} ${PROJECT_NAME} ${OCTBSTACK} pthread) -#INSTALL(TARGETS ${EX_CLIENTSERVER} DESTINATION ${BIN_INSTALL_DIR}) - -#ADD_SUBDIRECTORY(csdk) -#ADD_SUBDIRECTORY(examples) -ADD_SUBDIRECTORY(oic-sample) diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/README b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/README deleted file mode 100644 index 2f789a5..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/README +++ /dev/null @@ -1,75 +0,0 @@ - - -Builds with g++ 4.6, 4.8, 4.9. - -Run "make" to build OCLib.a, the examples, and TBStack in RELEASE mode. - -Run "make BUILD=debug" to build OCLib.a, the examples, and TBStack in DEBUG mode. - -OCProject/ -├── csdk -│   ├── examples :: TODO :: Unused remove?? -│   │   ├── occlient.c -│   │   └── ocserver.c -│   ├── ocstack.h -│   └── ocstack_stub.c -├── examples -│   ├── client -│   │   ├── MyMultiResourceHandler.cpp -│   │   ├── MyMultiResourceHandler.h -│   │   ├── MyObserverHandler.cpp -│   │   ├── MyObserverHandler.h -│   │   ├── MyResourceHandler.cpp -│   │   ├── MyResourceHandler.h -│   │   └── OCClient.cpp -│   ├── Makefile -│   ├── OCWrapper :: TODO :: Unused remove?? -│   │   ├── Makefile -│   │   ├── parsetest.cpp -│   │   ├── testClient.cpp -│   │   ├── testServerApp.cpp -│   │   └── testServer.cpp -│   ├── server -│   │   ├── multiple_resources.cpp -│   │   └── single_resource.cpp -│   ├── test_OCClient.cpp -│   ├── test_OCReflect.cpp -│   └── test_properties.cpp -├── include - TODO : Seperate what we expose and what we don't -│   ├── IClientWrapper.h -│   ├── InitializeException.h -│   ├── InProcClientWrapper.h -│   ├── InProcServerWrapper.h -│   ├── IServerWrapper.h -│   ├── OCApi.h -│   ├── OCException.h -│   ├── OCObject.h -│   ├── OCObserver.h -│   ├── OCObserverHandler.h -│   ├── OCPlatform.h -│   ├── OCPlatformHandler.h -│   ├── OCProperties.h -│   ├── OCReflect.h -│   ├── OCResource.h -│   ├── OCResourceHandler.h -│   ├── OCSecurityModel.h -│   ├── OCServer.h :: TODO :: Unused remove?? -│   ├── OutOfProcClientWrapper.h -│   ├── OutOfProcServerWrapper.h -│   ├── ResourceInitException.h -│   └── WrapperFactory.h -├── Makefile -├── OCLib -│   ├── InProcClientWrapper.cpp -│   ├── InProcServerWrapper.cpp -│   ├── OCApi.cpp -│   ├── OCObject.cpp -│   ├── OCObserver.cpp -│   ├── OCPlatform.cpp -│   ├── OCProperties.cpp -│   ├── OCReflect.cpp -│   ├── OCResource.cpp -│   ├── OCSecurityModel.cpp -│   └── OCServer.cpp :: TODO :: Unused remove?? -└── README - You are reading this. - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/RELEASE.txt b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/RELEASE.txt deleted file mode 100644 index c9f9a61..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/RELEASE.txt +++ /dev/null @@ -1,98 +0,0 @@ -Release notes -Release date: Aug 5th, 2014. -OS: Ubuntu 12.0.4 and above -Requires boost version 1.55 to build. -NOTE: Boost is not distributed but should be installed in the Ubuntu machine. - -What’s new? -Class OCPlatform (Header file: OCPlatform.h) -registerResource API (signature update) -•This API provides the ability to register the resource with its name, type and list of properties -•Signature of this API has changed. The API takes reference to resource handle which will be filled upon successful registration. Other parameters include resource URI, resource Type, resource interface, entity handler address and resource property (whether discoverable, observable etc.). -•NOTE: This applies to server side functionality. -•NOTE: This API might get modified to accommodate for resource collection in future. - -notifyObservers API -•This new API provides the ability to notify core that resource’s attributes have changed. When entity handler is ready to indicate core that a resource has changed, notifyObservers API needs to be invoked. -•This API takes resource handle as the only parameter. -•NOTE: This applies to server side functionality. -•NOTE: This API might get modified to accommodate for resource collection in future. - -Class OCResource (Header file: OCResource.h) - -get API -•This new API provides the ability to get the attributes of a resource. This API takes a callback as parameter. Callback will be invoked with Attribute map which will provide representation of the resource. Callback will also include error code for GET operation. -•NOTE: This applies to client side functionality. -•NOTE: This API might get modified to accommodate for resource collection in future. - -put API -•This new API provides the ability to set the attributes of a resource via PUT. -•This API takes Attribute map, query parameter map and a callback as parameters. Callback will be invoked with Attribute map which will provide current representation of the resource. Callback will also include error code for PUT operation. -•NOTE: This applies to client side functionality. -•NOTE: This API might get modified to accommodate for resource collection in future. - -Observe API -•This new API provides the ability for the client to set observation on a resource -•This API provides callback as a parameter. Callback will be invoked with attribute map and with an error code for this operation. -•NOTE: This applies to client side functionality. - -cancelObserve API -•This new API provides the ability for the client to cancel observation on a resource -•This API provides callback as a parameter. Callback will be invoked with error code for this operation. -•NOTE: This applies to client side functionality. -Class OCResourceRequest (Header file: OCResourceRequest.h) -NOTE: This applies to server side functionality. - -getRequestType API -•This new API provides the ability to retrieve the type of request. This could be GET, PUT (and in future POST and DELETE). - -getQueryParams API -•This new API provides the ability to retrieve the query parameters from the URL request. - -getRequestHandlerFlag API -•This new API provides the ability to retrieve the request handler flag on the URL request. This could be either INIT, REQUEST or OBSERVE flag. - -getResourceRepresentation API -•This new API provides the ability to retrieve attribute representation of the resource. - -Class OCResourceResponse (Header file: OCResourceResponse.h) -NOTE: This applies to server side functionality. - -setErrorCode API -•This new API provides the ability to set the error code - -setResourceRepresentation API -•This new API provides the ability to set the attribute representation of a resource. - -Other Notes: -1. Security model is still open. -2. APIs have OCStackResult as return type. This is will indicate success or failure for the API operation. -3. Resource collection/hierarchy APIs are not checked into the code base. They will be given as separate header files. -4. Query parameters are not used in this deliverable. -5. Only single client observer has been tested. -6. Maximum length of URI supported is 64 bytes -7. Maximum length of response (for GET, PUT) from server is 128 bytes. - - -How to build: -1. Root folder oic-resource consists of ‘OIC’ folder. Inside OIC folder there is a Makefile. -2. Before building, make sure to have contents from oic-utilities repo at the folder level where oic-resource is. -3. Use ‘make’ to build the entire OIC code. This would build the C++ SDK, stack and samples. - -Samples: -1. We have a sample for hosting a resource on a server and a sample for client which will be able to discover resources. -2. Server sample location: OIC/examples/simpleserver.cpp -3. Client sample location: OIC/examples/simpleclient.cpp -4. In simpleserver.cpp, inside main, - -PlatformConfig cfg; -cfg.ipAddress = "134.134.161.33"; - -Modify the above IP address to the IP address of the machine where this server is running. - -Similarly, in simpleclient.cpp, inside main, modify the IP address to the IP address of the machine where the client is running. - -The server and client can run in same machine or in different machines. - -5. To run simpleServer do ‘./simpleServer’ and to run simpleClient do ‘./simpleClient’. - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/inc/ssmtesterapp.h b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/inc/ssmtesterapp.h new file mode 100644 index 0000000..20f8e61 --- /dev/null +++ b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/inc/ssmtesterapp.h @@ -0,0 +1,19 @@ +#ifndef __ssmtesterapp_H__ +#define __ssmtesterapp_H__ + +#include +#include +#include +#include +#include + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "ssmtesterapp" + +#if !defined(PACKAGE) +#define PACKAGE "org.iotivity.service.ssm.ssmtesterapp" +#endif + +#endif /* __ssmtesterapp_H__ */ diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/makefile_org b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/makefile_org deleted file mode 100644 index 85ece27..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/makefile_org +++ /dev/null @@ -1,70 +0,0 @@ -# override with `make BUILD=release` -# default to release build -BUILD := release -CXX := g++ -#CXX := clang -OUT_DIR := $(PWD)/$(BUILD) -OBJ_DIR := $(OUT_DIR)/obj -SAMPLES_OUT_DIR := $(OUT_DIR)/samples - -CXX_FLAGS.debug := -g3 -std=c++0x -Wall -pthread - -CXX_FLAGS.release := -std=c++0x -Wall -pthread - -CXX_INC := -I./include/ -CXX_INC += -I./csdk/stack/include -CXX_INC += -I./csdk/ocsocket/include -CXX_INC += -I./csdk/ocrandom/include -CXX_INC += -I./csdk/logger/include -CXX_INC += -I/usr/local/boost_1_51_0 - -# Force metatargets to build: -.PHONY: prep_dirs c_sdk simpleserver simpleclient simpleclientserver - -all: .PHONY - -prep_dirs: - -mkdir $(OUT_DIR) - -mkdir $(OBJ_DIR) - -mkdir $(SAMPLES_OUT_DIR) - -c_sdk: - cd csdk && $(MAKE) "BUILD=$(BUILD)" - -examples: - cd examples && $(MAKE) "BUILD=$(BUILD)" - -simpleserver: OCLib.a - $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(SAMPLES_OUT_DIR)/$@ examples/simpleserver.cpp $(CXX_INC) $(OBJ_DIR)/OCLib.a csdk/$(BUILD)/liboctbstack.a - -simpleclient: OCLib.a - $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(SAMPLES_OUT_DIR)/$@ examples/simpleclient.cpp $(CXX_INC) $(OBJ_DIR)/OCLib.a csdk/$(BUILD)/liboctbstack.a - -simpleclientserver: OCLib.a - $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(SAMPLES_OUT_DIR)/$@ examples/simpleclientserver.cpp $(CXX_INC) $(OBJ_DIR)/OCLib.a csdk/$(BUILD)/liboctbstack.a - -OCLib.a: OCPlatform.o OCResource.o OCReflect.o InProcServerWrapper.o InProcClientWrapper.o - ar -cvq $(OBJ_DIR)/OCLib.a $(OBJ_DIR)/OCPlatform.o $(OBJ_DIR)/OCResource.o $(OBJ_DIR)/OCReflect.o $(OBJ_DIR)/InProcServerWrapper.o $(OBJ_DIR)/InProcClientWrapper.o - -OCReflect.o: OCLib/OCReflect.cpp - $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCReflect.cpp $(CXX_INC) - -OCPlatform.o: OCLib/OCPlatform.cpp - $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCPlatform.cpp $(CXX_INC) - -OCResource.o: OCLib/OCResource.cpp - $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCResource.cpp $(CXX_INC) - -InProcServerWrapper.o: OCLib/InProcServerWrapper.cpp - $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/InProcServerWrapper.cpp $(CXX_INC) - -InProcClientWrapper.o: OCLib/InProcClientWrapper.cpp - $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/InProcClientWrapper.cpp $(CXX_INC) - -clean: clean_legacy - -rm -rf release - -rm -rf debug - cd csdk && $(MAKE) clean - cd csdk && $(MAKE) deepclean -clean_legacy: - -rm -f -v OCLib.a *.o simpleserver simpleclient simpleclientserver diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/CMakeLists.txt b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/CMakeLists.txt deleted file mode 100644 index 982cff1..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -SET(TESTAPP "ssmtester") - -FILE(GLOB SRCS src/*.c src/*.cpp) - -SET(VENDOR "samsung") -SET(PACKAGE ${TESTAPP}) -SET(PKGNAME "com.${VENDOR}.${PACKAGE}") -SET(PREFIX "/usr/apps/com.samsung.ssmtester") -SET(BINDIR "${PREFIX}/bin") -SET(RESDIR "${PREFIX}/res") -SET(DATADIR "${PREFIX}/data") -SET(LOCALEDIR "${RESDIR}/locale") -SET(ICONDIR "${RESDIR}/icons/default/small") - -IF("${CMAKE_BUILD_TYPE}" STREQUAL "") - SET(CMAKE_BUILD_TYPE "Release") -ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") -MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") - -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) - -INCLUDE(FindPkgConfig) -pkg_check_modules(pkgs REQUIRED dlog appcore-efl ecore-x elementary efl-assist capi-network-wifi) -INCLUDE_DIRECTORIES(${pkgs_INCLUDE_DIRS}) - -SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_C_FLAGS_RELEASE "-O2") - -ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"") -ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"") -ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"") -ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"") -ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"") -ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"") -ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") -ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"") -ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"") - -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") - -LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/lib) - -ADD_EXECUTABLE(${TESTAPP} ${SRCS}) -TARGET_LINK_LIBRARIES(${TESTAPP} ${pkgs_LDFLAGS} ssmcore oc octbstack oc_logger pthread dl) - -INSTALL(TARGETS ${TESTAPP} DESTINATION ${BINDIR}) - -# install desktop file & icon -#INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.png DESTINATION "/usr/share/icons/default/small") -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.xml DESTINATION "/usr/share/packages") -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.rule DESTINATION /etc/smack/accesses2.d) diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/com.samsung.ssmtester.rule b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/com.samsung.ssmtester.rule deleted file mode 100644 index 701ef6f..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/com.samsung.ssmtester.rule +++ /dev/null @@ -1,3 +0,0 @@ -com.samsung.ssmtester system::use_internet r - -system::use_internet com.samsung.ssmtester r diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/com.samsung.ssmtester.xml b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/com.samsung.ssmtester.xml deleted file mode 100644 index ea0671f..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/com.samsung.ssmtester.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - Name - SSM test Application - - com.samsung.oicapp-test.png - - - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-log.h b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-log.h deleted file mode 100644 index a0b3484..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-log.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2010 Samsung Electronics, Inc. - * All rights reserved. - * - * This software is a confidential and proprietary information - * of Samsung Electronics, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Samsung Electronics. - */ -#ifndef __OICAPP_LOG_H__ -#define __OICAPP_LOG_H__ - -#define TIZEN_DEBUG_ENABLE -#define LOG_TAG "OIC_TEST" -#include - -#define LOG_COLOR_RED "\033[0;31m" -#define LOG_COLOR_BROWN "\033[0;33m" -#define LOG_COLOR_BLUE "\033[0;34m" -#define LOG_COLOR_END "\033[0;m" - - -#if 1 -#define _DBG(fmt, arg...) SLOGD(fmt, ##arg) -#define _INFO(fmt, arg...) SLOGI(fmt, ##arg) -#define _WARN(fmt, arg...) SLOGW(fmt, ##arg) -#define _ERR(fmt, arg...) SLOGE(fmt, ##arg) -#else -#define _DBG(fmt, arg...) \ - printf("[OIC_TEST]%s(%d):" fmt "\n", __FUNCTION__, __LINE__, ##arg) -#define _INFO(fmt, arg...) \ - printf("[OIC_TEST]%s(%d):" fmt "\n", __FUNCTION__, __LINE__, ##arg) -#define _WARN(fmt, arg...) \ - printf("[OIC_TEST]%s(%d):" fmt "\n", __FUNCTION__, __LINE__, ##arg) -#define _ERR(fmt, arg...) \ - printf("[OIC_TEST]%s(%d):" fmt "\n", __FUNCTION__, __LINE__, ##arg) -#endif - -#define DBG(fmt, arg...) _DBG(fmt, ##arg) -#define WARN(fmt, arg...) _WARN(LOG_COLOR_BROWN fmt LOG_COLOR_END, ##arg) -#define ERR(fmt, arg...) _ERR(LOG_COLOR_RED fmt LOG_COLOR_END, ##arg) -#define INFO(fmt, arg...) _INFO(LOG_COLOR_BLUE fmt LOG_COLOR_END, ##arg) - -#define ret_if(expr) \ - do { \ - if (expr) { \ - ERR("(%s)", #expr); \ - return; \ - }\ - } while(0) -#define retv_if(expr, val) \ - do {\ - if (expr) { \ - ERR("(%s)", #expr); \ - return (val); \ - } \ - } while(0) -#define retm_if(expr, fmt, arg...) \ - do {\ - if (expr) { \ - ERR(fmt, ##arg); \ - return; \ - }\ - } while(0) -#define retvm_if(expr, val, fmt, arg...) \ - do {\ - if (expr) { \ - ERR(fmt, ##arg); \ - return (val); \ - } \ - } while(0) -#define warn_if(expr) \ - do { \ - if (expr) { \ - WARN("(%s)", #expr); \ - } \ - } while (0) - - -#endif //__OICAPP_LOG_H__ - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-test.cpp b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-test.cpp deleted file mode 100644 index 3fb4288..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-test.cpp +++ /dev/null @@ -1,496 +0,0 @@ -/* - * Copyright (c) 2014 Samsung Electronics, Inc. - * All rights reserved. - * - * This software is a confidential and proprietary information - * of Samsung Electronics, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Samsung Electronics. - */ - -#include -#include -#include - -#include -#include - -#include "oicapp-test.h" -#include "oicapp-utils.h" - -#include "SSMInterface.h" - -using namespace OIC; - -static oicapp_data *g_ad = NULL; - -int g_CQID = 9999; - -class CQueryEngineEvent : public IQueryEngineEvent -{ - public: - - SSMRESULT onQueryEngineEvent(int cqid, IDataReader *pResult) - { - std::stringstream sstream; - - int dataCount = 0; - IModelData *pModelData = NULL; - std::vector affectedModels; - - pResult->getAffectedModels(&affectedModels); - - for (std::vector::iterator itor = affectedModels.begin(); - itor != affectedModels.end(); ++itor) - { - printf("Printing %s\n", itor->c_str()); - pResult->getModelDataCount(*itor, &dataCount); - for (int i = 0; i < dataCount; i++) - { - pResult->getModelData(*itor, i, &pModelData); - printf("dataId: %d\n", pModelData->getDataId()); - for (int j = 0; j < pModelData->getPropertyCount(); j++) - { - sstream << "Type: " << pModelData->getPropertyName(j).c_str() << - " Value: " << pModelData->getPropertyValue(j).c_str() << "
"; - } - } - } - - sstream << std::ends; - - oicapp_util_put_msg(g_ad, sstream.str().c_str()); - - return SSM_S_OK; - } -}; - -CQueryEngineEvent *g_SSMClientListener = new CQueryEngineEvent(); - -static Elm_Object_Item *oicapp_append_separator(Evas_Object *genlist, - oicapp_data *ad) -{ - Elm_Object_Item *item = NULL; - - item = elm_genlist_item_append(genlist, &ad->itc_seperator, NULL, NULL, - ELM_GENLIST_ITEM_NONE, NULL, NULL); - //elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); - - return item; -} - -static void _win_del(void *data, Evas_Object *obj, void *event) -{ - DBG("test _win_del()"); - - elm_exit(); -} - -static Evas_Object *oicapp_create_win(const char *name) -{ - Evas_Object *eo; - int w, h; - - eo = elm_win_add(NULL, name, ELM_WIN_BASIC); - if (eo) - { - elm_win_title_set(eo, name); - elm_win_borderless_set(eo, EINA_TRUE); - evas_object_smart_callback_add(eo, "delete,request", _win_del, NULL); - ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); - evas_object_resize(eo, w, h); - elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW); - elm_win_indicator_opacity_set(eo, ELM_WIN_INDICATOR_OPAQUE); - } - - evas_object_show(eo); - - return eo; -} - -static Evas_Object *oicapp_create_bg(Evas_Object *parent) -{ - Evas_Object *bg; - - bg = elm_bg_add(parent); - evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(parent, bg); - //elm_object_part_content_set(parent, "elm.swallow.bg", bg); - evas_object_show(bg); - - return bg; -} - -static Evas_Object *oicapp_create_base_layout(Evas_Object *parent) -{ - Evas_Object *base; - - base = elm_layout_add(parent); - elm_layout_theme_set(base, "layout", "application", "default"); - evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_show(base); - - return base; -} - -void __gl_realized_cb(void *data, Evas_Object *obj, void *event_info) -{ - Elm_Object_Item *item = (Elm_Object_Item *)event_info; - /* - list_item = elm_object_item_data_get(item); - if (NULL == list_item) - { - elm_object_item_signal_emit(item, "elm,state,center", ""); - return; - } - if (list_item->group_style == OICAPP_GENLIST_GRP_TOP) - elm_object_item_signal_emit(item, "elm,state,top", ""); - else if (list_item->group_style == OICAPP_GENLIST_GRP_CENTER) - elm_object_item_signal_emit(item, "elm,state,center", ""); - else if (list_item->group_style == OICAPP_GENLIST_GRP_BOTTOM) - elm_object_item_signal_emit(item, "elm,state,bottom", ""); - else - */ - elm_object_item_signal_emit(item, "elm,state,normal", ""); -} - - -static Evas_Object *oicapp_create_genlist(Evas_Object *parent) -{ - Evas_Object *genlist; - - genlist = elm_genlist_add(parent); - if (NULL == genlist) - { - ERR("elm_genlist_add() Fail"); - return NULL; - } - - elm_object_style_set(genlist, "dialogue"); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); - evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_show(genlist); - - evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL); - - return genlist; -} - -static Elm_Object_Item *_gl_append_item(oicapp_data *ad, Elm_Genlist_Item_Class *itc) -{ - Elm_Object_Item *item; - - item = elm_genlist_item_append(ad->genlist, itc, ad, NULL, - ELM_GENLIST_ITEM_NONE, NULL, NULL); - - elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); - - return item; -} - -static void oicapp_append_contents(oicapp_data *ad) -{ - Elm_Object_Item *item; - /* - oicapp_append_separator(ad->genlist, ad); - - _gl_append_item(ad, &ad->itc_edit); - - oicapp_append_separator(ad->genlist, ad); - - _gl_append_item(ad, &ad->itc_btn); - - oicapp_append_separator(ad->genlist, ad); - - item = _gl_append_item(ad, &ad->itc_multiline); - ad->item_multiline = item; - - oicapp_append_separator(ad->genlist, ad); - */ - oicapp_append_separator(ad->genlist, ad); - - elm_genlist_item_append(ad->genlist, &ad->itc_edit, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - - oicapp_append_separator(ad->genlist, ad); - - elm_genlist_item_append(ad->genlist, &ad->itc_btn, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - - oicapp_append_separator(ad->genlist, ad); - - oicapp_append_separator(ad->genlist, ad); - - oicapp_append_separator(ad->genlist, ad); - - item = _gl_append_item(ad, &ad->itc_multiline); - - ad->item_multiline = item; - - oicapp_append_separator(ad->genlist, ad); -} - -static Evas_Object *oicapp_create_conform(Evas_Object *win) -{ - Evas_Object *conform = NULL; - conform = elm_conformant_add(win); - - evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, conform); - evas_object_show(conform); - - Evas_Object *bg_indicator = elm_bg_add(conform); - elm_object_style_set(bg_indicator, "indicator/headerbg"); - elm_object_part_content_set(conform, "elm.swallow.indicator_bg", bg_indicator); - evas_object_show(bg_indicator); - - return conform; -} - -static Eina_Bool _back_cb(void *data, Elm_Object_Item *item) -{ - elm_exit(); - - return EINA_FALSE; -} - -static char *_gl_multiline_text_get(void *data, Evas_Object *obj, const char *part) -{ - oicapp_data *ad = (oicapp_data *)data; - - if (ad->output_msg) - return strdup(ad->output_msg); - else - return strdup(""); -} - -static void _btn_clicked(void *data, Evas_Object *obj, void *event_info) -{ - oicapp_data *ad = (oicapp_data *)data; - - std::string str = std::string(ad->input_msg); - - std::string strGT = ">"; - - std::string strLT = "<"; - - std::size_t foundGT = str.find(strGT); - - std::size_t foundLT = str.find(strLT); - - std::stringstream sstream; - - if (foundGT != std::string::npos) - { - str.replace(foundGT, strGT.length(), ">"); - } - - if (foundLT != std::string::npos) - { - str.replace(foundLT, strLT.length(), "<"); - } - - RegisterQuery(str, g_SSMClientListener, g_CQID); - - sstream << "Query executed! cqid = " << g_CQID << std::ends; - - oicapp_util_put_msg(ad, sstream.str().c_str()); - - ERR("button clicked(%s)", ad->input_msg); -} - -static Evas_Object *_gl_btn_content_get(void *data, Evas_Object *obj, - const char *part) -{ - Evas_Object *button; - oicapp_data *ad = (oicapp_data *)data; - - button = elm_button_add(obj); - //elm_object_style_set(button, ""); - elm_object_part_text_set(button, NULL, "Send Query"); - evas_object_propagate_events_set(button, EINA_FALSE); - evas_object_smart_callback_add(button, "clicked", _btn_clicked, ad); - - return button; -} - -static void _edit_unfocused(void *data, Evas_Object *obj, void *event_info) -{ - oicapp_data *ad = (oicapp_data *)data; - - ad->input_msg = strdup(elm_entry_entry_get(obj)); - - DBG("Clicked : %s", ad->input_msg); - -} -static Evas_Object *_gl_edit_content_get(void *data, Evas_Object *obj, - const char *part) -{ - oicapp_data *ad = (oicapp_data *)data; - - Evas_Object *entry = ea_editfield_add(obj, EA_EDITFIELD_MULTILINE); - ea_editfield_clear_button_disabled_set(entry, EINA_TRUE); - elm_entry_entry_set(entry, ad->input_msg); - evas_object_smart_callback_add(entry, "unfocused", _edit_unfocused, ad); - - return entry; -} - -static char *_item_Text_get(void *data, Evas_Object *obj, const char *part) -{ - char *buf = - "subscribe Device.DiscomfortIndexSensor if Device.DiscomfortIndexSensor.discomfortIndex > 0"; - - return strdup(buf); -} - -static inline void oicapp_init_itcs(oicapp_data *ad) -{ - ad->itc_seperator.item_style = "dialogue/separator"; - ad->itc_seperator.func.text_get = NULL; - ad->itc_seperator.func.content_get = NULL; - ad->itc_seperator.func.state_get = NULL; - ad->itc_seperator.func.del = NULL; - - ad->itc_edit.item_style = "dialogue/editfield"; - ad->itc_edit.func.text_get = _item_Text_get; - ad->itc_edit.func.content_get = _gl_edit_content_get; - ad->itc_edit.func.state_get = NULL; - ad->itc_edit.func.del = NULL; - - ad->itc_btn.item_style = "dialogue/1icon"; - ad->itc_btn.func.text_get = NULL; - ad->itc_btn.func.content_get = _gl_btn_content_get; - ad->itc_btn.func.state_get = NULL; - ad->itc_btn.func.del = NULL; - - ad->itc_multiline.item_style = "multiline/1text"; - ad->itc_multiline.func.text_get = _gl_multiline_text_get; - ad->itc_multiline.func.content_get = NULL; - ad->itc_multiline.func.state_get = NULL; - ad->itc_multiline.func.del = NULL; -} - -static int oicapp_create(void *data) -{ - oicapp_data *ad = (oicapp_data *)data; - Elm_Object_Item *it; - - g_ad = (oicapp_data *)data; - - oicapp_init_itcs(ad); - - /* create window */ - ad->win = oicapp_create_win(PACKAGE); - if (NULL == ad->win) - return -1; - - ad->bg = oicapp_create_bg(ad->win); - if (NULL == ad->bg) - return -1; - - ad->conform = oicapp_create_conform(ad->win); - if (NULL == ad->conform) - return -1; - - /* create layout */ - ad->base = oicapp_create_base_layout(ad->conform); - if (NULL == ad->base) - return -1; - elm_object_content_set(ad->conform, ad->base); - - ad->navi = elm_naviframe_add(ad->base); - elm_object_part_content_set(ad->base, "elm.swallow.content", ad->navi); - ea_object_event_callback_add(ad->navi, EA_CALLBACK_BACK, ea_naviframe_back_cb, NULL); - - ad->genlist = oicapp_create_genlist(ad->navi); - - it = elm_naviframe_item_push(ad->navi, "SSM Tester", NULL, NULL, ad->genlist, NULL); - elm_naviframe_item_pop_cb_set(it, _back_cb, ad); - - ad->ip_addr = oicapp_util_wifi(); - if (NULL == ad->ip_addr) - { - ERR("wifi is not connected"); - oicapp_fail_popup(ad, (char *)"Error", (char *)"No WIFI connection", 3); - } - else - { - INFO("IP Address = %s", ad->ip_addr); - } - - oicapp_append_contents(ad); - - return 0; -} - -static int oicapp_terminate(void *data) -{ - oicapp_data *ad = (oicapp_data *)data; - - if (g_CQID != 9999) - UnregisterQuery(g_CQID); - - if (ad->win) - evas_object_del(ad->win); - - free(ad->ip_addr); - free(ad->output_msg); - return 0; -} - -static int oicapp_pause(void *data) -{ - return 0; -} - -static int oicapp_resume(void *data) -{ - /* - static int tmpCnt = 0; - oicapp_data *ad = (oicapp_data *)data; - char buf[1024]; - - snprintf(buf, sizeof(buf), "Test %d", tmpCnt++); - - oicapp_util_put_msg(ad, buf); - */ - return 0; -} - -static int oicapp_reset(bundle *b, void *data) -{ - oicapp_data *ad = (oicapp_data *)data; - - if (ad->win) - elm_win_activate(ad->win); - - return 0; -} - -int main(int argc, char *argv[]) -{ - oicapp_data ad; - - /* - struct appcore_ops ops = { - .create = oicapp_create, - .terminate = oicapp_terminate, - .pause = oicapp_pause, - .resume = oicapp_resume, - .reset = oicapp_reset, - };*/ - - appcore_ops ops; - - ops.create = oicapp_create; - ops.terminate = oicapp_terminate; - ops.pause = oicapp_pause; - ops.resume = oicapp_resume; - ops.reset = oicapp_reset; - - memset(&ad, 0x0, sizeof(oicapp_data)); - ops.data = &ad; - - return appcore_efl_main(PACKAGE, &argc, &argv, &ops); -} - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-test.h b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-test.h deleted file mode 100644 index 839d164..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-test.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2010 Samsung Electronics, Inc. - * All rights reserved. - * - * This software is a confidential and proprietary information - * of Samsung Electronics, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Samsung Electronics. - */ - -#ifndef __OICAPP_TEST_H__ -#define __OICAPP_TEST_H__ - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include "oicapp-log.h" - -#if !defined(PACKAGE) -# define PACKAGE "oicapp-test" -#endif - -#if !defined(LOCALEDIR) -# define LOCALEDIR "/usr/apps/com.samsung.oicapp-test/res/locale" -#endif - -#if !defined(EDJDIR) -# define EDJDIR "/usr/apps/com.samsung.oicapp-test/res/edje" -#endif - -#define GRP_MAIN "main" - -typedef enum -{ - OICAPP_MODE_NONE = 0, - OICAPP_MODE_CLIENT, - OICAPP_MODE_SERVER, - OICAPP_MODE_MAX -} oicapp_mode; - -enum -{ - OICAPP_GENLIST_GRP_NONE = 0, - OICAPP_GENLIST_GRP_TOP, - OICAPP_GENLIST_GRP_CENTER, - OICAPP_GENLIST_GRP_BOTTOM -}; - - -typedef struct -{ - Evas_Object *win; - Evas_Object *base; - Evas_Object *bg; - Evas_Object *navi; - Evas_Object *genlist; - Evas_Object *popup; - Evas_Object *conform; - - Elm_Object_Item *item_multiline; - Elm_Object_Item *item_client_pwr; - Elm_Object_Item *item_client_lev; - Elm_Object_Item *item_server; - Elm_Object_Item *item_server_pwr; - Elm_Object_Item *item_server_lev; - - Elm_Genlist_Item_Class itc_seperator; - Elm_Genlist_Item_Class itc_edit; - Elm_Genlist_Item_Class itc_btn; - Elm_Genlist_Item_Class itc_multiline; - - char *ip_addr; - char *input_msg; - char *output_msg; -} oicapp_data; -#ifdef __cplusplus -} -#endif - -#endif //__OICAPP_TEST_H__ - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-utils.c b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-utils.c deleted file mode 100644 index 8b0b822..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-utils.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2014 Samsung Electronics, Inc. - * All rights reserved. - * - * This software is a confidential and proprietary information - * of Samsung Electronics, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Samsung Electronics. - */ -#include -#include - -#include "oicapp-utils.h" - -static void _popup_timeout_cb(void *data, Evas_Object *obj, void *event_info) -{ - oicapp_data *ad = data; - - ret_if(data == NULL); - - //evas_object_del(ad->popup); - ad->popup = NULL; -} - -void oicapp_fail_popup(oicapp_data *ad, char *title, char *text, int timeout) -{ - if (ad->popup) - { - evas_object_del(ad->popup); - ad->popup = NULL; - } - - Evas_Object *popup = elm_popup_add(ad->win); - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - if (title) - elm_object_part_text_set(popup, "title,text", title); - - if (text) - elm_object_text_set(popup, text); - - if (0 < timeout) - elm_popup_timeout_set(popup, timeout); - else - elm_popup_timeout_set(popup, 3); - - evas_object_smart_callback_add(popup, "timeout", _popup_timeout_cb, ad); - - evas_object_show(popup); - - ad->popup = popup; -} - -void oicapp_util_put_msg(oicapp_data *ad, const char *msg) -{ - ret_if(NULL == msg); - - if (ad->output_msg) - free(ad->output_msg); - ad->output_msg = strdup(msg); - - DBG("Output msg : %s", ad->output_msg); - - elm_genlist_item_update(ad->item_multiline); - elm_genlist_item_item_class_update(ad->item_multiline, &(ad->itc_multiline)); -} - -char* oicapp_util_wifi() -{ - int ret; - wifi_ap_h ap; - char *ip_addr = NULL; - - ret = wifi_initialize(); - if (WIFI_ERROR_NONE != ret) - { - ERR("wifi_initialize() Fail"); - return NULL; - } - - ret = wifi_get_connected_ap(&ap); - if (WIFI_ERROR_NONE != ret) - { - ERR("wifi_get_connected_ap() Fail"); - return NULL; - } - - ret = wifi_ap_get_ip_address(ap, WIFI_ADDRESS_FAMILY_IPV4, &ip_addr); - if (WIFI_ERROR_NONE != ret) - { - ERR("wifi_ap_get_ip_address() Fail"); - return NULL; - } - - return ip_addr; -} - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-utils.h b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-utils.h deleted file mode 100644 index c92f77f..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/oic-sample/src/oicapp-utils.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2010 Samsung Electronics, Inc. - * All rights reserved. - * - * This software is a confidential and proprietary information - * of Samsung Electronics, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Samsung Electronics. - */ -#ifndef __OICAPP_UTILS_H__ -#define __OICAPP_UTILS_H__ - -#include "oicapp-test.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -void oicapp_fail_popup(oicapp_data *ad, char *title, char *text, int timeout); -void oicapp_util_put_msg(oicapp_data *ad, const char *msg); -char *oicapp_util_wifi(); - -/* -int oicapp_client_start(oicapp_data *ad); -void oicapp_client_stop(); -int oicapp_client_put(int power, int level); - -int oicapp_server_start(oicapp_data *ad); -void oicapp_server_stop(); -void oicapp_server_put(int power, int level); -*/ - - -#ifdef __cplusplus -} -#endif - -#endif //__OICAPP_UTILS_H__ - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/packaging/ssm.manifest b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/packaging/ssm.manifest deleted file mode 100644 index 017d22d..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/packaging/ssm.manifest +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/packaging/ssm.spec b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/packaging/ssm.spec deleted file mode 100644 index 827571d..0000000 --- a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/packaging/ssm.spec +++ /dev/null @@ -1,53 +0,0 @@ -Name: ssm -Summary: Open Interconnect Consortium -Version: 0.0.1 -Release: 0 -Group: Network & Connectivity/Service -License: Apache-2.0 -Source0: %{name}-%{version}.tar.gz -Source1: libDiscomfortIndexSensor.so -Source2: SoftSensorDescription.xml -Source1001: %{name}.manifest -BuildRequires: cmake -#BuildRequires: boost-devel -#BuildRequires: pkgconfig(glib-2.0) -#Buildrequires: gettext-tools -BuildRequires: pkgconfig(appcore-efl) -BuildRequires: pkgconfig(ecore-x) -BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(efl-assist) -BuildRequires: pkgconfig(dlog) -BuildRequires: pkgconfig(capi-network-wifi) - -%description -Tizen Open Interconnect Consortium Service. - - -%prep -%setup -q -cp %{SOURCE1001} . - - -%build -%cmake . -DBIN_INSTALL_DIR:PATH=%{_bindir} - - -%install -rm -rf %{buildroot}/BUILD/ssm* -#%make_install -cp -af %{SOURCE1} %{buildroot}/usr/apps/com.samsung.ssmtester/bin/ -cp -af %{SOURCE2} %{buildroot}/usr/apps/com.samsung.ssmtester/bin/ - -%post - - -%postun - - -%files -%manifest %{name}.manifest -%defattr(-,root,root,-) -/usr/apps/com.samsung.ssmtester/* -/usr/share/* -/etc/smack/accesses2.d/com.samsung.ssmtester.rule -#%%license LICENSE.APLv2 diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/res/ui_controls.edc b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/res/ui_controls.edc new file mode 100644 index 0000000..cd6c582 --- /dev/null +++ b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/res/ui_controls.edc @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd 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. + * + */ + +collections { + base_scale: 1.8; + group { name: "mainpage_layout"; + parts{ + part { name: "query_text_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 220 220 220 255; + + align: 0.0 0.02; + // set the size to 200x200 + min: 200 200; + max: 350 250; + } + } + + part { name: "query_text"; + type: SWALLOW; + description + { + state: "default" 0.0; + rel1.to: "query_text_bg"; + rel2.to: "query_text_bg"; + } + } + part { name: "register"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.2 0.01; + + min: 100 100; + max: 275 100; + + rel1.relative: 1.0 0.1; + rel1.to: "query_text"; + //rel2.relative: 1.0 1.0; + } + } + part { name: "clear"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.0 0.02; + // set the size to 200x200 + min: 100 100; + max: 275 100; + rel1.relative: 0.0 1.0; + rel1.to: "register"; + // rel2.relative: 1.0 1.0; + } + } + + part { name: "example_queries"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.0 0.02; + // set the size to 200x200 + min: 100 100; + max: 500 100; + rel1.relative: 0.0 1.0; + rel1.to: "query_text"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "search_devices"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.0 0.0; + // set the size to 200x200 + min: 100 100; + max: 360 100; + rel1.relative: 0.0 0.7; + rel1.to: "example_queries"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "discomfort_index"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.1 0.0; + // set the size to 200x200 + min: 100 100; + max: 360 100; + rel1.relative: 1.0 0.0; + rel1.to: "search_devices"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "unregister_query_label"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.0 0.02; + // set the size to 200x200 + min: 100 100; + max: 500 100; + rel1.relative: 0.0 1.0; + rel1.to: "search_devices"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "minus"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.0 0.02; + // set the size to 200x200 + min: 100 100; + max: 100 100; + rel1.relative: 0.0 0.7; + rel1.to: "unregister_query_label"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "unregister_query_id_bg"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + color: 220 220 220 255; + + align: 0.02 0.0; + // set the size to 200x200 + min: 100 75; + max: 175 75; + + rel1.relative: 1.0 0.0; + rel1.to: "minus"; + rel2.relative: 1.0 1.0; + } + } + + + part { name: "unregister_query_id"; + type: SWALLOW; + description + { + state: "default" 0.0; + rel1.to: "unregister_query_id_bg"; + rel2.to: "unregister_query_id_bg"; + } + } + + part { name: "plus"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.02 0.0; + // set the size to 200x200 + min: 100 100; + max: 100 100; + rel1.relative: 1.0 0.0; + rel1.to: "unregister_query_id"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "unregister_button"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.2 0.0; + // set the size to 200x200 + min: 100 100; + max: 250 100; + rel1.relative: 1.0 0.0; + rel1.to: "plus"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "log_button"; + type: SWALLOW; + description + { + state: "default" 0.0; + align: 0.0 0.05; + // set the size to 200x200 + min: 100 100; + max: 720 100; + rel1.relative: 0.0 1.0; + rel1.to: "minus"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "log_text_bg"; + type: RECT; + scale: 1; + description + { + state: "default" 0.0; + align: 0.02 0.02; + color: 220 220 220 255; + // set the size to 200x200 + min: 100 400; + max: 720 200; + rel1.relative: 0.0 1.0; + rel1.to: "log_button"; + rel2.relative: 1.0 1.0; + } + } + + part { name: "log_text"; + type: SWALLOW; + description + { + state: "default" 0.0; + rel1.to: "log_text_bg"; + rel2.to: "log_text_bg"; + } + } + } +} +} + diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/shared/res/ssmtesterapp.png b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/shared/res/ssmtesterapp.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD +#include +#include +#include "string.h" +#include "ssmtesterapp.h" +#include "SSMInterface.h" + +typedef struct appdata { + Evas_Object *win; + Evas_Object *conform; + Evas_Object *naviframe; + Evas_Object *layout; + Evas_Object *scroller; + Evas_Object *box; + + Evas_Object *query_text; + Evas_Object *log; + Evas_Object *unregister_query_id; + + Evas_Object *register_button; + Evas_Object *clear_button; + Evas_Object *unregister_button; + Evas_Object *search_devices_button; + Evas_Object *discomfort_index_button; + Evas_Object *plus_button; + Evas_Object *minus_button; + Evas_Object *clear_log_button; + + Evas_Object *example_queries_label; + Evas_Object *unregister_query_label; +} appdata_s; + +#define ELM_DEMO_EDJ "opt/usr/apps/org.iotivity.service.ssm.ssmtesterapp/res/ui_controls.edj" + +char log_buffer[10000]; +void updateLog(appdata_s *ad , char *newlog) +{ + const char *log_text = NULL; + + log_text = elm_entry_entry_get(ad->log); + strcpy(log_buffer,log_text); + strcat(log_buffer,newlog); + elm_entry_entry_set(ad->log,log_buffer); +} + +class CQueryEngineEvent : public OIC::IQueryEngineEvent +{ +private: + appdata_s *m_pAppData; + +public: + CQueryEngineEvent(appdata_s *pAppData) + { + m_pAppData = pAppData; + } + + OIC::SSMRESULT onQueryEngineEvent(int cqid, OIC::IDataReader *pResult) + { + int dataCount = 0; + char log[2000],buf[100]; + OIC::IModelData *pModelData = NULL; + std::vector affectedModels; + + dlog_print(DLOG_ERROR,LOG_TAG,"Event received!"); + + sprintf(buf,"Event received! cqid = %d
", cqid); + strcpy(log,buf); + + pResult->getAffectedModels(&affectedModels); + + for (std::vector::iterator itor = affectedModels.begin(); + itor != affectedModels.end(); ++itor) + { + sprintf(buf,"Printing = %s model
", (*itor).c_str()); + strcat(log,buf); + + pResult->getModelDataCount(*itor, &dataCount); + for (int i = 0; i < dataCount; i++) + { + pResult->getModelData(*itor, i, &pModelData); + sprintf(buf,"dataId: %d
", pModelData->getDataId()); + strcat(log,buf); + for (int j = 0; j < pModelData->getPropertyCount(); j++) + { + sprintf(buf,"Type: %s Value: %s
", (pModelData->getPropertyName(j)).c_str(), (pModelData->getPropertyValue(j)).c_str()); + strcat(log,buf); + } + updateLog(m_pAppData, log); + } + } + + return OIC::SSM_S_OK; + } +}; + +CQueryEngineEvent *g_pQueryEngineEvent = NULL; + + +static void +win_delete_request_cb(void *data , Evas_Object *obj , void *event_info) +{ + ui_app_exit(); +} + +static void +win_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + //appdata_s *ad = (appdata_s *)data; + /* Let window go to hide state. */ + //elm_win_lower(ad->win); + ui_app_exit(); +} + + +static void +register_cb(void *data , Evas_Object *obj , void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + const char *main_text = NULL; + if (!ad->query_text) + return; + main_text = elm_entry_entry_get(ad->query_text); + if (!main_text || (strlen(main_text) == 0)) + return; + + //invoke registerQuery + int qid = 0; + char log[50]; + + dlog_print(DLOG_ERROR,LOG_TAG,"registering query"); + + OIC::SSMRESULT res = OIC::RegisterQuery(main_text, g_pQueryEngineEvent, qid); + if(res == OIC::SSM_S_OK) + { + updateLog(ad, "The query has been registered!
"); + sprintf(log, "QID : %d
", qid); + updateLog(ad, log); + } + else + { + sprintf(log,"Error occured(%d)
", res); + updateLog(ad, log); + } + + dlog_print(DLOG_ERROR,LOG_TAG,"registering query done"); +} + +static void +search_devices_cb(void *data , Evas_Object *obj , void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + elm_entry_entry_set(ad->query_text, "subscribe Device if Device.dataId != 0"); +} + +static void +discomfort_index_cb(void *data , Evas_Object *obj , void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + elm_entry_entry_set(ad->query_text, "subscribe Device.DiscomfortIndexSensor "\ + "if Device.DiscomfortIndexSensor.discomfortIndex > 0"); +} + +static void +minus_cb(void *data , Evas_Object *obj , void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + char output[10]; + const char *query_id_str = elm_entry_entry_get(ad->unregister_query_id); + if (!query_id_str || (strlen(query_id_str) == 0)) + return; + try{ + int val = atoi(query_id_str); + sprintf(output,"%d",val-1); + elm_entry_entry_set(ad->unregister_query_id,output); + } + catch(...){ + dlog_print(DLOG_ERROR,LOG_TAG,"#### atoi() conversion error"); + } +} + +static void +plus_cb(void *data , Evas_Object *obj , void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + char output[10]; + const char *query_id_str = elm_entry_entry_get(ad->unregister_query_id); + if (!query_id_str || (strlen(query_id_str) == 0)) + return; + try{ + int val = atoi(query_id_str); + sprintf(output,"%d",val+1); + elm_entry_entry_set(ad->unregister_query_id,output); + } + catch(...){ + dlog_print(DLOG_ERROR,LOG_TAG,"#### atoi() conversion error"); + } +} + +static void +unregister_cb(void *data , Evas_Object *obj , void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + const char *qidstr = NULL; + if (!ad->unregister_query_id) + return; + qidstr = elm_entry_entry_get(ad->unregister_query_id); + if (!qidstr || (strlen(qidstr) == 0)) + return; + char log[50]; + int qid; + try{ + qid = atoi(qidstr); + //invoke unregisterQuery + OIC::SSMRESULT res = OIC::UnregisterQuery(qid); + if(res == OIC::SSM_S_OK) + { + updateLog(ad, "The query has been unregistered!
"); + sprintf(log, "QID : %d
", qid); + updateLog(ad, log); + } + else + { + sprintf(log,"Error occured(%d)
", res); + updateLog(ad, log); + } + } + catch(...){ + dlog_print(DLOG_ERROR,LOG_TAG,"#### atoi() conversion error"); + } +} + +static void +clear_log_cb(void *data , Evas_Object *obj , void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + elm_entry_entry_set(ad->log,""); +} + +static void +clear_cb(void *data , Evas_Object *obj , void *event_info) +{ + appdata_s *ad = (appdata_s *)data; + elm_entry_entry_set(ad->query_text,""); +} + +char* oicapp_util_wifi() +{ + int ret; + wifi_ap_h ap; + char *ip_addr = NULL; + + ret = wifi_initialize(); + if (WIFI_ERROR_NONE != ret) + { + dlog_print(DLOG_ERROR,LOG_TAG,"#### wifi_initialize() Fail"); + return NULL; + } + + ret = wifi_get_connected_ap(&ap); + if (WIFI_ERROR_NONE != ret) + { + dlog_print(DLOG_ERROR,LOG_TAG,"#### wifi_get_connected_ap() Fail"); + return NULL; + } + + ret = wifi_ap_get_ip_address(ap, WIFI_ADDRESS_FAMILY_IPV4, &ip_addr); + if (WIFI_ERROR_NONE != ret) + { + dlog_print(DLOG_ERROR,LOG_TAG,"#### wifi_ap_get_ip_address() Fail"); + return NULL; + } + + return ip_addr; +} + +static void +create_base_gui(appdata_s *ad) +{ + /* Window */ + ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE); + elm_win_conformant_set(ad->win, EINA_TRUE); + elm_win_autodel_set(ad->win, EINA_TRUE); + + if (elm_win_wm_rotation_supported_get(ad->win)) { + int rots[4] = { 0, 90, 180, 270 }; + elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4); + } + + evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL); + eext_object_event_callback_add(ad->win, EEXT_CALLBACK_BACK, win_back_cb, ad); + + /* Conformant */ + ad->conform = elm_conformant_add(ad->win); + evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(ad->win, ad->conform); + evas_object_show(ad->conform); + + /* naviframe */ + ad->naviframe = elm_naviframe_add(ad->conform); + elm_object_content_set(ad->conform,ad->naviframe); + evas_object_show(ad->naviframe); + + /* scroller */ + ad->scroller = elm_scroller_add(ad->naviframe); + + /* Box container */ + ad->box = elm_box_add(ad->scroller); + evas_object_size_hint_align_set(ad->box, EVAS_HINT_FILL, 0.0); + evas_object_size_hint_weight_set(ad->box, EVAS_HINT_EXPAND, 0.0); + elm_object_content_set(ad->scroller, ad->box); + + ad->layout = elm_layout_add(ad->box); + evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, 0.0); + //elm_layout_theme_set(ad->layout, "layout", "application", "default"); + evas_object_size_hint_align_set(ad->layout, EVAS_HINT_FILL, 0.0); + elm_layout_file_set(ad->layout,ELM_DEMO_EDJ,"mainpage_layout"); + + ad->query_text = elm_entry_add(ad->layout); + elm_object_part_text_set(ad->query_text, "elm.guide", "Enter the query here!!!"); + evas_object_size_hint_align_set(ad->query_text, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(ad->query_text, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_part_content_set(ad->layout,"query_text",ad->query_text); + elm_entry_scrollable_set(ad->query_text,EINA_TRUE); + //evas_object_show(ad->query_text); + elm_entry_input_panel_show_on_demand_set(ad->query_text,EINA_TRUE); + + ad->register_button = elm_button_add(ad->layout); + elm_object_text_set(ad->register_button, "Register"); + evas_object_size_hint_weight_set(ad->register_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ad->register_button, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(ad->register_button, "clicked", register_cb, ad); + elm_object_part_content_set(ad->layout,"register",ad->register_button); + //evas_object_show(ad->register_button); + + ad->clear_button = elm_button_add(ad->layout); + elm_object_text_set(ad->clear_button, "Clear"); + evas_object_size_hint_weight_set(ad->search_devices_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ad->search_devices_button, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(ad->clear_button, "clicked", clear_cb, ad); + elm_object_part_content_set(ad->layout,"clear",ad->clear_button); + //evas_object_show(ad->clear_button); + + ad->example_queries_label = elm_label_add(ad->layout); + elm_object_text_set(ad->example_queries_label, _("Example Queries")); + elm_object_part_content_set(ad->layout,"example_queries",ad->example_queries_label); + //evas_object_show(ad->example_queries_label); + + ad->search_devices_button = elm_button_add(ad->layout); + //evas_object_size_hint_align_set(ad->search_devices_button, EVAS_HINT_FILL, 0.0); + elm_object_text_set(ad->search_devices_button, "Search Devices"); + evas_object_smart_callback_add(ad->search_devices_button, "clicked", search_devices_cb, ad); + elm_object_part_content_set(ad->layout,"search_devices",ad->search_devices_button); + //evas_object_show(ad->search_devices_button); + + ad->discomfort_index_button = elm_button_add(ad->layout); + //evas_object_size_hint_align_set(ad->discomfort_index_button, EVAS_HINT_FILL, 0.0); + elm_object_part_content_set(ad->layout,"discomfort_index",ad->discomfort_index_button); + elm_object_text_set(ad->discomfort_index_button, "Discomfort Index"); + evas_object_smart_callback_add(ad->discomfort_index_button, "clicked", discomfort_index_cb, ad); + //evas_object_show(ad->discomfort_index_button); + + ad->unregister_query_label = elm_label_add(ad->layout); + elm_object_text_set(ad->unregister_query_label,_("Unregister Query")); + //evas_object_size_hint_weight_set(ad->unregister_query_label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_part_content_set(ad->layout,"unregister_query_label",ad->unregister_query_label); + //evas_object_show(ad->unregister_query_label); + + + ad->minus_button = elm_button_add(ad->layout); + //evas_object_size_hint_align_set(ad->discomfort_index_button, EVAS_HINT_FILL, 0.0); + elm_object_part_content_set(ad->layout,"minus",ad->minus_button); + elm_object_text_set(ad->minus_button, "-"); + evas_object_smart_callback_add(ad->minus_button, "clicked", minus_cb, ad); + //evas_object_show(ad->minus_button); + + ad->unregister_query_id = elm_entry_add(ad->layout); + elm_object_part_text_set(ad->unregister_query_id, "elm.guide", "Query id!!!"); + //evas_object_size_hint_align_set(ad->unregister_query_id, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_part_content_set(ad->layout,"unregister_query_id",ad->unregister_query_id); + elm_entry_input_panel_show_on_demand_set(ad->unregister_query_id,EINA_TRUE); + elm_entry_input_panel_layout_set(ad->unregister_query_id,ELM_INPUT_PANEL_LAYOUT_NUMBER); + evas_object_show(ad->unregister_query_id); + + ad->plus_button = elm_button_add(ad->layout); + //evas_object_size_hint_align_set(ad->discomfort_index_button, EVAS_HINT_FILL, 0.0); + elm_object_part_content_set(ad->layout,"plus",ad->plus_button); + elm_object_text_set(ad->plus_button, "+"); + evas_object_smart_callback_add(ad->plus_button, "clicked", plus_cb, ad); + //evas_object_show(ad->plus_button); + + ad->unregister_button = elm_button_add(ad->layout); + //evas_object_size_hint_align_set(ad->unregister_button, EVAS_HINT_FILL, 0.0); + elm_object_part_content_set(ad->layout,"unregister_button",ad->unregister_button); + elm_object_text_set(ad->unregister_button, "Unregister"); + evas_object_smart_callback_add(ad->unregister_button, "clicked", unregister_cb, ad); + //evas_object_show(ad->unregister_button); + + ad->clear_log_button = elm_button_add(ad->layout); + //evas_object_size_hint_align_set(ad->clear_log_button, EVAS_HINT_FILL, 0.0); + elm_object_part_content_set(ad->layout,"log_button",ad->clear_log_button); + elm_object_text_set(ad->clear_log_button, "Clear Log"); + evas_object_smart_callback_add(ad->clear_log_button, "clicked", clear_log_cb, ad); + //evas_object_show(ad->clear_log_button); + + ad->log = elm_entry_add(ad->layout); + elm_object_part_content_set(ad->layout,"log_text",ad->log); + elm_object_part_text_set(ad->log, "elm.guide", "Log messages will be update here!!!"); + elm_entry_scrollable_set(ad->log,EINA_TRUE); + elm_entry_editable_set(ad->log,EINA_FALSE); + //evas_object_size_hint_align_set(ad->log, EVAS_HINT_FILL, EVAS_HINT_FILL); + //evas_object_show(ad->log); + + elm_box_pack_end(ad->box, ad->layout); + evas_object_show(ad->layout); + elm_naviframe_item_push(ad->naviframe, "Soft Sensor Manager App", NULL, NULL, ad->scroller, NULL); + + //Show window after base gui is set up + evas_object_show(ad->win); + + dlog_print(DLOG_ERROR, LOG_TAG, oicapp_util_wifi()); +} + +static bool +app_create(void *data) +{ + /* Hook to take necessary actions before main event loop starts + Initialize UI resources and application's data + If this function returns true, the main loop of application starts + If this function returns false, the application is terminated */ + appdata_s *ad = (appdata_s *)data; + + std::string xmlDescription = "" + "" + "abcde123-31f8-11b4-a222-08002b34c050" + "MyPC" + "PC" + "" + ""; + + g_pQueryEngineEvent = new CQueryEngineEvent(ad); + + if (OIC::InitializeSSM(xmlDescription) == OIC::SSM_S_OK){ + dlog_print(DLOG_DEBUG, LOG_TAG, "#### InitializeSSM() returned SSM_S_OK"); + } + else{ + dlog_print(DLOG_DEBUG, LOG_TAG, "#### InitializeSSM() failed"); + } + + create_base_gui(ad); + + return true; +} + +static void +app_control(app_control_h app_control, void *data) +{ + /* Handle the launch request. */ + dlog_print(DLOG_INFO,LOG_TAG,"#### in app_control"); +} + +static void +app_pause(void *data) +{ + /* Take necessary actions when application becomes invisible. */ + dlog_print(DLOG_INFO,LOG_TAG,"#### in app_pause"); +} + +static void +app_resume(void *data) +{ + /* Take necessary actions when application becomes visible. */ + dlog_print(DLOG_INFO,LOG_TAG,"#### in app_resume"); +} + +static void +app_terminate(void *data) +{ + /* Release all resources. */ + dlog_print(DLOG_INFO,LOG_TAG,"#### in app_terminate"); + + if (OIC::TerminateSSM() == OIC::SSM_S_OK){ + dlog_print(DLOG_DEBUG, LOG_TAG, "#### TerminateSSM() returned SSM_S_OK"); + } + else{ + dlog_print(DLOG_DEBUG, LOG_TAG, "#### TerminateSSM() failed"); + } + + delete g_pQueryEngineEvent; +} + +static void +ui_app_lang_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LANGUAGE_CHANGED*/ + char *locale = NULL; + system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale); + elm_language_set(locale); + free(locale); + return; +} + +static void +ui_app_orient_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_DEVICE_ORIENTATION_CHANGED*/ + dlog_print(DLOG_INFO,LOG_TAG,"#### app orient changed"); + return; +} + +static void +ui_app_region_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_REGION_FORMAT_CHANGED*/ +} + +static void +ui_app_low_battery(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_BATTERY*/ +} + +static void +ui_app_low_memory(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_MEMORY*/ +} + +int +main(int argc, char *argv[]) +{ + appdata_s ad = {0,}; + int ret = 0; + + ui_app_lifecycle_callback_s event_callback = {0,}; + app_event_handler_h handlers[5] = {NULL, }; + + event_callback.create = app_create; + event_callback.terminate = app_terminate; + event_callback.pause = app_pause; + event_callback.resume = app_resume; + event_callback.app_control = app_control; + + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &ad); + ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, &ad); + ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]); + + ret = ui_app_main(argc, argv, &event_callback, &ad); + + if (ret != APP_ERROR_NONE) { + dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret); + } + + return ret; +} diff --git a/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/tizen-manifest.xml b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/tizen-manifest.xml new file mode 100644 index 0000000..837f70e --- /dev/null +++ b/service/soft-sensor-manager/SampleApp/tizen/SSMTesterApp/tizen-manifest.xml @@ -0,0 +1,12 @@ + + + + + ssmtesterapp.png + + + + http://tizen.org/privilege/internet + + true + -- 2.7.4