Publish OOBE code 1.0.0
authork.stepaniuk <k.stepaniuk@partner.samsung.com>
Fri, 11 Oct 2019 14:41:24 +0000 (16:41 +0200)
committerk.stepaniuk <k.stepaniuk@partner.samsung.com>
Fri, 11 Oct 2019 14:41:24 +0000 (16:41 +0200)
Signed-off-by: k.stepaniuk <k.stepaniuk@partner.samsung.com>
382 files changed:
.gitignore [new file with mode: 0644]
README.md [new file with mode: 0644]
WORKSPACE [new file with mode: 0644]
build_all.sh [new file with mode: 0644]
edje-common/oobe_button_definition.edc [new file with mode: 0644]
oobe-common/.cproject [new file with mode: 0644]
oobe-common/.gitignore [new file with mode: 0644]
oobe-common/.project [new file with mode: 0644]
oobe-common/.tproject [new file with mode: 0644]
oobe-common/inc/log.h [new file with mode: 0644]
oobe-common/inc/oobe-common.h [new file with mode: 0644]
oobe-common/inc/utils.h [new file with mode: 0644]
oobe-common/inc/utils_view.h [new file with mode: 0644]
oobe-common/project_def.prop [new file with mode: 0644]
oobe-common/src/oobe-common.c [new file with mode: 0644]
oobe-common/src/utils.c [new file with mode: 0644]
oobe-common/src/utils_view.c [new file with mode: 0644]
oobe-country/.cproject [new file with mode: 0644]
oobe-country/.exportMap [new file with mode: 0644]
oobe-country/.package-stamp [new file with mode: 0644]
oobe-country/.project [new file with mode: 0644]
oobe-country/.tproject [new file with mode: 0644]
oobe-country/build_def.prop [new file with mode: 0644]
oobe-country/inc/app-control.h [new file with mode: 0644]
oobe-country/inc/data.h [new file with mode: 0644]
oobe-country/inc/oobe-country.h [new file with mode: 0644]
oobe-country/inc/view-defines.h [new file with mode: 0644]
oobe-country/inc/view.h [new file with mode: 0644]
oobe-country/inc/xml-loader.h [new file with mode: 0644]
oobe-country/project_def.prop [new file with mode: 0644]
oobe-country/res/data/countries_OOBE.xml [new file with mode: 0644]
oobe-country/res/edje/country.edc [new file with mode: 0644]
oobe-country/res/fonts/SamsungOneUI-300_v1.0.ttf [new file with mode: 0644]
oobe-country/res/fonts/SamsungOneUI-400_v1.0.ttf [new file with mode: 0644]
oobe-country/res/fonts/SamsungOneUI-800_v1.0.ttf [new file with mode: 0644]
oobe-country/res/images/bg.png [new file with mode: 0644]
oobe-country/res/images/list_bg.png [new file with mode: 0644]
oobe-country/res/po/en_US.po [new file with mode: 0644]
oobe-country/res/po/pl_PL.po [new file with mode: 0644]
oobe-country/shared/res/oobe-country.png [new file with mode: 0644]
oobe-country/src/app-control.c [new file with mode: 0644]
oobe-country/src/data.c [new file with mode: 0644]
oobe-country/src/oobe-country.c [new file with mode: 0644]
oobe-country/src/view.c [new file with mode: 0644]
oobe-country/src/xml-loader.c [new file with mode: 0644]
oobe-country/tizen-manifest.xml [new file with mode: 0644]
oobe-easy-setup/.cproject [new file with mode: 0644]
oobe-easy-setup/.exportMap [new file with mode: 0644]
oobe-easy-setup/.project [new file with mode: 0644]
oobe-easy-setup/.settings/org.eclipse.cdt.codan.core.prefs [new file with mode: 0644]
oobe-easy-setup/.settings/org.eclipse.cdt.managedbuilder.core.prefs [new file with mode: 0644]
oobe-easy-setup/.tproject [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/ApiResult.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/ApiUtils.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/DLog.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/Error.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/Logger.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/Logger.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/Result.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/Strings.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/Strings.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/ThreadUtils.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/ThreadUtils.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/AppControl.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/AppControl.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/AppException.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/AppException.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/Resource.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/Resource.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/ServiceApp.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/ServiceApp.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/UiApp.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/application/UiApp.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/key_manager/KeyManager.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/key_manager/KeyManager.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/macros.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Adapter.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Adapter.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/AdvertiserLE.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/AdvertiserLE.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DeviceInfo.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DeviceInfo.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DiscoveryInfo.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DiscoveryInfo.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Exceptions.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Exceptions.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Manager.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Manager.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/softap/Client.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/softap/Client.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/softap/Exception.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/softap/Manager.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/softap/Manager.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/wifi/Ap.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/wifi/Ap.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/wifi/Exception.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/wifi/Exception.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/wifi/Manager.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/wifi/Manager.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/wifi/SpecificScan.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/network/wifi/SpecificScan.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/GpioException.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/GpioException.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/Pin.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/Pin.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/Spi.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/Spi.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/SpiException.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/SpiException.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/timer/Timer.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/timer/Timer.hpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/timer/TimerException.cpp [new file with mode: 0644]
oobe-easy-setup/api-cpp/src/tizen/timer/TimerException.hpp [new file with mode: 0644]
oobe-easy-setup/edje/fonts/SamsungOneUI-300_v1.0.ttf [new file with mode: 0644]
oobe-easy-setup/edje/fonts/SamsungOneUI-400C_v1.0.ttf [new file with mode: 0644]
oobe-easy-setup/edje/fonts/SamsungOneUI-400_v3.0.ttf [new file with mode: 0644]
oobe-easy-setup/edje/fonts/SamsungOneUI-600_v3.0.ttf [new file with mode: 0644]
oobe-easy-setup/edje/fonts/SamsungOneUI-800_v1.0.ttf [new file with mode: 0644]
oobe-easy-setup/edje/images/bg.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/bubble_triangle.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/door.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/gears.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/icon_phone.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/phone_image_left.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/phone_image_right.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/puls_circle.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/rect100x100.png [new file with mode: 0644]
oobe-easy-setup/edje/images/es/smartthings_logo.png [new file with mode: 0644]
oobe-easy-setup/edje/images/oobe_button/arrow_left.png [new file with mode: 0644]
oobe-easy-setup/edje/images/oobe_button/arrow_right.png [new file with mode: 0644]
oobe-easy-setup/edje/images/oobe_button/button_circle_32.png [new file with mode: 0644]
oobe-easy-setup/edje/images/oobe_button/button_circle_60.png [new file with mode: 0644]
oobe-easy-setup/edje/images/oobe_button/button_shadow_77.png [new file with mode: 0644]
oobe-easy-setup/inc/AppUtils.hpp [new file with mode: 0644]
oobe-easy-setup/inc/EasySetup.hpp [new file with mode: 0644]
oobe-easy-setup/inc/EasySetupEvent.hpp [new file with mode: 0644]
oobe-easy-setup/inc/EasySetupEventAdapter.hpp [new file with mode: 0644]
oobe-easy-setup/inc/ErrorType.hpp [new file with mode: 0644]
oobe-easy-setup/inc/OobeEasySetupApp.hpp [new file with mode: 0644]
oobe-easy-setup/inc/OobeEasySetupMain.hpp [new file with mode: 0644]
oobe-easy-setup/inc/StateManager.hpp [new file with mode: 0644]
oobe-easy-setup/inc/TestUIViewEventAdapter.hpp [new file with mode: 0644]
oobe-easy-setup/inc/View.hpp [new file with mode: 0644]
oobe-easy-setup/inc/ViewDefines.hpp [new file with mode: 0644]
oobe-easy-setup/inc/ViewEventAdapter.hpp [new file with mode: 0644]
oobe-easy-setup/inc/ViewEventObserver.hpp [new file with mode: 0644]
oobe-easy-setup/inc/ViewManager.hpp [new file with mode: 0644]
oobe-easy-setup/inc/ViewTypes.hpp [new file with mode: 0644]
oobe-easy-setup/inc/abstractions/HomeAP.hpp [new file with mode: 0644]
oobe-easy-setup/inc/abstractions/SASigner.hpp [new file with mode: 0644]
oobe-easy-setup/inc/abstractions/SoftAP.hpp [new file with mode: 0644]
oobe-easy-setup/inc/common/Observable.hpp [new file with mode: 0644]
oobe-easy-setup/inc/common/Observer.hpp [new file with mode: 0644]
oobe-easy-setup/inc/connectivity/TizenHomeAP.hpp [new file with mode: 0644]
oobe-easy-setup/inc/connectivity/TizenSoftAP.hpp [new file with mode: 0644]
oobe-easy-setup/inc/logger.h [new file with mode: 0644]
oobe-easy-setup/inc/popups/PopupSkip.hpp [new file with mode: 0644]
oobe-easy-setup/inc/smartthings.h [new file with mode: 0644]
oobe-easy-setup/inc/views/ViewAdvertisement.hpp [new file with mode: 0644]
oobe-easy-setup/inc/views/ViewAutoConfiguration.hpp [new file with mode: 0644]
oobe-easy-setup/inc/views/ViewConnectedToSoftAP.hpp [new file with mode: 0644]
oobe-easy-setup/inc/views/ViewError.hpp [new file with mode: 0644]
oobe-easy-setup/inc/views/ViewPin.hpp [new file with mode: 0644]
oobe-easy-setup/inc/views/ViewStart.hpp [new file with mode: 0644]
oobe-easy-setup/inc/views/ViewSuccess.hpp [new file with mode: 0644]
oobe-easy-setup/lib/libst_thing_master_api.so [new file with mode: 0644]
oobe-easy-setup/project_def.prop [new file with mode: 0644]
oobe-easy-setup/res/edje/advertisement.edc [new file with mode: 0644]
oobe-easy-setup/res/edje/auto_configuration.edc [new file with mode: 0644]
oobe-easy-setup/res/edje/common_definitions.h [new file with mode: 0644]
oobe-easy-setup/res/edje/connected_to_softap.edc [new file with mode: 0644]
oobe-easy-setup/res/edje/error.edc [new file with mode: 0644]
oobe-easy-setup/res/edje/oobe_button.edc [new file with mode: 0644]
oobe-easy-setup/res/edje/pin.edc [new file with mode: 0644]
oobe-easy-setup/res/edje/start.edc [new file with mode: 0644]
oobe-easy-setup/res/po/en_US.po [new file with mode: 0644]
oobe-easy-setup/res/po/pl_PL.po [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApInfo.cpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApInfo.hpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApList.cpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApList.hpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/CloudInfo.cpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/CloudInfo.hpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/DeviceProvInfo.cpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/DeviceProvInfo.hpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/Master.cpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/Master.hpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/SmartThingsThingExceptions.cpp [new file with mode: 0644]
oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/SmartThingsThingExceptions.hpp [new file with mode: 0644]
oobe-easy-setup/shared/res/master.json [new file with mode: 0644]
oobe-easy-setup/shared/res/oobe-easy-setup.png [new file with mode: 0644]
oobe-easy-setup/src/AppUtils.cpp [new file with mode: 0644]
oobe-easy-setup/src/EasySetup.cpp [new file with mode: 0644]
oobe-easy-setup/src/EasySetupEventAdapter.cpp [new file with mode: 0644]
oobe-easy-setup/src/OobeEasySetupApp.cpp [new file with mode: 0644]
oobe-easy-setup/src/OobeEasySetupMain.cpp [new file with mode: 0644]
oobe-easy-setup/src/StateManager.cpp [new file with mode: 0644]
oobe-easy-setup/src/TestUIViewEventAdapter.cpp [new file with mode: 0644]
oobe-easy-setup/src/ViewEventAdapter.cpp [new file with mode: 0644]
oobe-easy-setup/src/ViewEventObserver.cpp [new file with mode: 0644]
oobe-easy-setup/src/ViewManager.cpp [new file with mode: 0644]
oobe-easy-setup/src/connectivity/TizenHomeAP.cpp [new file with mode: 0644]
oobe-easy-setup/src/connectivity/TizenSoftAP.cpp [new file with mode: 0644]
oobe-easy-setup/src/popups/PopupSkip.cpp [new file with mode: 0644]
oobe-easy-setup/src/views/ViewAdertisement.cpp [new file with mode: 0644]
oobe-easy-setup/src/views/ViewAutoConfiguration.cpp [new file with mode: 0644]
oobe-easy-setup/src/views/ViewConnectedToSoftAP.cpp [new file with mode: 0644]
oobe-easy-setup/src/views/ViewError.cpp [new file with mode: 0644]
oobe-easy-setup/src/views/ViewPin.cpp [new file with mode: 0644]
oobe-easy-setup/src/views/ViewStart.cpp [new file with mode: 0644]
oobe-easy-setup/tizen-manifest.xml [new file with mode: 0644]
oobe-language/.cproject [new file with mode: 0644]
oobe-language/.exportMap [new file with mode: 0644]
oobe-language/.project [new file with mode: 0644]
oobe-language/.tproject [new file with mode: 0644]
oobe-language/build_def.prop [new file with mode: 0644]
oobe-language/inc/app-control.h [new file with mode: 0644]
oobe-language/inc/data.h [new file with mode: 0644]
oobe-language/inc/oobe-language.h [new file with mode: 0644]
oobe-language/inc/view-defines.h [new file with mode: 0644]
oobe-language/inc/view.h [new file with mode: 0644]
oobe-language/inc/xml-loader.h [new file with mode: 0644]
oobe-language/project_def.prop [new file with mode: 0644]
oobe-language/res/data/languages_OOBE.xml [new file with mode: 0644]
oobe-language/res/edje/oobe-language.edc [new file with mode: 0644]
oobe-language/res/fonts/SamsungOneUI-300_v1.0.ttf [new file with mode: 0644]
oobe-language/res/fonts/SamsungOneUI-400_v1.0.ttf [new file with mode: 0644]
oobe-language/res/fonts/SamsungOneUI-800_v1.0.ttf [new file with mode: 0644]
oobe-language/res/images/bg.png [new file with mode: 0644]
oobe-language/res/images/list_bg.png [new file with mode: 0644]
oobe-language/res/po/en_US.po [new file with mode: 0644]
oobe-language/res/po/pl_PL.po [new file with mode: 0644]
oobe-language/shared/res/oobe-language.png [new file with mode: 0644]
oobe-language/src/app-control.c [new file with mode: 0644]
oobe-language/src/data.c [new file with mode: 0644]
oobe-language/src/oobe-language.c [new file with mode: 0644]
oobe-language/src/view.c [new file with mode: 0644]
oobe-language/src/xml-loader.c [new file with mode: 0644]
oobe-language/tizen-manifest.xml [new file with mode: 0644]
oobe-setup/.cproject [new file with mode: 0644]
oobe-setup/.exportMap [new file with mode: 0644]
oobe-setup/.package-stamp [new file with mode: 0644]
oobe-setup/.project [new file with mode: 0644]
oobe-setup/.tproject [new file with mode: 0644]
oobe-setup/build_def.prop [new file with mode: 0644]
oobe-setup/edje/fonts/SamsungOneUI-300_v1.0.ttf [new file with mode: 0644]
oobe-setup/edje/fonts/SamsungOneUI-400C_v1.0.ttf [new file with mode: 0644]
oobe-setup/edje/fonts/SamsungOneUI-400_v1.0.ttf [new file with mode: 0644]
oobe-setup/edje/fonts/SamsungOneUI-400_v3.0.ttf [new file with mode: 0644]
oobe-setup/edje/fonts/SamsungOneUI-600_v3.0.ttf [new file with mode: 0644]
oobe-setup/edje/fonts/SamsungOneUI-800_v1.0.ttf [new file with mode: 0644]
oobe-setup/edje/images/bg.png [new file with mode: 0644]
oobe-setup/edje/images/door.png [new file with mode: 0644]
oobe-setup/edje/images/oobe_button/arrow_left.png [new file with mode: 0644]
oobe-setup/edje/images/oobe_button/arrow_right.png [new file with mode: 0644]
oobe-setup/edje/images/oobe_button/button.png [new file with mode: 0644]
oobe-setup/edje/images/oobe_button/button_circle_32.png [new file with mode: 0644]
oobe-setup/edje/images/oobe_button/button_circle_60.png [new file with mode: 0644]
oobe-setup/edje/images/oobe_button/button_shadow_77.png [new file with mode: 0644]
oobe-setup/inc/app-control.h [new file with mode: 0644]
oobe-setup/inc/oobe-setup.h [new file with mode: 0644]
oobe-setup/inc/oobe.h [new file with mode: 0644]
oobe-setup/inc/view-defines.h [new file with mode: 0644]
oobe-setup/inc/view.h [new file with mode: 0644]
oobe-setup/project_def.prop [new file with mode: 0644]
oobe-setup/res/edje/main.edc [new file with mode: 0644]
oobe-setup/res/edje/oobe_button.edc [new file with mode: 0644]
oobe-setup/shared/res/oobe-setup.png [new file with mode: 0644]
oobe-setup/src/app-control.c [new file with mode: 0644]
oobe-setup/src/country.c [new file with mode: 0644]
oobe-setup/src/done.c [new file with mode: 0644]
oobe-setup/src/easy-setup.c [new file with mode: 0644]
oobe-setup/src/language.c [new file with mode: 0644]
oobe-setup/src/oobe-setup.c [new file with mode: 0644]
oobe-setup/src/terms.c [new file with mode: 0644]
oobe-setup/src/view.c [new file with mode: 0644]
oobe-setup/src/wifi.c [new file with mode: 0644]
oobe-setup/tizen-manifest.xml [new file with mode: 0644]
oobe-terms-service/.cproject [new file with mode: 0644]
oobe-terms-service/.exportMap [new file with mode: 0644]
oobe-terms-service/.project [new file with mode: 0644]
oobe-terms-service/.settings/org.eclipse.cdt.codan.core.prefs [new file with mode: 0644]
oobe-terms-service/.tproject [new file with mode: 0644]
oobe-terms-service/build_def.prop [new file with mode: 0644]
oobe-terms-service/inc/data.h [new file with mode: 0644]
oobe-terms-service/inc/http-get.h [new file with mode: 0644]
oobe-terms-service/inc/oobe-terms-service.h [new file with mode: 0644]
oobe-terms-service/inc/oobe.h [new file with mode: 0644]
oobe-terms-service/inc/terms.h [new file with mode: 0644]
oobe-terms-service/project_def.prop [new file with mode: 0644]
oobe-terms-service/res/data/terms_server_url [new file with mode: 0644]
oobe-terms-service/shared/res/oobe-terms-service.png [new file with mode: 0644]
oobe-terms-service/src/data.c [new file with mode: 0644]
oobe-terms-service/src/http-get.c [new file with mode: 0644]
oobe-terms-service/src/oobe-terms-service.c [new file with mode: 0644]
oobe-terms-service/src/terms.c [new file with mode: 0644]
oobe-terms-service/tizen-manifest.xml [new file with mode: 0644]
oobe-terms/.cproject [new file with mode: 0644]
oobe-terms/.exportMap [new file with mode: 0644]
oobe-terms/.package-stamp [new file with mode: 0644]
oobe-terms/.project [new file with mode: 0644]
oobe-terms/.tproject [new file with mode: 0644]
oobe-terms/build_def.prop [new file with mode: 0644]
oobe-terms/edje/fonts/SamsungOneUI-300_v1.0.ttf [new file with mode: 0644]
oobe-terms/edje/fonts/SamsungOneUI-400C_v1.0.ttf [new file with mode: 0644]
oobe-terms/edje/fonts/SamsungOneUI-400_v3.0.ttf [new file with mode: 0644]
oobe-terms/edje/fonts/SamsungOneUI-600_v3.0.ttf [new file with mode: 0644]
oobe-terms/edje/fonts/SamsungOneUI-800_v1.0.ttf [new file with mode: 0644]
oobe-terms/edje/images/bg.png [new file with mode: 0644]
oobe-terms/edje/images/list_bg.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_button/arrow_left.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_button/arrow_right.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_button/button.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_button/button_circle_32.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_button/button_circle_60.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_button/button_shadow_77.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_checkbox/core_check_bg.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_checkbox/core_check_bg_press.png [new file with mode: 0644]
oobe-terms/edje/images/oobe_checkbox/core_check_icon.png [new file with mode: 0644]
oobe-terms/inc/app-control.h [new file with mode: 0644]
oobe-terms/inc/data.h [new file with mode: 0644]
oobe-terms/inc/oobe-terms.h [new file with mode: 0644]
oobe-terms/inc/terms.h [new file with mode: 0644]
oobe-terms/inc/view-defines.h [new file with mode: 0644]
oobe-terms/inc/view.h [new file with mode: 0644]
oobe-terms/project_def.prop [new file with mode: 0644]
oobe-terms/res/data/initial_terms.json [new file with mode: 0644]
oobe-terms/res/edje/oobe_button.edc [new file with mode: 0644]
oobe-terms/res/edje/oobe_checkbox.edc [new file with mode: 0644]
oobe-terms/res/edje/terms.edc [new file with mode: 0644]
oobe-terms/res/edje/terms_list_item.edc [new file with mode: 0644]
oobe-terms/res/po/en_US.po [new file with mode: 0644]
oobe-terms/res/po/pl_PL.po [new file with mode: 0644]
oobe-terms/shared/res/oobe-terms.png [new file with mode: 0644]
oobe-terms/src/app-control.c [new file with mode: 0644]
oobe-terms/src/data.c [new file with mode: 0644]
oobe-terms/src/oobe-terms.c [new file with mode: 0644]
oobe-terms/src/terms.c [new file with mode: 0644]
oobe-terms/src/view.c [new file with mode: 0644]
oobe-terms/tizen-manifest.xml [new file with mode: 0644]
oobe-wifi/.cproject [new file with mode: 0644]
oobe-wifi/.exportMap [new file with mode: 0644]
oobe-wifi/.package-stamp [new file with mode: 0644]
oobe-wifi/.project [new file with mode: 0644]
oobe-wifi/.settings/org.eclipse.cdt.core.prefs [new file with mode: 0644]
oobe-wifi/.tproject [new file with mode: 0644]
oobe-wifi/build_def.prop [new file with mode: 0644]
oobe-wifi/edje/fonts/SamsungOneUI-300_v1.0.ttf [new file with mode: 0644]
oobe-wifi/edje/fonts/SamsungOneUI-400C_v1.0.ttf [new file with mode: 0644]
oobe-wifi/edje/fonts/SamsungOneUI-400_v3.0.ttf [new file with mode: 0644]
oobe-wifi/edje/fonts/SamsungOneUI-600_v3.0.ttf [new file with mode: 0644]
oobe-wifi/edje/fonts/SamsungOneUI-800_v1.0.ttf [new file with mode: 0644]
oobe-wifi/edje/images/bg.png [new file with mode: 0644]
oobe-wifi/edje/images/image_1.png [new file with mode: 0644]
oobe-wifi/edje/images/list_bg.png [new file with mode: 0644]
oobe-wifi/edje/images/oobe_button/arrow_left.png [new file with mode: 0644]
oobe-wifi/edje/images/oobe_button/arrow_right.png [new file with mode: 0644]
oobe-wifi/edje/images/oobe_button/button_circle_32.png [new file with mode: 0644]
oobe-wifi/edje/images/oobe_button/button_circle_60.png [new file with mode: 0644]
oobe-wifi/edje/images/oobe_button/button_shadow_77.png [new file with mode: 0644]
oobe-wifi/edje/images/wifi_shadow (old).png [new file with mode: 0644]
oobe-wifi/edje/images/wifi_shadow.png [new file with mode: 0644]
oobe-wifi/inc/app-control.h [new file with mode: 0644]
oobe-wifi/inc/oobe-wifi.h [new file with mode: 0644]
oobe-wifi/inc/view-defines.h [new file with mode: 0644]
oobe-wifi/inc/view.h [new file with mode: 0644]
oobe-wifi/inc/wifi.h [new file with mode: 0644]
oobe-wifi/project_def.prop [new file with mode: 0644]
oobe-wifi/res/edje/oobe-wifi.edc [new file with mode: 0644]
oobe-wifi/res/edje/oobe_button.edc [new file with mode: 0644]
oobe-wifi/res/po/en_US.po [new file with mode: 0644]
oobe-wifi/res/po/pl_PL.po [new file with mode: 0644]
oobe-wifi/shared/res/oobe-wifi.png [new file with mode: 0644]
oobe-wifi/src/app-control.c [new file with mode: 0644]
oobe-wifi/src/oobe-wifi.c [new file with mode: 0644]
oobe-wifi/src/view.c [new file with mode: 0644]
oobe-wifi/src/wifi.c [new file with mode: 0644]
oobe-wifi/tizen-manifest.xml [new file with mode: 0644]
sam_cli.cfg [new file with mode: 0644]
terms-server/index.html [new file with mode: 0644]
terms-server/index.js [new file with mode: 0644]
terms-server/project.json [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..dd661c1
--- /dev/null
@@ -0,0 +1,14 @@
+Debug
+.rds_delta
+.sdk_delta.info
+.sign/
+crash-info/
+
+SA_Report/
+.vscode/
+.metadata/
+.log/
+.scap/
+.scra-ir/
+output/
+Build/
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..2e39e01
--- /dev/null
+++ b/README.md
@@ -0,0 +1,17 @@
+# C-OOBE
+## Building using Tizen SDK and ABS tool
+### Prequisitions
+1. Tizen Studio installed.
+1. mobile-5.0-device.core.private rootstrap installed.
+2. Created security profile with Certificate Manager.
+### ABS Setup
+1. Clone abs repository from Tizen.org
+   https://review.tizen.org/gerrit/#/admin/projects/scm/meta/abs
+2. Add abs directory to your PATH env variable;
+```
+export PATH=$PATH:~/path-to-abs-repo/
+```
+### Building (from repository root directory)
+```
+abs build -t tpk --sdkpath ~/tizen-studio -r mobile-5.0-device.core.private -s <name-of-security-profile>
+```
diff --git a/WORKSPACE b/WORKSPACE
new file mode 100644 (file)
index 0000000..78af0e8
--- /dev/null
+++ b/WORKSPACE
@@ -0,0 +1,6 @@
+oobe-country
+oobe-language
+oobe-terms
+oobe-terms-service
+oobe-wifi
+oobe-setup
diff --git a/build_all.sh b/build_all.sh
new file mode 100644 (file)
index 0000000..44e6024
--- /dev/null
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+ARCH=arm
+ROOTSTRAP=iot-headed-5.0-device.core
+ROOTSTRAP_PRIVATE=mobile-5.0-device.core.private
+REL=Debug
+
+exit_on_error()
+{
+       if [ $1 != 0 ]; then
+               echo $2
+               exit 1
+       fi
+}
+
+require_command()
+{
+       command -v $1 &> /dev/null
+       if [ $? != 0 ]; then
+               echo "Command not found: '$1', please install and add executable to your PATH"
+               exit 1
+       fi
+}
+
+clean()
+{
+       cd $1
+       tizen clean
+       cd -
+}
+
+build()
+{
+       exit_on_error $?
+       tizen build-native -C "$REL" -a "$ARCH" -r "$ROOTSTRAP" -- $1
+       exit_on_error $?
+}
+
+build_private()
+{
+       exit_on_error $?
+       tizen build-native -C "$REL" -a "$ARCH" -r "$ROOTSTRAP_PRIVATE" -- $1
+       exit_on_error $?
+}
+
+package()
+{
+       tizen package -t tpk -- $1/$REL
+       exit_on_error $?
+}
+
+require_command tizen
+
+clean oobe-language
+clean oobe-country
+clean oobe-terms
+clean oobe-wifi
+clean oobe-setup
+
+build_private oobe-language
+build_private oobe-country
+build_private oobe-easy-setup
+build_private oobe-terms
+build_private oobe-wifi
+build_private oobe-setup
diff --git a/edje-common/oobe_button_definition.edc b/edje-common/oobe_button_definition.edc
new file mode 100644 (file)
index 0000000..2972179
--- /dev/null
@@ -0,0 +1,542 @@
+#define COLOR_GREEN_DARK 40 128 84 255 
+#define COLOR_GREEN_LIGHT 40 128 84 150 
+#define COLOR_GRAY 200 200 200 255
+#define COLOR_WHITE 255 255 255 255
+#define COLOR_BLACK 0 0 0 255
+#define COLOR_GRAY_LIGHT 230 238 236 255
+#define COLOR_WILLOW_GREEN_LIGHT 206 229 223 255
+#define COLOR_GRAY_MID 181 182 182 255
+#define COLOR_WILLOW_GREEN 180 204 198 255
+#define COLOR_GREEN_MID 122 159 150 255
+#define COLOR_TRANSPARENT 0 0 0 0
+#define COLOR_EMERALD 32 82 71 255
+#define COLOR_BLACK_HALF_TRANSPARENT 0 0 0 127
+
+
+#define BACK_NORMAL 255 255 255 255
+#define BACK_PRESSED 232 253 242 255
+
+#define SKIP_NORMAL 129 174 151 255
+#define SKIP_PRESSED 66 110 87 255
+#define SKIP_DISABLED 181 181 181 255
+
+#define NEXT_NORMAL 44 127 85 255
+#define NEXT_PRESSED 33 86 72 255
+#define NEXT_DISABLED 181 181 181 255
+
+#define VIEW_DETAILS_NORMAL 225 234 229 255
+#define VIEW_DETAILS_PRESSED 193 209 200 255
+
+#define IMAGE_BUTTON_CIRCLE_60 "oobe_button/button_circle_60.png"
+#define IMAGE_BUTTON_CIRCLE_32 "oobe_button/button_circle_32.png"
+#define IMAGE_SHADOW_CIRCLE "oobe_button/button_shadow_77.png"
+
+#define IMAGE_ARROW_RIGHT "oobe_button/arrow_right.png"
+#define IMAGE_ARROW_LEFT "oobe_button/arrow_left.png"
+
+#define SAMSUNG_ONE_300_FILE "SamsungOneUI-300_v1.0.ttf"
+#define SAMSUNG_ONE_400_FILE "SamsungOneUI-400_v3.0.ttf"
+#define SAMSUNG_ONE_400C_FILE "SamsungOneUI-400C_v1.0.ttf"
+#define SAMSUNG_ONE_600_FILE "SamsungOneUI-600_v3.0.ttf"
+#define SAMSUNG_ONE_800_FILE "SamsungOneUI-800_v1.0.ttf"
+
+#define SAMSUNG_ONE_300 "samsung-one-300"
+#define SAMSUNG_ONE_400 "samsung-one-400"
+#define SAMSUNG_ONE_400C "samsung-one-400c"
+#define SAMSUNG_ONE_600 "samsung-one-600"
+#define SAMSUNG_ONE_800 "samsung-one-800"
+
+#define YES_FONT SAMSUNG_ONE_400
+#define YES_FONT_SIZE 24
+#define YES_TEXT "Yes"
+#define YES_TEXT_COLOR COLOR_EMERALD
+
+#define YES_BG_DEFAULT COLOR_GRAY_LIGHT
+#define YES_BG_CLICKED COLOR_WILLOW_GREEN_LIGHT
+
+#define NO_FONT SAMSUNG_ONE_600
+#define NO_FONT_SIZE 24
+#define NO_TEXT "No"
+#define NO_TEXT_COLOR COLOR_EMERALD
+
+#define NO_BG_DEFAULT COLOR_WILLOW_GREEN
+#define NO_BG_CLICKED COLOR_GREEN_MID
+
+#define YES_NO_BTN_WIDTH 259
+#define YES_NO_BTN_HEIGHT 60
+
+collections {
+       base_scale: 1.8;
+
+       fonts {
+               font: SAMSUNG_ONE_300_FILE SAMSUNG_ONE_300;
+               font: SAMSUNG_ONE_400_FILE SAMSUNG_ONE_400;
+               font: SAMSUNG_ONE_400C_FILE SAMSUNG_ONE_400C;
+       font: SAMSUNG_ONE_600_FILE SAMSUNG_ONE_600;
+       font: SAMSUNG_ONE_800_FILE SAMSUNG_ONE_800;
+       }
+       
+       styles { 
+               style { 
+                       name: "button_text_style";
+                       base: "font="SAMSUNG_ONE_800" font_size=30 color=#ffffff wrap=mixed align=center valign=center linegap=0";
+                       tag: "b" "+ font_weight=Bold";
+               }
+               style { 
+                       name: "view_details_style";
+                       base: "font="SAMSUNG_ONE_300" font_size=15 color=#000000 wrap=mixed align=center valign=center linegap=0";
+               }
+       }
+
+       group {
+               name: "elm/button/base/oobe";
+               inherit_only: 1;
+               images {
+                       image: IMAGE_SHADOW_CIRCLE COMP;
+                       image: IMAGE_BUTTON_CIRCLE_60 COMP;
+                       image: IMAGE_ARROW_RIGHT COMP;
+                       image: IMAGE_ARROW_LEFT COMP;
+               }
+               parts {
+                       rect {
+                               desc { "default";
+                                       rel.to: "shadow";
+                                       color: 255 0 0 0;
+                               }
+                       }
+                       image { "shadow"
+                               desc { "default";
+                                       image.normal: IMAGE_SHADOW_CIRCLE;
+                                       image.border: 38 38 38 38;
+                                       color: COLOR_GREEN_DARK;
+                                       max: -1 77;
+                                       rel.to: "bg";
+                                       rel1.offset: -5 11;
+                                       rel2.offset: 5 11;
+                               }
+                       }
+                       image { "bg"
+                               desc { "default";
+                                       image.normal: IMAGE_BUTTON_CIRCLE_60;
+                                       image.border: 30 30 30 30;
+                                       color: SKIP_NORMAL;
+                                       max: -1 60;
+                                       align: 0.5 0.5;
+                               }
+                               desc { "disabled";
+                                       inherit: "default";
+                                       color: SKIP_DISABLED;
+                               }
+                               desc { "clicked";
+                                       inherit: "default";
+                                       color: SKIP_PRESSED;
+                               }
+                       }
+                       textblock { "elm.text";
+                               desc { "default";
+                                       rel.to: "bg";
+                                       min: 1 1;
+                                       text {
+                                               align: 0.5 0.5;
+                                               elipsis: -1;
+                                               text: "?";
+                                               style: "button_text_style";
+                                       }
+                               }
+                       }
+                       rect { "over"
+                               desc { "default"
+                                       color: 0 0 0 0;
+                                       rel.to: "bg";
+                                       vis;
+                               }
+                               desc { "disabled"
+                                       inherit: "default";
+                                       hid;
+                               }
+                       }
+               }
+               programs {
+                       program { "down"
+                               signal: "mouse,down,*";
+                               source: "over";
+                               action: STATE_SET "clicked";
+                               target: "bg";
+                               after: button_press;
+                       }
+                       program { "up"
+                               signal: "mouse,up,*";
+                               source: "over";
+                               action: STATE_SET "default";
+                               target: "bg";
+                               after: button_unpress;
+                               after: button_click;
+                       }
+                       program { "enable"
+                               signal: "elm,state,enabled";
+                               source: "elm";
+                               action: STATE_SET "default";
+                               target: "bg";
+                               target: "over";
+                               target: "elm.text";                             
+                       }
+                       program { "disable"
+                               signal: "elm,state,disabled";
+                               source: "elm";
+                               action: STATE_SET "disabled";
+                               target: "bg";
+                               target: "over";
+                               target: "elm.text";                             
+                       }
+                       
+                       program { "button_press"
+                               action: SIGNAL_EMIT "elm,action,press" "";
+                       }
+                       program { "button_unpress"
+                               action: SIGNAL_EMIT "elm,action,unpress" "";
+                       }
+                       program { "button_click"
+                               action: SIGNAL_EMIT "elm,action,click" "";
+                       }
+               }
+       } // group oobe
+       
+       group {
+               name: "elm/button/base/viewdetails";
+               inherit: "elm/button/base/oobe";
+               images {
+                       image: IMAGE_BUTTON_CIRCLE_32 COMP;
+               }
+               parts {
+                       image { "bg"
+                               desc { "default";
+                                       image.normal: IMAGE_BUTTON_CIRCLE_32;
+                                       image.border: 16 16 16 16;
+                                       color: VIEW_DETAILS_NORMAL;
+                                       max: -1 32;
+                               }
+                               desc { "clicked";
+                                       inherit: "default";
+                                       color: VIEW_DETAILS_PRESSED;
+                               }
+                       }
+                       image { "shadow";
+                               desc { "default";
+                                       hid;
+                               }
+                       }
+                       textblock { "elm.text";
+                               desc { "default";
+                                       text {
+                                               align: 0.5 0.5;
+                                               text: "?";
+                                               style: "view_details_style";
+                                       }
+                               }
+                       }
+               }
+       } // group viewdetails
+       
+       group {
+               name: "elm/button/base/left";
+               inherit: "elm/button/base/oobe";
+               inherit_only: 1;
+               parts {
+                       image { "bg"
+                               desc { "default"
+                                       rel2.to_x: "elm.text";
+                                       rel2.relative: 1.0 1.0;
+                                       rel2.offset: 30 0;
+                               }
+                               desc { "clicked"
+                                       inherit: "default";
+                               }
+                               desc { "disabled"
+                                       inherit: "default";
+                               }
+                       }
+                       textblock { "elm.text";
+                               desc { "default";
+                                       rel1.offset: 20 0;
+                                       rel1.to_x: "arrow";
+                                       rel1.relative: 1.0 0.0;
+                                       align: 0.0 0.5;
+                                       text {
+                                               style: "button_text_style";
+                                               max: 1 0;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                       }
+                       image { "arrow"
+                               desc { "default";
+                                       image.normal: IMAGE_ARROW_LEFT;
+                                       rel1.offset: 30 0;
+                                       align: 0.0 0.5;
+                                       min: 24 38;
+                                       max: 24 38;
+                               }
+                       }
+
+               }
+       } // group left
+
+       group {
+               name: "elm/button/base/middle";
+               inherit: "elm/button/base/oobe";
+               inherit_only: 1;
+               parts {
+                       image { "bg"
+                               desc { "default"
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                               }
+                               desc { "clicked"
+                                       inherit: "default";
+                               }
+                               desc { "disabled"
+                                       inherit: "default";
+                               }
+                       }
+                       textblock { "elm.text"
+                               desc { "default"
+                                       align: 0.5 0.5;
+                                       text {
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+               }
+       } // group middle
+
+       group {
+               name: "elm/button/base/right";
+               inherit: "elm/button/base/oobe";
+               inherit_only: 1;
+               parts {
+                       image { "bg"
+                               desc { "default"
+                                       rel1.to_x: "elm.text";
+                                       rel1.relative: 0.0 0.0;
+                                       rel1.offset: -30 0;
+                               }
+                               desc { "clicked"
+                                       inherit: "default";
+                               }
+                               desc { "disabled"
+                                       inherit: "default";
+                               }
+                       }
+                       image { "arrow"
+                               desc { "default";
+                                       image.normal: IMAGE_ARROW_RIGHT;
+                                       rel2.offset: -30 0;
+                                       align: 1.0 0.5;
+                                       min: 24 38;
+                                       max: 24 38;
+                               }
+                       }
+                       textblock { "elm.text"
+                               desc { "default"
+                                       rel2.offset: -20 0;
+                                       rel2.to_x: "arrow";
+                                       rel2.relative: 0.0 1.0;
+                                       align: 1.0 0.5;
+                                       text {
+                                               max: 1 0;
+                                               align: 1.0 0.5;
+                                               style: "button_text_style";
+                                       }
+                               }
+                       }
+               }
+       } // group right
+
+       group {
+               name: "elm/button/base/back";
+               inherit: "elm/button/base/left";
+               parts {
+                       image { "bg"
+                               desc { "default"
+                                       color: BACK_NORMAL;
+                               }
+                               desc { "clicked"
+                                       color: BACK_PRESSED;
+                               }
+                       }
+                       image { "arrow"
+                               desc { "default"
+                                       color: COLOR_GREEN_DARK;
+                               }
+                       }
+                       textblock { "elm.text"
+                               desc { "default"
+                                       text.text: "BACK";
+                                       text.style: "button_text_style";
+                                       color: COLOR_GREEN_DARK;
+                               }
+                       }
+               }
+       } // group back
+
+       group {
+               name: "elm/button/base/skip";
+               inherit: "elm/button/base/right";
+               parts {
+                       textblock { "elm.text"
+                               desc { "default"
+                                       text.text: "SKIP";
+                                       text.style: "button_text_style";
+                               }
+                       }
+                       image { "shadow"
+                               desc { "default";
+                                       rel1.offset: -5 6;
+                                       rel2.offset: 5 6;
+                               }
+                       }
+                       image { "bg"
+                               desc { "default"
+                                       color: SKIP_NORMAL;
+                               }
+                               desc { "clicked"
+                                       color: SKIP_PRESSED;
+                               }
+                               desc { "disabled"
+                                       color: SKIP_DISABLED;
+                               }
+                       }
+               }
+       } // group skip
+
+       group {
+               name: "elm/button/base/next";
+               inherit: "elm/button/base/skip";
+               parts {
+                       textblock { "elm.text"
+                               desc { "default"
+                                       text.text: "NEXT";
+                               }
+                       }
+                       image { "bg"
+                               desc { "default"
+                                       color: NEXT_NORMAL;
+                               }
+                               desc { "clicked"
+                                       color: NEXT_PRESSED;
+                               }
+                               desc { "disabled"
+                                       color: NEXT_DISABLED;
+                               }
+                       }
+               }
+       } // group next
+
+       group {
+               name: "elm/button/base/signin";
+               inherit: "elm/button/base/middle";
+               parts {
+                       textblock { "elm.text"
+                               desc { "default"
+                                       text.text: "SIGN IN";
+                                       text.style: "button_text_style";
+                               }
+                       }
+                       image { "bg"
+                               desc { "default"
+                                       color: NEXT_NORMAL;
+                               }
+                               desc { "clicked"
+                                       color: NEXT_PRESSED;
+                               }
+                               desc { "disabled"
+                                       color: NEXT_DISABLED;
+                               }
+                       }
+               }
+       } // group signin
+
+       group {
+               name: "elm/button/base/start";
+               inherit: "elm/button/base/signin";
+       } // group start
+
+       group { "elm/button/base/yesno";
+               inherit: "elm/button/base/oobe";
+        inherit_only: 1;
+        parts {
+            image { "bg"
+                desc { "default";
+//                    image.normal: IMAGE_BUTTON_CIRCLE;
+                    image.border: YES_NO_BTN_HEIGHT/2 YES_NO_BTN_HEIGHT/2 YES_NO_BTN_HEIGHT/2 YES_NO_BTN_HEIGHT/2;
+                    align: 0.5 0.0;
+                    min: YES_NO_BTN_WIDTH YES_NO_BTN_HEIGHT;
+                    max: YES_NO_BTN_WIDTH YES_NO_BTN_HEIGHT;
+                    rel1.relative: 0.0 0.0;
+                    rel2.relative: 1.0 1.0;
+                }
+                desc { "clicked";
+                   inherit: "default";
+                }
+            }
+               }
+    } // base button
+
+       group { "elm/button/base/yes";
+           inherit : "elm/button/base/yesno";
+           parts {
+               image { "bg"
+                   desc { "default";
+                       color: YES_BG_DEFAULT;
+                   }
+                   desc { "clicked"
+                       inherit: "default";
+                       color: YES_BG_CLICKED;
+                   }
+               }
+               text { "elm.text";
+                   desc { "default";
+                       color: YES_TEXT_COLOR;
+                       text {
+                           align: 0.5 0.5;
+                           text: YES_TEXT;
+                           size: YES_FONT_SIZE;
+                           font: YES_FONT;
+                       }
+                   }
+                   desc { "clicked"
+                      inherit: "default";
+                   }
+               }
+           }
+       }
+
+    group { "elm/button/base/no";
+        inherit : "elm/button/base/yesno";
+        parts {
+            image { "bg"
+                desc { "default";
+                    color: NO_BG_DEFAULT;
+                }
+                desc { "clicked"
+                   inherit: "default";
+                   color: NO_BG_CLICKED;
+                }
+            }
+            text { "elm.text";
+                desc { "default";
+                    color: NO_TEXT_COLOR;
+                    text {
+                        align: 0.5 0.5;
+                        text: NO_TEXT;
+                        size: NO_FONT_SIZE;
+                        font: NO_FONT;
+                    }
+                }
+                desc { "clicked"
+                    inherit: "default";
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/oobe-common/.cproject b/oobe-common/.cproject
new file mode 100644 (file)
index 0000000..007d656
--- /dev/null
@@ -0,0 +1,602 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.lib.debug.39923478">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.lib.debug.39923478" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactExtension="a" artifactName="oobe-common" buildArtefactType="org.tizen.nativecore.buildArtefactType.staticLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.staticLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -f" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.lib.debug.39923478" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.lib.debug">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.lib.debug.39923478." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.lib.debug.1604693076" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.lib.debug">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1461753929" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder autoBuildTarget="all" buildPath="${workspace_loc:/oobe-common}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1073681600" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.901182191" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1348223287" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1013706159" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.30391872" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.728330645" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.2122356781" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1819839857" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.636026161" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.1061423590" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.671246771" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.364107955" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1324311729" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.281795096" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1716038709" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.1752747935" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1947529901" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1061328895" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.715410991" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.905716316" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.2068354525" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1516077786" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.170472918" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.494189077" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.2055787236" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.429340434" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.509993443" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.213026456" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1826410032" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1923377998" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.1002080033" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.975350212" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1624110331" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.668890080" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1282948029" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.436747094" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.489627497" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.356892549" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.2125168705" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1853098301" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.lib.release.829899874">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.lib.release.829899874" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactExtension="a" artifactName="oobe-common" buildArtefactType="org.tizen.nativecore.buildArtefactType.staticLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.staticLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -f" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.lib.release.829899874" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.lib.release">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.lib.release.829899874." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.lib.release.75602779" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.lib.release">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.709088208" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder buildPath="${workspace_loc:/oobe-common}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.193225084" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.650295649" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.409783380" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1948018539" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.2071368915" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1634367176" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1185823855" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.714661946" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.332052958" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.918027488" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.337506143" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.589796294" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.864207486" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1489033682" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.2059162835" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.2126382934" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.418360274" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1759958973" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.259671886" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.1484386397" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1444606973" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1493526411" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1055548055" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1651725294" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.468678532" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.1166086780" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.2105076082" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.367654446" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.961020027" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.15306539" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1806717080" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.578964379" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1777609448" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1023719100" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.810541009" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.163693752" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.628481802" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.728037376" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="oobe-common.org.tizen.nativecore.target.sbi.gcc45.lib.435949113" name="Tizen Native Static Library" projectType="org.tizen.nativecore.target.sbi.gcc45.lib"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.lib.debug.39923478">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.lib.release.829899874">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+</cproject>
diff --git a/oobe-common/.gitignore b/oobe-common/.gitignore
new file mode 100644 (file)
index 0000000..c60f98e
--- /dev/null
@@ -0,0 +1,2 @@
+/Release/
+/res/
diff --git a/oobe-common/.project b/oobe-common/.project
new file mode 100644 (file)
index 0000000..6d30a3e
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>oobe-common</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+       <filteredResources>
+               <filter>
+                       <id>1570199361334</id>
+                       <name></name>
+                       <type>26</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+                       </matcher>
+               </filter>
+               <filter>
+                       <id>1570199361337</id>
+                       <name></name>
+                       <type>6</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+                       </matcher>
+               </filter>
+       </filteredResources>
+</projectDescription>
diff --git a/oobe-common/.tproject b/oobe-common/.tproject
new file mode 100644 (file)
index 0000000..903a965
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+    <platforms>
+        <platform>
+            <name>iot-headed-5.0</name>
+        </platform>
+    </platforms>
+    <package>
+        <blacklist/>
+        <resFallback autoGen="true"/>
+    </package>
+</tproject>
diff --git a/oobe-common/inc/log.h b/oobe-common/inc/log.h
new file mode 100644 (file)
index 0000000..ee5dfb5
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __LOG_H__
+#define __LOG_H__
+#include <dlog.h>
+
+#ifndef LOG_TAG
+#define LOG_TAG "oobe-common"
+#endif
+
+#define __MODULE__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
+
+#define LOGD(format, arg...) \
+               do { dlog_print(DLOG_DEBUG, LOG_TAG, "%s: %s(%d) > " format, __MODULE__, __func__, __LINE__, ##arg); } \
+               while (0)
+
+#define LOGI(format, arg...) \
+               do { dlog_print(DLOG_INFO, LOG_TAG, "%s: %s(%d) > " format, __MODULE__, __func__, __LINE__, ##arg); } \
+               while (0)
+
+#define LOGW(format, arg...) \
+               do { dlog_print(DLOG_WARN, LOG_TAG, "%s: %s(%d) > " format, __MODULE__, __func__, __LINE__, ##arg); } \
+               while (0)
+
+#define LOGE(format, arg...) \
+               do { dlog_print(DLOG_ERROR, LOG_TAG, "%s: %s(%d) > " format, __MODULE__, __func__, __LINE__, ##arg); } \
+               while (0)
+
+#define LOGF(format, arg...) \
+               do { dlog_print(DLOG_FATAL, LOG_TAG, "%s: %s(%d) > " format, __MODULE__, __func__, __LINE__, ##arg); } \
+               while (0)
+
+#endif /* __LOG_H__ */
diff --git a/oobe-common/inc/oobe-common.h b/oobe-common/inc/oobe-common.h
new file mode 100644 (file)
index 0000000..f629a29
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_COMMON_H__
+#define __OOBE_COMMON_H__
+
+#include "utils.h"
+#include "utils_view.h"
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif // __OOBE_COMMON_H__
\ No newline at end of file
diff --git a/oobe-common/inc/utils.h b/oobe-common/inc/utils.h
new file mode 100644 (file)
index 0000000..e6dcaa0
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __UTILS_H__
+#define __UTILS_H__
+
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern void utils_get_app_data_path(const char *file_in, char *path_out, int size);
+
+extern void utils_get_app_resource_path(const char *file_in, char *path_out, int size);
+
+extern bool utils_copy_file(const char *src_filepath, const char *dst_filepath);
+
+extern bool utils_save_to_file(const char *filepath, const char *text);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __UTILS_H__ */
diff --git a/oobe-common/inc/utils_view.h b/oobe-common/inc/utils_view.h
new file mode 100644 (file)
index 0000000..1da0f4f
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 <Elementary.h>
+#include <stdbool.h>
+
+#ifndef __UTILS_utils_view_H__
+#define __UTILS_utils_view_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief Creates a basic window named package
+ * @param[in] pkg_name Name of the window
+ * @return The function returns window object if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+extern Evas_Object *utils_view_create_win(const char *pkg_name);
+
+/**
+ * @brief Creates a conformant object for parent object.
+ * @param[in] parent The parent object for conformant object.
+ * @return The function returns conformant object if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+extern Evas_Object *utils_view_create_conformant(Evas_Object *parent);
+
+/**
+ * @brief Creates a layout object for parent object based on provided EDJE script.
+ * @param[in] parent The parent object for layout object.
+ * @param[in] edj_file_name The relative path to the layout EDJE script.
+ * @param[in] edj_group The name of the group to be loaded from the EDJE script.
+ * @return The function returns layout object if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+extern Evas_Object *utils_view_create_layout(Evas_Object *parent, const char *edj_file_name, const char *edj_group);
+
+/**
+ * @brief Creates a layout object and sets it to the parent object based on provided EDJE script.
+ * @param[in] parent The parent object for layout object.
+ * @param[in] edj_file_name The relative path to the layout EDJE script.
+ * @param[in] edj_group The name of the group to be loaded from the EDJE script.
+ * @param[in] target_part_name The name of the EDJE part where the layout object has to be set.
+ * @return The function returns layout object if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+extern Evas_Object *utils_view_create_set_layout(Evas_Object *parent, const char *edj_file_name, const char *edj_group, const char *target_part_name);
+
+/**
+ * @brief Creates an image object without image file set.
+ * In order to set the image file, the elm_image_file_set() function must be used.
+ * @param[in] parent The parent object for image object.
+ * @param[in] part_name The name of the EDJE part where the image object has to be set.
+ * @return The function returns image object if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+extern Evas_Object *utils_view_create_image(Evas_Object *parent, const char *part_name);
+
+/**
+ * @brief Creates a genlist object and sets it to the parent object.
+ * @param[in] parent The parent object for genlist object.
+ * @param[in] target_part_name The name of the EDJE part where the genlist object has to be set.
+ * @return The function returns genlist object if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+extern Evas_Object *utils_view_create_genlist(Evas_Object *parent, const char *target_part_name);
+
+/**
+ * @brief Creates an item class for genlist object.
+ * @param[in] on_text_get_cb The callback function's handler invoked when the genlist's item has to be redrawn.
+ * @return The function returns item class if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+extern Elm_Genlist_Item_Class *utils_view_create_genlist_item_class(Elm_Genlist_Item_Content_Get_Cb on_content_get_cb);
+
+/**
+ * @brief Creates a naviframe object for parent object.
+ * @param[in] parent The parent object for naviframe object.
+ * @return The function returns naviframe object if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+extern Evas_Object *utils_view_create_naviframe(Evas_Object *parent);
+
+extern void utils_view_load_theme(const char *edj_path);
+
+extern Evas_Object *utils_view_create_button(Evas_Object *parent, const char *style, const char *text, Evas_Smart_Cb callback, void *user_data);
+
+extern Evas_Object *utils_view_create_button_translatable(Evas_Object *parent, const char *style, const char *translatable_text, Evas_Smart_Cb callback, void *user_data);
+
+extern Evas_Object *utils_view_create_checkbox(Evas_Object *parent, const char *style, bool state, Evas_Smart_Cb callback, void *user_data);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __UTILS_utils_view_H__ */
diff --git a/oobe-common/project_def.prop b/oobe-common/project_def.prop
new file mode 100644 (file)
index 0000000..3b01a8e
--- /dev/null
@@ -0,0 +1,11 @@
+APPNAME = oobe-common
+
+type = staticLib
+profile = iot-headed-5.0
+
+USER_SRCS = src/oobe-common.c
+USER_DEFS =
+USER_INC_DIRS = inc
+USER_OBJS =
+USER_LIBS =
+USER_EDCS =
diff --git a/oobe-common/src/oobe-common.c b/oobe-common/src/oobe-common.c
new file mode 100644 (file)
index 0000000..0f33e86
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-common.h"
diff --git a/oobe-common/src/utils.c b/oobe-common/src/utils.c
new file mode 100644 (file)
index 0000000..e7c82a1
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "utils.h"
+
+#include <glib.h>
+#include <app.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+void utils_get_app_data_path(const char *file_in, char *path_out, int size) {
+       char *path = app_get_data_path();
+       if (path) {
+               snprintf(path_out, size, "%s%s", path, file_in);
+               free(path);
+       }
+}
+
+void utils_get_app_resource_path(const char *file_in, char *path_out, int size) {
+       char *path = app_get_resource_path();
+       if (path) {
+               snprintf(path_out, size, "%s%s", path, file_in);
+               free(path);
+       }
+}
+
+bool utils_copy_file(const char *src_filepath, const char *dst_filepath)
+{
+       bool result = false;
+       char *content = NULL;
+       gsize size;
+       GError *error = NULL;
+
+       if (g_file_get_contents(src_filepath, &content, &size, &error) == true) {
+               if (g_file_set_contents(dst_filepath, content, size, &error) == true ) {
+                       result = true;
+               } else {
+                       g_error_free(error);
+               }
+               free(content);
+       } else {
+               g_error_free(error);
+       }
+
+       return result;
+}
+
+bool utils_save_to_file(const char *filepath, const char *text)
+{
+       bool result = false;
+       GError *error = NULL;
+
+       if (g_file_set_contents(filepath, text, strlen(text), &error)) {
+               result = true;
+       } else {
+               g_error_free(error);
+       }
+
+       return result;
+}
diff --git a/oobe-common/src/utils_view.c b/oobe-common/src/utils_view.c
new file mode 100644 (file)
index 0000000..f2d4891
--- /dev/null
@@ -0,0 +1,258 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "utils_view.h"
+#include "utils.h"
+#include "log.h"
+#include <app.h>
+
+static void _delete_win_request_cb(void *data, Evas_Object *obj, void *event_info);
+
+Evas_Object *utils_view_create_win(const char *pkg_name)
+{
+       Evas_Object *win = NULL;
+
+       win = elm_win_util_standard_add(pkg_name, pkg_name);
+       elm_win_conformant_set(win, EINA_TRUE);
+       elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW);
+       elm_win_indicator_opacity_set(win, ELM_WIN_INDICATOR_OPAQUE);
+       elm_win_autodel_set(win, EINA_TRUE);
+
+       evas_object_smart_callback_add(win, "delete,request", _delete_win_request_cb, NULL);
+
+       return win;
+}
+
+Evas_Object *utils_view_create_conformant(Evas_Object *parent)
+{
+       Evas_Object *conform = NULL;
+
+       if (!parent) {
+               LOGE("Wrong input arguments.");
+               return NULL;
+       }
+
+       conform = elm_conformant_add(parent);
+       if (!conform) {
+               LOGE("Function elm_conformant_add() failed.");
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, conform);
+       evas_object_show(conform);
+
+       return conform;
+}
+
+Evas_Object *utils_view_create_layout(Evas_Object *parent, const char *edj_file_name, const char *edj_group)
+{
+       char edj_path[PATH_MAX] = {0, };
+       Evas_Object *layout = NULL;
+
+       if (!parent || !edj_file_name || !edj_group) {
+               LOGE("Wrong input arguments.");
+               return NULL;
+       }
+
+       utils_get_app_resource_path(edj_file_name, edj_path, PATH_MAX);
+
+       layout = elm_layout_add(parent);
+       if (!layout) {
+               LOGE("Function elm_layout_add() failed.");
+               return NULL;
+       }
+
+       if (!elm_layout_file_set(layout, edj_path, edj_group)) {
+               LOGE("Function elm_layout_file_set() failed.");
+               evas_object_del(layout);
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       return layout;
+}
+
+Evas_Object *utils_view_create_set_layout(Evas_Object *parent, const char *edj_file_name, const char *edj_group, const char *target_part_name)
+{
+       Evas_Object *layout = utils_view_create_layout(parent, edj_file_name, edj_group);
+       if (!layout)
+               return NULL;
+
+       if (!target_part_name)
+               elm_object_content_set(parent, layout);
+       else
+               elm_object_part_content_set(parent, target_part_name, layout);
+
+       return layout;
+}
+
+Evas_Object *utils_view_create_image(Evas_Object *parent, const char *part_name)
+{
+       Evas_Object *image = elm_image_add(parent);
+       if (!image) {
+               LOGE("Function elm_image_add() failed.");
+               return NULL;
+       }
+
+       elm_image_smooth_set(image, EINA_TRUE);
+       elm_image_aspect_fixed_set(image, EINA_TRUE);
+
+       if (part_name)
+               elm_object_part_content_set(parent, part_name, image);
+
+       return image;
+}
+
+Evas_Object *utils_view_create_genlist(Evas_Object *parent, const char *target_part_name)
+{
+       Evas_Object *list = NULL;
+
+       if (!parent || !target_part_name) {
+               LOGE("Wrong input arguments.");
+               return NULL;
+       }
+
+       list = elm_genlist_add(parent);
+       if (!list) {
+               LOGE("Function elm_genlist_add() failed.");
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(parent, target_part_name, list);
+
+       evas_object_show(list);
+
+       return list;
+}
+
+Elm_Genlist_Item_Class *utils_view_create_genlist_item_class(Elm_Genlist_Item_Content_Get_Cb on_content_get_cb)
+{
+       static Elm_Genlist_Item_Class *itc = NULL;
+
+       if (!itc) {
+               itc = elm_genlist_item_class_new();
+               if (!itc) {
+                       LOGE("Function elm_genlist_item_class_new() failed.");
+                       return NULL;
+               }
+
+               itc->item_style = "full";
+               itc->func.text_get = NULL;
+               itc->func.content_get = on_content_get_cb;
+               itc->func.state_get = NULL;
+               itc->func.del = NULL;
+       }
+
+       return itc;
+}
+
+void utils_view_load_theme(const char *edj_path)
+{
+       char edj_path_out[PATH_MAX] = {0,};
+       utils_get_app_resource_path(edj_path, edj_path_out, PATH_MAX);
+
+       elm_theme_extension_add(NULL, edj_path_out);
+}
+
+Evas_Object *utils_view_create_button(Evas_Object *parent, const char *style, const char *text, Evas_Smart_Cb callback, void *user_data)
+{
+       Evas_Object *btn = elm_button_add(parent);
+    
+    if(!btn)
+        return NULL;
+    
+    if(style)
+           elm_object_style_set(btn, style);
+    
+       elm_object_disabled_set(btn, EINA_FALSE);
+       
+    if(text)   
+        elm_object_text_set(btn, text);
+
+    if(callback)
+        evas_object_smart_callback_add(btn, "clicked", callback, user_data);
+
+    return btn;
+}
+
+Evas_Object *utils_view_create_button_translatable(Evas_Object *parent, const char *style, const char *translatable_text, Evas_Smart_Cb callback, void *user_data)
+{
+       Evas_Object *btn = elm_button_add(parent);
+    
+    if(!btn)
+        return NULL;
+    
+    if(style)
+           elm_object_style_set(btn, style);
+    
+       elm_object_disabled_set(btn, EINA_FALSE);
+       
+    if(translatable_text)      
+        elm_object_translatable_text_set(btn, translatable_text);
+
+    if(callback)
+        evas_object_smart_callback_add(btn, "clicked", callback, user_data);
+    
+    return btn;
+}
+
+Evas_Object *utils_view_create_checkbox(Evas_Object *parent, const char *style, bool state, Evas_Smart_Cb callback, void *user_data)
+{
+       Evas_Object *check = elm_button_add(parent);
+    
+    if(!check)
+        return NULL;
+    
+    if(style)
+           elm_object_style_set(check, style);
+    
+    elm_check_state_set(check, state);
+
+    if(callback)
+        evas_object_smart_callback_add(check, "changed", callback, user_data);
+    
+    return check;
+}
+
+Evas_Object *utils_view_create_naviframe(Evas_Object *parent)
+{
+       Evas_Object *naviframe = NULL;
+
+       if (!parent) {
+               LOGE("Wrong input arguments.");
+               return NULL;
+       }
+
+       naviframe = elm_naviframe_add(parent);
+       if (!naviframe) {
+               LOGE("Function elm_naviframe_add() failed.");
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_content_set(parent, naviframe);
+       evas_object_show(naviframe);
+
+       return naviframe;
+}
+
+static void _delete_win_request_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       ui_app_exit();
+}
diff --git a/oobe-country/.cproject b/oobe-country/.cproject
new file mode 100644 (file)
index 0000000..8066fac
--- /dev/null
@@ -0,0 +1,652 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.60519547">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.60519547" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-country" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.60519547" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.60519547." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.2021400780" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.423231765" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder autoBuildTarget="all" buildPath="${workspace_loc:/chair-country}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1662900530" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1168308447" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1859817509" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.2137288600" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.2071645392" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.156582458" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1078718046" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core.private_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.222737247" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1229551245" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.2041996257" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.329629515" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.1520965398" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2073766581" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075062594" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1818143869" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.580139314" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1063086458" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.2129803908" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core.private_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.729414681" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1812562367" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.591407420" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.113530690" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.926455676" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1268055574" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1668589814" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1870809873" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.1672623398" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.1890145834" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.763332029" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.392295577" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.555273555" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.630699057" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Debug/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1565167663" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1430383984" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1099091075" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.905237331" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1278117868" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1843414003" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.1706260179" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1970208527" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.534255930" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1141062983" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.1051405574">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1051405574" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="chair-country" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1051405574" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.1051405574." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.1362564697" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.330676627" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder buildPath="${workspace_loc:/chair-country}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.198815869" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1472388808" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.521340109" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1568424491" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.960780102" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.549149351" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.295333561" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.432375659" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1286979629" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.261387937" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.288707636" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.328255388" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.545164252" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.70989053" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.2124668040" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1665445149" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.671109126" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.417557613" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.60619758" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.472483446" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.489363222" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.292028091" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.652186768" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1118703229" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.984570903" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.800847340" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1170072564" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1032667439" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.240805566" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.277372553" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Release/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1020276303" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1845203884" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.651906595" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.1063371917" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.424373368" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1132621912" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.297831446" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.373859852" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.475830461" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.543268354" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="chair-country.org.tizen.nativecore.target.sbi.gcc45.app.397846485" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.60519547">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.1051405574">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+       <storageModule moduleId="refreshScope"/>
+</cproject>
diff --git a/oobe-country/.exportMap b/oobe-country/.exportMap
new file mode 100644 (file)
index 0000000..de30516
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       global: main;
+       _IO_*;
+       local: *;
+};
diff --git a/oobe-country/.package-stamp b/oobe-country/.package-stamp
new file mode 100644 (file)
index 0000000..40cbe59
--- /dev/null
@@ -0,0 +1 @@
+TPK
\ No newline at end of file
diff --git a/oobe-country/.project b/oobe-country/.project
new file mode 100644 (file)
index 0000000..585a309
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>oobe-country</name>
+       <comment></comment>
+       <projects>
+               <project>oobe-common</project>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+       <filteredResources>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>26</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+                       </matcher>
+               </filter>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>6</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+                       </matcher>
+               </filter>
+       </filteredResources>
+</projectDescription>
diff --git a/oobe-country/.tproject b/oobe-country/.tproject
new file mode 100644 (file)
index 0000000..658e81b
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+    <platforms>
+        <platform>
+            <name>mobile-5.0</name>
+        </platform>
+    </platforms>
+    <package>
+        <blacklist/>
+        <resFallback autoGen="true"/>
+    </package>
+</tproject>
diff --git a/oobe-country/build_def.prop b/oobe-country/build_def.prop
new file mode 100644 (file)
index 0000000..6bb5e2f
--- /dev/null
@@ -0,0 +1,6 @@
+
+# Add pre/post build process
+PREBUILD_DESC = 
+PREBUILD_COMMAND = 
+POSTBUILD_DESC = 
+POSTBUILD_COMMAND = 
diff --git a/oobe-country/inc/app-control.h b/oobe-country/inc/app-control.h
new file mode 100644 (file)
index 0000000..b55009c
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __APP_CONTROL_H__
+#define __APP_CONTROL_H__
+
+#include <app_control.h>
+
+typedef void (*app_control_reply_received_cb)(const char *reply);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb);
+void app_control_save_reply_handler(app_control_h handler);
+void app_control_reply(const char *message);
+
+#endif /*__APP_CONTROL_H__ */
diff --git a/oobe-country/inc/data.h b/oobe-country/inc/data.h
new file mode 100644 (file)
index 0000000..af71491
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __DATA_H__
+#define __DATA_H__
+
+#include <stdbool.h>
+
+typedef bool (*get_available_country_cb)(const char *country);
+
+bool data_get_country(int country_index, const char **country);
+bool data_get(int country_index, const char **code, const char **name, const char **timezone, const char **cityname);
+void data_load_countries();
+void data_destroy();
+
+#endif /* __DATA_H__ */
diff --git a/oobe-country/inc/oobe-country.h b/oobe-country/inc/oobe-country.h
new file mode 100644 (file)
index 0000000..6ba2b0b
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_COUNTRY_H__
+#define __OOBE_COUNTRY_H__
+
+#include <app.h>
+#include <Elementary.h>
+#include <system_settings.h>
+#include <efl_extension.h>
+#include <dlog.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "oobe-country"
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.tizen.oobe-country"
+#endif
+
+#endif /* __OOBE_COUNTRY_H__ */
diff --git a/oobe-country/inc/view-defines.h b/oobe-country/inc/view-defines.h
new file mode 100644 (file)
index 0000000..ecf4a80
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_DEFINES_H__
+#define __VIEW_DEFINES_H__
+
+#define EDJ_COUNTRY "edje/country.edj"
+#define GRP_COUNTRY "country"
+#define GRP_COUNTRY_ITEM "country_item_layout"
+
+#define PART_COUNTRY_LIST "country_list"
+
+#define PART_COUNTRY_ITEM_LABEL "country_item_layout_label"
+
+#define PART_SELECT_COUNTRY_TEXT "select_country_text"
+#define PART_COUNTRY_TITLE "country_title"
+
+#endif /* __VIEW_DEFINES_H__ */
diff --git a/oobe-country/inc/view.h b/oobe-country/inc/view.h
new file mode 100644 (file)
index 0000000..70803a5
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_H__
+#define __VIEW_H__
+
+#include <Elementary.h>
+#include "data.h"
+
+typedef bool (*countries_query_cb)(const char **country);
+typedef void (*country_selected_cb)(const char *country);
+typedef void (*load_countries_cb)();
+
+void view_layout_country_signal_emit(const char *emission, const char *source);
+Eina_Bool view_create(void *user_data);
+void view_destroy(void);
+void view_set_callbacks(countries_query_cb countries_query_func, load_countries_cb load_countries_func, country_selected_cb country_selected_func);
+
+#endif /* __VIEW_H__ */
diff --git a/oobe-country/inc/xml-loader.h b/oobe-country/inc/xml-loader.h
new file mode 100644 (file)
index 0000000..83c76fc
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __XML_LANGUAGE_LOADER_H__
+#define __XML_LANGUAGE_LOADER_H__
+
+#include <Elementary.h>
+#include <dlog.h>
+
+#define __FREE(del, arg) do { \
+       if (arg) { \
+               /*cast any argument to (void*) to avoid build warring*/\
+               del((void *)(arg)); \
+               arg = NULL; \
+       } \
+} while (0)
+#define FREE(arg) __FREE(free, arg)
+#define G_FREE(arg) __FREE(g_free, arg)
+
+typedef struct {
+       char *code;
+       char *name;
+       char *timezone;
+       char *cityname;
+} country_h;
+
+Eina_List *xml_get_countries_list();
+void xml_countries_list_destroy();
+
+#endif /* __XML_LANGUAGE_LOADER_H__ */
diff --git a/oobe-country/project_def.prop b/oobe-country/project_def.prop
new file mode 100644 (file)
index 0000000..d184bdb
--- /dev/null
@@ -0,0 +1,63 @@
+
+# Project Name
+APPNAME = oobe-country
+
+# Project Type
+type = app
+
+# Project Profile
+profile = mobile-5.0
+
+# C/CPP Sources
+USER_SRCS = src/*.c
+
+# EDC Sources
+USER_EDCS =  
+
+# PO Sources
+USER_POS = res/po/*.po
+
+# User Defines
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING 
+USER_CPP_DEFS = 
+
+# User Undefines
+USER_UNDEFS = 
+USER_CPP_UNDEFS = 
+
+# User Libraries
+USER_LIBS = 
+
+# User Objects
+USER_OBJS = 
+
+# User Includes
+## C Compiler
+USER_C_INC_DIRS = inc 
+USER_INC_FILES = 
+## C++ Compiler
+USER_CPP_INC_DIRS = 
+USER_CPP_INC_FILES = 
+
+USER_INC_DIRS = $(USER_C_INC_DIRS) $(USER_CPP_INC_DIRS)
+
+# User Library Path
+USER_LIB_DIRS = 
+
+# EDC Resource Path
+USER_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# EDC Flags
+USER_EXT_EDC_KEYS = EDC0 
+
+USER_EXT_EDC0_EDCS = res/edje/*.edc 
+USER_EXT_EDC0_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EXT_EDC0_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EXT_EDC0_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# Resource Filter
+USER_RES_INCLUDE = 
+USER_RES_EXCLUDE = 
+
diff --git a/oobe-country/res/data/countries_OOBE.xml b/oobe-country/res/data/countries_OOBE.xml
new file mode 100644 (file)
index 0000000..c318087
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<countries>
+  <country code="GB" name="United Kingdom" timezone="Europe/London" cityname="IDS_WCL_BODY_CITYNAME_LONDON" />
+  <country code="DE" name="Germany" timezone="Europe/Berlin" cityname="IDS_WCL_BODY_CITYNAME_LONDON" />
+  <country code="PL" name="Poland" timezone="Europe/Warsaw" cityname="IDS_WCL_BODY_CITYNAME_WARSAW" />
+</countries>
diff --git a/oobe-country/res/edje/country.edc b/oobe-country/res/edje/country.edc
new file mode 100644 (file)
index 0000000..940c9c5
--- /dev/null
@@ -0,0 +1,215 @@
+#include "../../inc/view-defines.h"
+
+#define IMG_COUNTRY_BG "../res/images/bg.png"
+#define IMG_COUNTRY_LIST_BG "../res/images/list_bg.png"
+
+#define STATE_COUNTRY_ITEM_BG "default"
+#define STATE_COUNTRY_ITEM_BG_HIGHLIGHT "item_bg_highlight"
+
+collections {
+       base_scale: 1.8;
+       
+       fonts {
+               font: "../res/fonts/SamsungOneUI-800_v1.0.ttf" "samsung-one-800";
+               font: "../res/fonts/SamsungOneUI-300_v1.0.ttf" "samsung-one-300";
+               font: "../res/fonts/SamsungOneUI-400_v1.0.ttf" "samsung-one-400";
+       }
+
+       styles {
+               style {
+                       name: "style_select_country";
+                       base: "font=samsung-one-800 font_size=26 align=left valign=center wrap=word color=#040404ff";
+               }
+               
+               style {
+                       name: "style_title";
+                       base: "font=samsung-one-300 font_size=36 align=center valign=center wrap=word color=#05180Aff";
+               }
+
+               style {
+                       name: "style_list_item_label";
+                       base: "font=samsung-one-400 font_size=26 align=center valign=center wrap=word color=#040404ff";
+               }
+       }
+       
+       images {
+               image: IMG_COUNTRY_BG COMP;
+               image: IMG_COUNTRY_LIST_BG COMP;
+       }
+
+       group {
+               name: GRP_COUNTRY;
+               parts {
+                       part {
+                               name: PART_COUNTRY_BG;
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; };
+                                       rel2 { relative: 1.0 1.0; };
+                                       image { normal: IMG_COUNTRY_BG; }
+                               }
+                       }
+                       
+                       part {
+                               name: PART_COUNTRY_TITLE;
+                               type: TEXTBLOCK;
+                               description {
+                                       rel1.relative: 120/1280 467/720;
+                                       rel2.relative: (120+400)/1280 (467+90)/720;
+                                       color: 0 0 0 255;
+                                       text {
+                                               style: "style_title";
+                                               text: "";
+                                       }
+                               }
+                       }
+                       
+                       part {
+                               name: PART_SELECT_COUNTRY_TEXT;
+                               type: TEXTBLOCK;
+                               description {
+                                       rel1.relative: 737/1280 131/720;
+                                       rel2.relative: (737+389)/1280 (131+39)/720;
+                                       color: 0 0 0 255;
+                                       text {
+                                               style: "style_select_country";
+                                               text: "";
+                                       }
+                               }
+                       }
+                       
+                       part {
+                               name: PART_COUNTRY_LIST_BG;
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       image {
+                                               normal: IMG_COUNTRY_LIST_BG;
+                                               border: 8 8 8 8;
+                                       }
+                                       rel.to: PART_COUNTRY_LIST;
+                                       rel1.offset: -7 -8;
+                                       rel2.offset: 7 8;
+                               }
+                       }
+                       
+                       part {
+                               name: PART_COUNTRY_LIST;
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.relative: 724/1280 187/720;
+                                       rel2.relative: (724+441)/1280 (187+72*5)/720;
+                               }
+                               desc { "country_1"
+                                       inherit: "default";
+                                       rel2.relative: (724+441)/1280 (187+72*1)/720;
+                               }
+                               desc { "country_2"
+                                       inherit: "default";
+                                       rel2.relative: (724+441)/1280 (187+72*2)/720;
+                               }
+                               desc { "country_3"
+                                       inherit: "default";
+                                       rel2.relative: (724+441)/1280 (187+72*3)/720;
+                               }
+                               desc { "country_4"
+                                       inherit: "default";
+                                       rel2.relative: (724+441)/1280 (187+72*4)/720;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               signal: "signal_country_1";
+                               source: "";
+                               action: STATE_SET "country_1";
+                               target: PART_COUNTRY_LIST;
+                       }
+                       program {
+                               signal: "signal_country_2";
+                               source: "";
+                               action: STATE_SET "country_2";
+                               target: PART_COUNTRY_LIST;
+                       }
+                       program {
+                               signal: "signal_country_3";
+                               source: "";
+                               action: STATE_SET "country_3";
+                               target: PART_COUNTRY_LIST;
+                       }
+                       program {
+                               signal: "signal_country_4";
+                               source: "";
+                               action: STATE_SET "country_4";
+                               target: PART_COUNTRY_LIST;
+                       }
+               }
+       }
+       
+       group {
+               name: GRP_COUNTRY_ITEM;
+               parts {
+                       part {
+                               name: PART_COUNTRY_ITEM_BG;
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: STATE_COUNTRY_ITEM_BG 0.0;
+                                       min: 440 72;
+                                       max: 440 72;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       inherit: STATE_COUNTRY_ITEM_BG 0.0;
+                                       state: STATE_COUNTRY_ITEM_BG_HIGHLIGHT 0.0;
+                                       color: 230 238 234 255;
+                               }
+                       }
+                       
+                       part {
+                               name: PART_COUNTRY_ITEM_SEPARATOR;
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel.to: PART_COUNTRY_ITEM_BG;
+                                       rel1.relative: 0.0 71/72;
+                                       rel2.relative: 1.0 1.0;
+                                       color: 185 196 188 255;
+                               }
+                       }
+
+                       part {
+                               name: PART_COUNTRY_ITEM_LABEL;
+                               type: TEXTBLOCK;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       text {
+                                               style: "style_list_item_label";
+                                               text: "";
+                                       }
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               signal: "mouse,down,1";
+                               source: PART_COUNTRY_ITEM_BG;
+                               action: STATE_SET STATE_COUNTRY_ITEM_BG_HIGHLIGHT 0.0;
+                               target: PART_COUNTRY_ITEM_BG;
+                       }
+                       program {
+                               signal: "mouse,up,1";
+                               source: PART_COUNTRY_ITEM_BG;
+                               action: STATE_SET STATE_COUNTRY_ITEM_BG 0.0;
+                               target: PART_COUNTRY_ITEM_BG;
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/oobe-country/res/fonts/SamsungOneUI-300_v1.0.ttf b/oobe-country/res/fonts/SamsungOneUI-300_v1.0.ttf
new file mode 100644 (file)
index 0000000..a60f133
Binary files /dev/null and b/oobe-country/res/fonts/SamsungOneUI-300_v1.0.ttf differ
diff --git a/oobe-country/res/fonts/SamsungOneUI-400_v1.0.ttf b/oobe-country/res/fonts/SamsungOneUI-400_v1.0.ttf
new file mode 100644 (file)
index 0000000..be988fa
Binary files /dev/null and b/oobe-country/res/fonts/SamsungOneUI-400_v1.0.ttf differ
diff --git a/oobe-country/res/fonts/SamsungOneUI-800_v1.0.ttf b/oobe-country/res/fonts/SamsungOneUI-800_v1.0.ttf
new file mode 100644 (file)
index 0000000..ba0a0af
Binary files /dev/null and b/oobe-country/res/fonts/SamsungOneUI-800_v1.0.ttf differ
diff --git a/oobe-country/res/images/bg.png b/oobe-country/res/images/bg.png
new file mode 100644 (file)
index 0000000..86bb201
Binary files /dev/null and b/oobe-country/res/images/bg.png differ
diff --git a/oobe-country/res/images/list_bg.png b/oobe-country/res/images/list_bg.png
new file mode 100644 (file)
index 0000000..5bee352
Binary files /dev/null and b/oobe-country/res/images/list_bg.png differ
diff --git a/oobe-country/res/po/en_US.po b/oobe-country/res/po/en_US.po
new file mode 100644 (file)
index 0000000..af96697
--- /dev/null
@@ -0,0 +1,9 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "SELECT_COUNTRY"
+msgstr "Select your country:"
+
+msgid "TITLE"
+msgstr "Welcome to OOBE for<br><b>IoT Headed<\b>"
+
diff --git a/oobe-country/res/po/pl_PL.po b/oobe-country/res/po/pl_PL.po
new file mode 100644 (file)
index 0000000..f02c870
--- /dev/null
@@ -0,0 +1,9 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "SELECT_COUNTRY"
+msgstr "Wybierz swój kraj:"
+
+msgid "TITLE"
+msgstr "Witaj w OOBE dla<br><b>IoT Headed<\b>"
+
diff --git a/oobe-country/shared/res/oobe-country.png b/oobe-country/shared/res/oobe-country.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/oobe-country/shared/res/oobe-country.png differ
diff --git a/oobe-country/src/app-control.c b/oobe-country/src/app-control.c
new file mode 100644 (file)
index 0000000..997483b
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "app-control.h"
+#include <log.h>
+
+static struct app_control_info {
+       app_control_h handler;
+       app_control_reply_received_cb reply_cb;
+       app_control_h reply_handler;
+} ac_info = {
+       .handler = NULL,
+       .reply_cb = NULL,
+       .reply_handler = NULL
+};
+
+static void _app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb)
+{
+       int ret;
+
+       if (!ac_info.handler) {
+               ret = app_control_create(&ac_info.handler);
+
+               if (ret != APP_CONTROL_ERROR_NONE) {
+                   LOGE("app_control_create() failed. err = %d", ret);
+                   return;
+               }
+       }
+
+       ac_info.reply_cb = reply_cb;
+
+       app_control_set_operation(ac_info.handler, APP_CONTROL_OPERATION_DEFAULT);
+       app_control_set_launch_mode(ac_info.handler, APP_CONTROL_LAUNCH_MODE_GROUP);
+       app_control_set_app_id(ac_info.handler, app_id);
+       app_control_add_extra_data(ac_info.handler, "caller", "oobe-setup");
+
+       if (app_control_send_launch_request(ac_info.handler, _app_control_result_cb, NULL) != APP_CONTROL_ERROR_NONE) {
+               LOGE("Failed to launch %s", app_id);
+       }
+
+       app_control_destroy(ac_info.handler);
+       ac_info.handler = NULL;
+}
+
+void app_control_save_reply_handler(app_control_h handler)
+{
+       int ret;
+
+       ret = app_control_clone(&ac_info.reply_handler, handler);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_clone() failed. err = %d", ret);
+               return;
+       }
+}
+
+void app_control_reply(const char *message)
+{
+       int ret;
+       app_control_h reply;
+
+       ret = app_control_create(&reply);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_create() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_add_extra_data(reply, "reply", message);
+
+       ret = app_control_reply_to_launch_request(reply, ac_info.reply_handler, APP_CONTROL_RESULT_SUCCEEDED);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_reply_to_launch_request() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_destroy(reply);
+       app_control_destroy(ac_info.reply_handler);
+       ac_info.reply_handler = NULL;
+}
+
+static void _app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+       char *value;
+
+       if (result == APP_CONTROL_RESULT_SUCCEEDED) {
+               if (app_control_get_extra_data(reply, "reply", &value) == APP_CONTROL_ERROR_NONE) {
+                       ac_info.reply_cb(value);
+               }
+               else {
+                       LOGE("_app_control_result_cb Failed");
+           }
+       }
+       else {
+               LOGE("_app_control_result_cb APP_CONTROL_RESULT_FAILED.");
+       }
+}
diff --git a/oobe-country/src/data.c b/oobe-country/src/data.c
new file mode 100644 (file)
index 0000000..11a10af
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "data.h"
+#include <utils.h>
+#include <Elementary.h>
+#include "oobe-country.h"
+#include "xml-loader.h"
+
+#define COUNTRIES_XML_PATH "data/countries_OOBE.xml"
+
+static Eina_List *countries_list = NULL;
+
+bool data_get_country(int country_index, const char **country)
+{
+       Eina_List *node = eina_list_nth_list(countries_list, country_index);
+
+       if (node == NULL) {
+               return false;
+       } else {
+               country_h *c = (country_h *)eina_list_data_get(node);
+               if (c == NULL) {
+                       return false;
+               } else {
+                       *country = c->name;
+                       return true;
+               }
+       }
+}
+
+void data_load_countries()
+{
+       char path[PATH_MAX];
+       utils_get_app_resource_path(COUNTRIES_XML_PATH, path, PATH_MAX);
+       countries_list = xml_get_countries_list(path);
+}
+
+void data_destroy()
+{
+       xml_countries_list_destroy();
+}
+
+bool data_get(int country_index, const char **code, const char **name, const char **timezone, const char **cityname)
+{
+       Eina_List *node = eina_list_nth_list(countries_list, country_index);
+
+       if (node == NULL) {
+               return false;
+       } else {
+               country_h *c = (country_h *)eina_list_data_get(node);
+               if (c == NULL) {
+                       return false;
+               } else {
+                       *code = c->code;
+                       *name = c->name;
+                       *timezone = c->timezone;
+                       *cityname = c->cityname;
+                       return true;
+               }
+       }
+}
diff --git a/oobe-country/src/oobe-country.c b/oobe-country/src/oobe-country.c
new file mode 100644 (file)
index 0000000..32d703e
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-country.h"
+#include <log.h>
+#include "view.h"
+#include "data.h"
+#include "app-control.h"
+#include "vconf.h"
+
+static bool _get_available_country_cb(const char **country);
+static void _country_selected_cb(const char *country);
+static void _get_countries_list_cb();
+
+static bool app_create(void *user_data)
+{
+       return true;
+}
+
+static void app_terminate(void *user_data)
+{
+       view_destroy();
+       data_destroy();
+}
+
+static void app_control(app_control_h app_control, void *user_data)
+{
+       view_destroy();
+       view_set_callbacks(_get_available_country_cb, _country_selected_cb, _get_countries_list_cb);
+
+       char* app_id = NULL;
+       app_control_get_caller(app_control, &app_id);
+       LOGD("Launched by %s", app_id ? app_id : "unknown caller");
+
+       if (app_id && strcmp(app_id, "org.tizen.oobe") == 0) {
+               view_create(NULL);
+       } else {
+               char *caller = NULL;
+               app_control_get_extra_data(app_control, "caller", &caller);
+               LOGD("Checking for caller extra data.");
+
+               if (caller && strcmp(caller, "oobe-setup") == 0) {
+                       view_create(NULL);
+               } else {
+                       LOGE("Failed running app due to wrong app_control caller.");
+                       ui_app_exit();
+               }
+
+               free(caller);
+       }
+
+       free(app_id);
+       app_control_save_reply_handler(app_control);
+}
+
+static void app_pause(void *user_data)
+{
+}
+
+static void app_resume(void *user_data)
+{
+}
+
+static void ui_app_lang_changed(app_event_info_h event_info, void *user_data)
+{
+       int ret;
+       char *language;
+
+       ret = app_event_get_language(event_info, &language);
+       if (ret != APP_ERROR_NONE) {
+               LOGE("app_event_get_language() failed. Err = %d.", ret);
+               return;
+       }
+
+       if (language != NULL) {
+               elm_language_set(language);
+               free(language);
+       }
+}
+
+int main(int argc, char *argv[])
+{
+       int ret = 0;
+
+       ui_app_lifecycle_callback_s event_callback = {0,};
+       app_event_handler_h handler = 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(&handler, APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, NULL);
+
+       ret = ui_app_main(argc, argv, &event_callback, NULL);
+       if (ret != APP_ERROR_NONE) {
+               LOGE("ui_app_main() failed. err = %d", ret);
+       }
+
+       return ret;
+}
+
+
+static bool _get_available_country_cb(const char **country)
+{
+       static int i = 0;
+       bool ret;
+
+       ret = data_get_country(i, country);
+
+       if (ret) {
+               ++i;
+       } else {
+               LOGI("total countries %d", i);
+
+               char signal_name[20];
+               sprintf(signal_name, "signal_country_%d", i);
+               view_layout_country_signal_emit(signal_name, "");
+
+               i = 0;
+       }
+
+       return ret;
+}
+
+static void _get_countries_list_cb()
+{
+       data_load_countries();
+}
+
+static bool _is_same_string(const char *s1, const char *s2)
+{
+       if (!s1 || !s2)
+               return false;
+
+       return (strncmp(s1, s2, strlen(s1)) == 0 && strlen(s1) == strlen(s2));
+}
+
+static void _country_selected_cb(const char *country)
+{
+       int i = 0;
+       const char *code = NULL;
+       const char *name = NULL;
+       const char *timezone = NULL;
+       const char *cityname = NULL;
+
+       while (data_get(i++, &code, &name, &timezone, &cityname))
+       {
+               if (_is_same_string(country, name))
+               {
+                       int ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, timezone);
+                       if (ret != SYSTEM_SETTINGS_ERROR_NONE)
+                       {
+                               LOGE("error setting locale timezone to '%s': %d", timezone, ret);
+                       }
+
+                       ret = vconf_set_str(VCONFKEY_SETAPPL_CITYNAME_INDEX_INT, cityname);
+                       if (ret != VCONF_OK)
+                       {
+                               LOGE("error setting cityname to '%s': %d", cityname, ret);
+                       }
+
+                       ret = vconf_set_str("db/setting/country_code", code);
+                       if (ret != VCONF_OK)
+                       {
+                               LOGE("error setting country code to '%s': %d", code, ret);
+                       }
+
+                       break;
+               }
+       }
+
+       app_control_reply("next");
+       ui_app_exit();
+}
diff --git a/oobe-country/src/view.c b/oobe-country/src/view.c
new file mode 100644 (file)
index 0000000..1ea11e5
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-country.h"
+#include "view.h"
+#include <log.h>
+#include "view-defines.h"
+#include "app-control.h"
+#include <oobe-common.h>
+
+static struct view_info {
+       Evas_Object *win;
+       Evas_Object *conform;
+       Evas_Object *naviframe;
+       Evas_Object *layout_country;
+       Evas_Object *country_list;
+       countries_query_cb countries_query_func;
+       country_selected_cb country_selected_func;
+       load_countries_cb load_countries_func;
+} s_info = {
+       .win = NULL,
+       .conform = NULL,
+       .naviframe = NULL,
+       .layout_country = NULL,
+       .country_list = NULL,
+       .countries_query_func = NULL,
+       .country_selected_func = NULL,
+       .load_countries_func = NULL
+};
+
+static bool _is_same_string(const char *s1, const char *s2);
+static void view_set_part_texts();
+static Eina_Bool _create_country_layout(void);
+static Evas_Object *_get_country_content_cb(void *data, Evas_Object *obj, const char *part);
+static void _country_item_selected_cb(void *data, Evas_Object *obj, void *event_info);
+
+void view_layout_country_signal_emit(const char *emission, const char *source)
+{
+       elm_object_signal_emit(s_info.layout_country, emission, source);
+}
+
+Eina_Bool view_create(void *user_data)
+{
+       /* Create the window */
+       s_info.win = utils_view_create_win(PACKAGE);
+       if (s_info.win == NULL) {
+               LOGE("failed to create a window.");
+               return EINA_FALSE;
+       }
+
+       if (elm_win_wm_rotation_supported_get(s_info.win)) {
+               int rots[] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(s_info.win, (const int *)(&rots), 4);
+       }
+
+       elm_win_indicator_opacity_set(s_info.win, ELM_WIN_INDICATOR_TRANSPARENT);
+
+       /* Create the conformant */
+       s_info.conform = utils_view_create_conformant(s_info.win);
+       if (s_info.conform == NULL) {
+               LOGE("failed to create a conformant");
+               return EINA_FALSE;
+       }
+
+       s_info.naviframe = utils_view_create_naviframe(s_info.conform);
+       if (s_info.naviframe == NULL) {
+               LOGE("failed to create a naviframe");
+               return EINA_FALSE;
+       }
+
+       if (!_create_country_layout()) {
+               LOGE("failed to create main layout.");
+               return EINA_FALSE;
+       }
+
+       elm_naviframe_item_push(s_info.naviframe, NULL, NULL, NULL, s_info.layout_country, "tabbar/notitle");
+
+       /* Show the window after main view is set up */
+       evas_object_show(s_info.win);
+
+       return EINA_TRUE;
+}
+
+void view_destroy(void)
+{
+       if (s_info.win == NULL) {
+               return;
+       }
+
+       evas_object_del(s_info.win);
+}
+
+void view_set_callbacks(countries_query_cb countries_query_func, country_selected_cb country_selected_func, load_countries_cb load_countries_func)
+{
+       s_info.countries_query_func = countries_query_func;
+       s_info.country_selected_func = country_selected_func;
+       s_info.load_countries_func = load_countries_func;
+}
+
+static bool _is_same_string(const char *s1, const char *s2)
+{
+       if (!s1 || !s2)
+               return false;
+
+       return (strncmp(s1, s2, strlen(s1)) == 0 && strlen(s1) == strlen(s2));
+}
+
+static void view_set_part_texts()
+{
+       elm_object_translatable_part_text_set(s_info.layout_country, PART_COUNTRY_TITLE, "TITLE");
+       elm_object_translatable_part_text_set(s_info.layout_country, PART_SELECT_COUNTRY_TEXT, "SELECT_COUNTRY");
+}
+
+static Eina_Bool _create_country_layout(void)
+{
+       Elm_Genlist_Item_Class *itc;
+       const char *country = NULL;
+
+       s_info.layout_country = utils_view_create_set_layout(s_info.naviframe, EDJ_COUNTRY, GRP_COUNTRY, NULL);
+       if (!s_info.layout_country) {
+               return EINA_FALSE;
+       }
+
+       s_info.country_list = utils_view_create_genlist(s_info.layout_country, PART_COUNTRY_LIST);
+       if (!s_info.country_list) {
+               return EINA_FALSE;
+       }
+       elm_genlist_homogeneous_set(s_info.country_list, EINA_TRUE);
+       elm_object_style_set(s_info.country_list, "no_effect");
+
+       itc = utils_view_create_genlist_item_class(_get_country_content_cb);
+       if (!itc) {
+               return EINA_FALSE;
+       }
+
+       if (!s_info.countries_query_func) {
+               LOGE("function countries_query_func not assigned.");
+               return EINA_FALSE;
+       }
+
+       s_info.load_countries_func();
+
+       while(s_info.countries_query_func(&country)) {
+               if (country) {
+                       elm_genlist_item_append(s_info.country_list, itc, (void *)country, NULL, ELM_GENLIST_ITEM_NONE, _country_item_selected_cb, (void *)country);
+               }
+       }
+
+       view_set_part_texts();
+
+       return EINA_TRUE;
+}
+
+static Evas_Object *_get_country_content_cb(void *data, Evas_Object *obj, const char *part)
+{
+       Evas_Object *layout;
+       const char *text = (const char *)data;
+
+       if (_is_same_string(part, "elm.swallow.content")) {
+               layout = utils_view_create_layout(obj, EDJ_COUNTRY, GRP_COUNTRY_ITEM);
+               if (!layout) {
+                       return NULL;
+               }
+
+               evas_object_show(layout);
+
+               if (text) {
+                       elm_object_part_text_set(layout, PART_COUNTRY_ITEM_LABEL, text);
+               }
+               else {
+                       elm_object_part_text_set(layout, PART_COUNTRY_ITEM_LABEL, "Unknown");
+               }
+
+               return layout;
+       }
+
+       return NULL;
+}
+
+static void _country_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       const char *country = (const char *)data;
+       LOGD("%s was selected.", country);
+
+       elm_naviframe_item_pop(s_info.naviframe);
+       s_info.layout_country = NULL;
+       s_info.country_list = NULL;
+
+       s_info.country_selected_func(country);
+}
diff --git a/oobe-country/src/xml-loader.c b/oobe-country/src/xml-loader.c
new file mode 100644 (file)
index 0000000..1b83af2
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "xml-loader.h"
+#include <log.h>
+
+#include <Elementary.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <stdlib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <glib.h>
+
+static void _parse_countries_xml(char *docname);
+static void _walk_countries_xml(xmlNodePtr cur);
+
+static Eina_List *countries_list = NULL;
+
+Eina_List *xml_get_countries_list(char *path)
+{
+       if (NULL == countries_list) {
+               _parse_countries_xml(path);
+       }
+
+       return countries_list;
+}
+
+void xml_countries_list_destroy()
+{
+       Eina_List *list = countries_list;
+       country_h *node;
+
+       while (list) {
+               node = (country_h *)eina_list_data_get(list);
+               if (node) {
+                       G_FREE(node->code);
+                       G_FREE(node->name);
+                       FREE(node);
+               }
+
+               list = eina_list_next(list);
+       }
+
+       countries_list = eina_list_free(countries_list); /* returns NULL */
+
+       xmlCleanupParser();
+}
+
+static void _parse_countries_xml(char *docname)
+{
+       xmlDocPtr doc;
+       xmlNodePtr cur;
+
+       doc = xmlParseFile(docname);
+
+       if (doc == NULL) {
+               LOGE("Document not parsed successfully.");
+               return;
+       }
+
+       cur = xmlDocGetRootElement(doc);
+       if (cur == NULL) {
+               LOGE("Empty document");
+               xmlFreeDoc(doc);
+               return;
+       }
+
+       if (xmlStrcmp(cur->name, (const xmlChar *)"countries")) {
+               LOGE("Document of the wrong type, root node != langlist");
+               xmlFreeDoc(doc);
+               return;
+       }
+
+       cur = cur->xmlChildrenNode;
+       _walk_countries_xml(cur);
+
+       if (doc != NULL) {
+               xmlFreeDoc(doc);
+       }
+}
+
+static void _walk_countries_xml(xmlNodePtr cur)
+{
+       xmlNode *cur_node = NULL;
+       char *code;
+       char *name;
+       char *timezone;
+       char *cityname;
+
+       for (cur_node = cur; cur_node; cur_node = cur_node->next) {
+               if (cur_node->type == XML_ELEMENT_NODE) {
+                       code = (char *)g_strdup((char *)xmlGetProp(cur_node, (const xmlChar *)"code"));
+                       name = (char *)g_strdup((char *)xmlGetProp(cur_node, (const xmlChar *)"name"));
+                       timezone = (char *)g_strdup((char *)xmlGetProp(cur_node, (const xmlChar *)"timezone"));
+                       cityname = (char *)g_strdup((char *)xmlGetProp(cur_node, (const xmlChar *)"cityname"));
+
+                       country_h *country = (country_h *)calloc(1, sizeof(country_h));
+
+                       if (country) {
+                               country->code = code;
+                               country->name = name;
+                               country->timezone = timezone;
+                               country->cityname = cityname;
+                               countries_list = eina_list_append(countries_list, country);
+
+                               LOGD("country code: %s, name: %s, cityname: %s, timezone: %s", country->code, country->name, country->cityname, country->timezone);
+                       }
+               }
+       }
+}
diff --git a/oobe-country/tizen-manifest.xml b/oobe-country/tizen-manifest.xml
new file mode 100644 (file)
index 0000000..79b7d5f
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.tizen.oobe-country" version="1.0.0">
+    <profile name="mobile"/>
+    <ui-application appid="org.tizen.oobe-country" exec="oobe-country" launch_mode="single" multiple="false" nodisplay="true" taskmanage="false" type="capp">
+        <label>oobe-country</label>
+        <icon>oobe-country.png</icon>
+    </ui-application>
+    <privileges>
+        <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+    </privileges>
+</manifest>
diff --git a/oobe-easy-setup/.cproject b/oobe-easy-setup/.cproject
new file mode 100644 (file)
index 0000000..4fec2a4
--- /dev/null
@@ -0,0 +1,655 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-easy-setup" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.52277763" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.946206827" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder autoBuildTarget="all" buildPath="${workspace_loc:/oobe-easy-setup}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1520604450" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.758696720" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.802378285" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1697068666" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.2144548012" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.533821945" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.294093630" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.942175546" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1699656852" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.586992872" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/api-cpp/src}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/ses-cpp/src}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="/home/k.wieclaw/workspace/chair-setup/oobe-easy-setup/inc/services/${SDK_ARCH}"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1882442707" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.499646319" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.dialect.std.2027193221" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++1y" valueType="enumerated"/>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.402767253" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1141856070" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.535673547" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.1816402512" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1057841414" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1785849284" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.113087976" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.760210771" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.1229709013" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="/home/k.wieclaw/workspace/chair-setup/oobe-easy-setup/inc/services/${SDK_ARCH}"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1236930439" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1424018913" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1401012689" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.189273298" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.573995231" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.1277943749" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.41135143" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.639800704" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.651525536" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.700243507" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.libs.1823861238" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs">
+                                                                       <listOptionValue builtIn="false" value="st_thing_master_api"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.other.408667859" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="-rpath=$$ORIGIN/../lib/services/${SDK_ARCH}"/>
+                                                                       <listOptionValue builtIn="false" value="-rpath=./services/${SDK_ARCH}"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2091948199" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.356679142" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.2101956884" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.898465126" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1041071141" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1037812068" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.315079439" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1307162722" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1101406106" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.218186055" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="api-cpp/src"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="ses-cpp/src"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.238165481">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.238165481" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-easy-setup" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.238165481" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.238165481." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.396029784" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1696289585" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder buildPath="${workspace_loc:/oobe-easy-setup}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1958474822" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1339790339" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1347042439" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.873315773" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.176356456" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.562497055" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1714250279" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.515728240" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1327923693" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.773843936" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="/home/k.wieclaw/workspace/chair-setup/oobe-easy-setup/inc/services/${SDK_ARCH}"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1752610314" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.840391898" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1718927725" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.256299153" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.544141194" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.893322625" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1838303740" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.3875207" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1746609005" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.2083141862" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="/home/k.wieclaw/workspace/chair-setup/oobe-easy-setup/inc/services/${SDK_ARCH}"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.317466654" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.832911699" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.412413729" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1161091416" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.720735844" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.1978490334" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.329007922" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.765538515" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.1961114256" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.libs.1963943712" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
+                                                               <option id="gnu.cpp.link.option.other.2079174021" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="-rpath=$$ORIGIN/../lib/services/${SDK_ARCH}"/>
+                                                                       <listOptionValue builtIn="false" value="-rpath=./services/${SDK_ARCH}"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1431455794" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1697741595" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.479213987" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.1032569412" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.316506884" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1052070204" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.1612138443" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1800629631" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1288348067" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1763555228" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="api-cpp/src"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="ses-cpp/src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="oobe-easy-setup.org.tizen.nativecore.target.sbi.gcc45.app.1909398531" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.238165481">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="refreshScope" versionNumber="2">
+               <configuration configurationName="Debug">
+                       <resource resourceType="PROJECT" workspacePath="/oobe-easy-setup"/>
+               </configuration>
+               <configuration configurationName="Release">
+                       <resource resourceType="PROJECT" workspacePath="/oobe-easy-setup"/>
+               </configuration>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+</cproject>
diff --git a/oobe-easy-setup/.exportMap b/oobe-easy-setup/.exportMap
new file mode 100644 (file)
index 0000000..de30516
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       global: main;
+       _IO_*;
+       local: *;
+};
diff --git a/oobe-easy-setup/.project b/oobe-easy-setup/.project
new file mode 100644 (file)
index 0000000..73ecd14
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>oobe-easy-setup</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+       <filteredResources>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>26</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+                       </matcher>
+               </filter>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>6</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+                       </matcher>
+               </filter>
+       </filteredResources>
+</projectDescription>
diff --git a/oobe-easy-setup/.settings/org.eclipse.cdt.codan.core.prefs b/oobe-easy-setup/.settings/org.eclipse.cdt.codan.core.prefs
new file mode 100644 (file)
index 0000000..ef739f5
--- /dev/null
@@ -0,0 +1,71 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.codan.checkers.errnoreturn=Warning
+org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false}
+org.eclipse.cdt.codan.checkers.errreturnvalue=Error
+org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"}
+org.eclipse.cdt.codan.checkers.nocommentinside=-Error
+org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"}
+org.eclipse.cdt.codan.checkers.nolinecomment=-Error
+org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"}
+org.eclipse.cdt.codan.checkers.noreturn=Error
+org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false}
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=-Error
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"}
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"}
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false}
+org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
+org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"}
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true}
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments=-Error
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"}
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"}
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"}
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"}
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"}
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false}
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false}
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")}
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"}
diff --git a/oobe-easy-setup/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/oobe-easy-setup/.settings/org.eclipse.cdt.managedbuilder.core.prefs
new file mode 100644 (file)
index 0000000..ea4eebf
--- /dev/null
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+environment/buildEnvironmentInclude/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/CPATH/delimiter=\:
+environment/buildEnvironmentInclude/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/CPATH/operation=remove
+environment/buildEnvironmentInclude/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/CPLUS_INCLUDE_PATH/delimiter=\:
+environment/buildEnvironmentInclude/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/CPLUS_INCLUDE_PATH/operation=remove
+environment/buildEnvironmentInclude/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/C_INCLUDE_PATH/delimiter=\:
+environment/buildEnvironmentInclude/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/C_INCLUDE_PATH/operation=remove
+environment/buildEnvironmentInclude/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/append=true
+environment/buildEnvironmentInclude/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/appendContributed=true
+environment/buildEnvironmentLibrary/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/LIBRARY_PATH/delimiter=\:
+environment/buildEnvironmentLibrary/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/LIBRARY_PATH/operation=remove
+environment/buildEnvironmentLibrary/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/append=true
+environment/buildEnvironmentLibrary/org.tizen.nativecore.config.sbi.gcc45.app.debug.2046301080/appendContributed=true
diff --git a/oobe-easy-setup/.tproject b/oobe-easy-setup/.tproject
new file mode 100644 (file)
index 0000000..d25d429
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+    <platforms>
+        <platform>
+            <name>iot-headed-5.0</name>
+        </platform>
+    </platforms>
+    <package>
+        <blacklist/>
+        <resFallback autoGen="true"/>
+    </package>
+</tproject>
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/ApiResult.hpp b/oobe-easy-setup/api-cpp/src/tizen/ApiResult.hpp
new file mode 100644 (file)
index 0000000..f8f9ab9
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZENAPIRESULT_H
+#define TIZENAPIRESULT_H
+
+#include "Error.hpp"
+#include "Result.hpp"
+
+namespace tizen {
+template <typename T>
+using ApiResult = Result<T, tizen::Error>;
+
+} /* tizen */
+
+#endif /* TIZENAPIRESULT_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/ApiUtils.hpp b/oobe-easy-setup/api-cpp/src/tizen/ApiUtils.hpp
new file mode 100644 (file)
index 0000000..b385003
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 APIUTILS_HPP
+#define APIUTILS_HPP
+
+#define IMPLEMENT_METHOD(retType, declaration, localParams, apiCall, retValue) \
+ApiResult<retType> declaration \
+{ \
+  localParams; \
+  int err = apiCall; \
+  if (err != TIZEN_ERROR_NONE) { \
+    return ApiResult<retType>::Error(err); \
+  } else { \
+    return ApiResult<retType>::Ok(retValue); \
+  } \
+}
+
+#endif /* end of include guard: APIUTILS_HPP */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/DLog.hpp b/oobe-easy-setup/api-cpp/src/tizen/DLog.hpp
new file mode 100644 (file)
index 0000000..daf90c2
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 LOG_H
+#define LOG_H
+
+#include <dlog.h>
+#include <string>
+
+namespace tizen {
+
+template<typename T>
+class DLog
+{
+       public:
+               template<typename ...Args>
+               static void Dbg(const char *format, Args... args)
+               {
+                       dlog_print(DLOG_DEBUG, T::tag, format, std::forward<Args>(args)...);
+               }
+               static void Dbg(const char *format)
+               {
+                       dlog_print(DLOG_DEBUG, T::tag, format, nullptr);
+               }
+               template<typename ...Args>
+               static void Inf(const char *format, Args... args)
+               {
+                       dlog_print(DLOG_INFO, T::tag, format, std::forward<Args>(args)...);
+               }
+               static void Inf(const char *format)
+               {
+                       dlog_print(DLOG_INFO, T::tag, format, nullptr);
+               }
+               template<typename ...Args>
+               static void Wrn(const char *format, Args... args)
+               {
+                       dlog_print(DLOG_WARN, T::tag, format, std::forward<Args>(args)...);
+               }
+               static void Wrn(const char *format)
+               {
+                       dlog_print(DLOG_WARN, T::tag, format, nullptr);
+               }
+               template<typename ...Args>
+               static void Err(const char *format, Args... args)
+               {
+                       dlog_print(DLOG_ERROR, T::tag, format, std::forward<Args>(args)...);
+               }
+               static void Err(const char *format)
+               {
+                       dlog_print(DLOG_ERROR, T::tag, format, nullptr);
+               }
+               template<typename ...Args>
+               static void Fat(const char *format, Args... args)
+               {
+                       dlog_print(DLOG_FATAL, T::tag, format, std::forward<Args>(args)...);
+               }
+               static void Fat(const char *format)
+               {
+                       dlog_print(DLOG_FATAL, T::tag, format, nullptr);
+               }
+};
+
+} /* tizen */
+
+#endif
diff --git a/oobe-easy-setup/api-cpp/src/tizen/Error.hpp b/oobe-easy-setup/api-cpp/src/tizen/Error.hpp
new file mode 100644 (file)
index 0000000..dd38983
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZENERROR_H
+#define TIZENERROR_H
+
+#include <tizen.h>
+
+namespace tizen {
+
+struct Error {
+public:
+    Error() = default;
+    Error(int error_code)
+        : code_number(error_code)
+    {
+    }
+
+    const char* message() const
+    {
+        return get_error_message(code_number);
+    }
+
+    int code() const
+    {
+        return code_number;
+    }
+
+private:
+    int code_number;
+};
+
+} /* tizen */
+
+#endif /* TIZENERROR_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/Logger.cpp b/oobe-easy-setup/api-cpp/src/tizen/Logger.cpp
new file mode 100644 (file)
index 0000000..1499305
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "Logger.hpp"
+
+constexpr char tizen::TizenppLoggerConfig::tag[];
diff --git a/oobe-easy-setup/api-cpp/src/tizen/Logger.hpp b/oobe-easy-setup/api-cpp/src/tizen/Logger.hpp
new file mode 100644 (file)
index 0000000..1b1ef58
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "DLog.hpp"
+
+namespace tizen {
+
+struct TizenppLoggerConfig
+{
+       static constexpr char tag[] = "tizenpp";
+};
+
+using logger = DLog<TizenppLoggerConfig>;
+
+} /* tizen */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/Result.hpp b/oobe-easy-setup/api-cpp/src/tizen/Result.hpp
new file mode 100644 (file)
index 0000000..40ae5cd
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 RESULT_H
+#define RESULT_H
+
+#include <utility>
+#include <stdexcept>
+
+template <typename T, typename E>
+class Result {
+public:
+
+    explicit operator bool()
+    {
+        return !is_error;
+    }
+
+    const E& error() const
+    {
+        return err;
+    }
+
+    T& result()
+    {
+        return res;
+    }
+
+       T& unwrap() {
+               if (is_error)
+                       throw std::runtime_error(error().message());
+               return res;
+       }
+
+    static Result Ok(T val)
+    {
+        return Result(std::move(val));
+    }
+
+    static Result Error(E err)
+    {
+        return Result(std::move(err));
+    }
+
+private:
+    Result(T t)
+        : res(std::move(t))
+    {
+        is_error = false;
+    }
+
+    Result(E e)
+        : err(std::move(e))
+    {
+        is_error = true;
+    }
+
+    T res;
+    E err;
+    bool is_error;
+};
+
+template <typename E>
+class Result<void, E> {
+public:
+    explicit operator bool()
+    {
+        return !is_error;
+    }
+
+    const E& error() const
+    {
+        return err;
+    }
+
+       void unwrap() {
+               if (is_error)
+                       throw std::runtime_error(error().message());
+       }
+
+    static Result Ok()
+    {
+        return Result();
+    }
+
+    static Result Error(E err)
+    {
+        return Result(std::move(err));
+    }
+
+private:
+    Result()
+    {
+        is_error = false;
+    }
+
+    Result(E e)
+        : err(std::move(e))
+    {
+        is_error = true;
+    }
+
+    E err;
+    bool is_error;
+};
+#endif /* RESULT_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/Strings.cpp b/oobe-easy-setup/api-cpp/src/tizen/Strings.cpp
new file mode 100644 (file)
index 0000000..060a3fd
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "Strings.hpp"
+
+std::string tizen::wrapMallocString(char* mem)
+{
+    std::string ret(mem);
+    free(mem);
+    return ret;
+}
+
+std::string tizen::wrapMallocString(char* mem, size_t len)
+{
+    std::string ret(mem, len);
+    free(mem);
+    return ret;
+}
diff --git a/oobe-easy-setup/api-cpp/src/tizen/Strings.hpp b/oobe-easy-setup/api-cpp/src/tizen/Strings.hpp
new file mode 100644 (file)
index 0000000..7d189ba
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 STRINGS_HPP
+#define STRINGS_HPP
+
+#include <string>
+#include <cstddef>
+
+namespace tizen {
+
+std::string wrapMallocString(char* mem);
+std::string wrapMallocString(char* mem, std::size_t len);
+
+} /* tizen */
+
+#endif /* end of include guard: STRINGS_HPP */
+
diff --git a/oobe-easy-setup/api-cpp/src/tizen/ThreadUtils.cpp b/oobe-easy-setup/api-cpp/src/tizen/ThreadUtils.cpp
new file mode 100644 (file)
index 0000000..e4d5392
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "ThreadUtils.hpp"
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#pragma GCC diagnostic ignored "-Wuseless-cast"
+#pragma GCC diagnostic ignored "-Wpedantic"
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#pragma GCC diagnostic ignored "-Wfloat-conversion"
+#pragma GCC diagnostic ignored "-Wdouble-promotion"
+#include <Ecore.h>
+#pragma GCC diagnostic pop
+#include <functional>
+#include <utility>
+
+using namespace tizen;
+
+void ThreadUtils::InvokeOnUIThreadSync(std::function<void()> func)
+{
+    auto _func = new std::function<void()>(std::move(func));
+    ecore_main_loop_thread_safe_call_sync(UIThreadCallbackSync,
+        static_cast<void*>(_func));
+}
+
+void ThreadUtils::InvokeOnUIThread(std::function<void()> func)
+{
+    auto _func = new std::function<void()>(std::move(func));
+    ecore_main_loop_thread_safe_call_async(UIThreadCallback,
+        static_cast<void*>(_func));
+}
+
+void* ThreadUtils::UIThreadCallbackSync(void* data)
+{
+    auto _func = static_cast<std::function<void()>*>(data);
+    (*_func)();
+    delete _func;
+    return NULL;
+}
+
+void ThreadUtils::UIThreadCallback(void* data)
+{
+    auto _func = static_cast<std::function<void()>*>(data);
+    (*_func)();
+    delete _func;
+}
diff --git a/oobe-easy-setup/api-cpp/src/tizen/ThreadUtils.hpp b/oobe-easy-setup/api-cpp/src/tizen/ThreadUtils.hpp
new file mode 100644 (file)
index 0000000..d792c49
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 _THREAD_UTILS_H_
+#define _THREAD_UTILS_H_
+
+#include <functional>
+
+namespace tizen {
+
+class ThreadUtils {
+public:
+    static void InvokeOnUIThreadSync(std::function<void()> func);
+    static void InvokeOnUIThread(std::function<void()> func);
+
+private:
+    static void* UIThreadCallbackSync(void* data);
+    static void UIThreadCallback(void* data);
+};
+
+} //namespace tizen
+
+#endif
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/AppControl.cpp b/oobe-easy-setup/api-cpp/src/tizen/application/AppControl.cpp
new file mode 100644 (file)
index 0000000..714d0ac
--- /dev/null
@@ -0,0 +1,740 @@
+/*
+ * Copyright  AppControl::(c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0  AppControl::(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 "tizen/application/AppControl.hpp"
+#include "tizen/application/AppException.hpp"
+#include "tizen/Strings.hpp"
+#include "tizen/Logger.hpp"
+#include <algorithm>
+
+namespace tizen {
+namespace application {
+
+//Operation types strings
+const std::string AppControl::OPERATION_STRING_NONE("");
+const std::string AppControl::OPERATION_STRING_MAIN(APP_CONTROL_OPERATION_MAIN);
+const std::string AppControl::OPERATION_STRING_DEFAULT(APP_CONTROL_OPERATION_DEFAULT);
+const std::string AppControl::OPERATION_STRING_EDIT(APP_CONTROL_OPERATION_EDIT);
+const std::string AppControl::OPERATION_STRING_VIEW(APP_CONTROL_OPERATION_VIEW);
+const std::string AppControl::OPERATION_STRING_PICK(APP_CONTROL_OPERATION_PICK);
+const std::string AppControl::OPERATION_STRING_CREATE_CONTENT(APP_CONTROL_OPERATION_CREATE_CONTENT);
+const std::string AppControl::OPERATION_STRING_CALL(APP_CONTROL_OPERATION_CALL);
+const std::string AppControl::OPERATION_STRING_SEND(APP_CONTROL_OPERATION_SEND);
+const std::string AppControl::OPERATION_STRING_SEND_TEXT(APP_CONTROL_OPERATION_SEND_TEXT);
+const std::string AppControl::OPERATION_STRING_SHARE(APP_CONTROL_OPERATION_SHARE);
+const std::string AppControl::OPERATION_STRING_MULTI_SHARE(APP_CONTROL_OPERATION_MULTI_SHARE);
+const std::string AppControl::OPERATION_STRING_SHARE_TEXT(APP_CONTROL_OPERATION_SHARE_TEXT);
+const std::string AppControl::OPERATION_STRING_DIAL(APP_CONTROL_OPERATION_DIAL);
+const std::string AppControl::OPERATION_STRING_SEARCH(APP_CONTROL_OPERATION_SEARCH);
+const std::string AppControl::OPERATION_STRING_DOWNLOAD(APP_CONTROL_OPERATION_DOWNLOAD);
+const std::string AppControl::OPERATION_STRING_PRINT(APP_CONTROL_OPERATION_PRINT);
+const std::string AppControl::OPERATION_STRING_COMPOSE(APP_CONTROL_OPERATION_COMPOSE);
+const std::string AppControl::OPERATION_STRING_LAUNCH_ON_EVENT(APP_CONTROL_OPERATION_LAUNCH_ON_EVENT);
+const std::string AppControl::OPERATION_STRING_ADD(APP_CONTROL_OPERATION_ADD);
+const std::string AppControl::OPERATION_STRING_IMAGE_CAPTURE(APP_CONTROL_OPERATION_IMAGE_CAPTURE);
+const std::string AppControl::OPERATION_STRING_VIDEO_CAPTURE(APP_CONTROL_OPERATION_VIDEO_CAPTURE);
+const std::string AppControl::OPERATION_STRING_SETTING_BT_ENABLE(APP_CONTROL_OPERATION_SETTING_BT_ENABLE);
+const std::string AppControl::OPERATION_STRING_SETTING_BT_VISIBILITY(APP_CONTROL_OPERATION_SETTING_BT_VISIBILITY);
+const std::string AppControl::OPERATION_STRING_SETTING_LOCATION(APP_CONTROL_OPERATION_SETTING_LOCATION);
+const std::string AppControl::OPERATION_STRING_SETTING_NFC(APP_CONTROL_OPERATION_SETTING_NFC);
+const std::string AppControl::OPERATION_STRING_SETTING(APP_CONTROL_OPERATION_SETTING);
+const std::string AppControl::OPERATION_STRING_SETTING_WIFI(APP_CONTROL_OPERATION_SETTING_WIFI);
+const std::string AppControl::OPERATION_STRING_SETTING_VPN(APP_CONTROL_OPERATION_SETTING_VPN);
+const std::string AppControl::OPERATION_STRING_GET_INPUT(APP_CONTROL_OPERATION_GET_INPUT);
+const std::string AppControl::OPERATION_STRING_MEDIA_CONTROLLER(APP_CONTROL_OPERATION_MEDIA_CONTROLLER);
+const std::string AppControl::OPERATION_STRING_PRIVACY_SETTING_GUIDE(APP_CONTROL_OPERATION_PRIVACY_SETTING_GUIDE);
+
+//Data types strings
+const std::string AppControl::DATA_STRING_NONE("");
+const std::string AppControl::DATA_STRING_FEATURE(APP_CONTROL_DATA_FEATURE);
+const std::string AppControl::DATA_STRING_PRIVILEGES(APP_CONTROL_DATA_PRIVILEGES);
+const std::string AppControl::DATA_STRING_SUBJECT(APP_CONTROL_DATA_SUBJECT);
+const std::string AppControl::DATA_STRING_TO(APP_CONTROL_DATA_TO);
+const std::string AppControl::DATA_STRING_CC(APP_CONTROL_DATA_CC);
+const std::string AppControl::DATA_STRING_BCC(APP_CONTROL_DATA_BCC);
+const std::string AppControl::DATA_STRING_TEXT(APP_CONTROL_DATA_TEXT);
+const std::string AppControl::DATA_STRING_TITLE(APP_CONTROL_DATA_TITLE);
+const std::string AppControl::DATA_STRING_SELECTED(APP_CONTROL_DATA_SELECTED);
+const std::string AppControl::DATA_STRING_PATH(APP_CONTROL_DATA_PATH);
+const std::string AppControl::DATA_STRING_SELECTION_MODE(APP_CONTROL_DATA_SELECTION_MODE);
+const std::string AppControl::DATA_STRING_CALENDAR_ALL_DAY(APP_CONTROL_DATA_CALENDAR_ALL_DAY);
+const std::string AppControl::DATA_STRING_CALENDAR_START_TIME(APP_CONTROL_DATA_CALENDAR_START_TIME);
+const std::string AppControl::DATA_STRING_CALENDAR_END_TIME(APP_CONTROL_DATA_CALENDAR_END_TIME);
+const std::string AppControl::DATA_STRING_EMAIL(APP_CONTROL_DATA_EMAIL);
+const std::string AppControl::DATA_STRING_PHONE(APP_CONTROL_DATA_PHONE);
+const std::string AppControl::DATA_STRING_URL(APP_CONTROL_DATA_URL);
+const std::string AppControl::DATA_STRING_ID(APP_CONTROL_DATA_ID);
+const std::string AppControl::DATA_STRING_TYPE(APP_CONTROL_DATA_TYPE);
+const std::string AppControl::DATA_STRING_TOTAL_COUNT(APP_CONTROL_DATA_TOTAL_COUNT);
+const std::string AppControl::DATA_STRING_TOTAL_SIZE(APP_CONTROL_DATA_TOTAL_SIZE);
+const std::string AppControl::DATA_STRING_NAME(APP_CONTROL_DATA_NAME);
+const std::string AppControl::DATA_STRING_LOCATION(APP_CONTROL_DATA_LOCATION);
+const std::string AppControl::DATA_STRING_INPUT_TYPE(APP_CONTROL_DATA_INPUT_TYPE);
+const std::string AppControl::DATA_STRING_INPUT_DEFAULT_TEXT(APP_CONTROL_DATA_INPUT_DEFAULT_TEXT);
+const std::string AppControl::DATA_STRING_INPUT_GUIDE_TEXT(APP_CONTROL_DATA_INPUT_GUIDE_TEXT);
+const std::string AppControl::DATA_STRING_INPUT_PREDICTION_HINT(APP_CONTROL_DATA_INPUT_PREDICTION_HINT);
+const std::string AppControl::DATA_STRING_INPUT_RETURNKEY_TYPE(APP_CONTROL_DATA_INPUT_RETURNKEY_TYPE);
+const std::string AppControl::DATA_STRING_INPUT_MAX_TEXT_LENGTH(APP_CONTROL_DATA_INPUT_MAX_TEXT_LENGTH);
+const std::string AppControl::DATA_STRING_INPUT_CURSOR_POSITION_SET(APP_CONTROL_DATA_INPUT_CURSOR_POSITION_SET);
+const std::string AppControl::DATA_STRING_INPUT_CURSOR_POSITION_GET(APP_CONTROL_DATA_INPUT_CURSOR_POSITION_GET);
+const std::string AppControl::DATA_STRING_INPUT_REPLY_TYPE(APP_CONTROL_DATA_INPUT_REPLY_TYPE);
+const std::string AppControl::DATA_STRING_WIDGET_INSTANCE_ID(APP_CONTROL_DATA_WIDGET_INSTANCE_ID);
+const std::string AppControl::DATA_STRING_WIDGET_CONTENT(APP_CONTROL_DATA_WIDGET_CONTENT);
+const std::string AppControl::DATA_STRING_WIDGET_APP_ID(APP_CONTROL_DATA_WIDGET_APP_ID);
+
+const std::map<OperationType, const std::string> AppControl::_opType2str{
+    {OperationType::NONE, OPERATION_STRING_NONE},
+    {OperationType::MAIN, OPERATION_STRING_MAIN},
+    {OperationType::DEFAULT, OPERATION_STRING_DEFAULT},
+    {OperationType::EDIT, OPERATION_STRING_EDIT},
+    {OperationType::VIEW, OPERATION_STRING_VIEW},
+    {OperationType::PICK, OPERATION_STRING_PICK},
+    {OperationType::CREATE_CONTENT, OPERATION_STRING_CREATE_CONTENT},
+    {OperationType::CALL, OPERATION_STRING_CALL},
+    {OperationType::SEND, OPERATION_STRING_SEND},
+    {OperationType::SEND_TEXT, OPERATION_STRING_SEND_TEXT},
+    {OperationType::SHARE, OPERATION_STRING_SHARE},
+    {OperationType::MULTI_SHARE, OPERATION_STRING_MULTI_SHARE},
+    {OperationType::SHARE_TEXT, OPERATION_STRING_SHARE_TEXT},
+    {OperationType::DIAL, OPERATION_STRING_DIAL},
+    {OperationType::SEARCH, OPERATION_STRING_SEARCH},
+    {OperationType::DOWNLOAD, OPERATION_STRING_DOWNLOAD},
+    {OperationType::PRINT, OPERATION_STRING_PRINT},
+    {OperationType::COMPOSE, OPERATION_STRING_COMPOSE},
+    {OperationType::LAUNCH_ON_EVENT, OPERATION_STRING_LAUNCH_ON_EVENT},
+    {OperationType::ADD, OPERATION_STRING_ADD},
+    {OperationType::IMAGE_CAPTURE, OPERATION_STRING_IMAGE_CAPTURE},
+    {OperationType::VIDEO_CAPTURE, OPERATION_STRING_VIDEO_CAPTURE},
+    {OperationType::SETTING_BT_ENABLE, OPERATION_STRING_SETTING_BT_ENABLE},
+    {OperationType::SETTING_BT_VISIBILITY, OPERATION_STRING_SETTING_BT_VISIBILITY},
+    {OperationType::SETTING_LOCATION, OPERATION_STRING_SETTING_LOCATION},
+    {OperationType::SETTING_NFC, OPERATION_STRING_SETTING_NFC},
+    {OperationType::SETTING, OPERATION_STRING_SETTING},
+    {OperationType::SETTING_WIFI, OPERATION_STRING_SETTING_WIFI},
+    {OperationType::SETTING_VPN, OPERATION_STRING_SETTING_VPN},
+    {OperationType::GET_INPUT, OPERATION_STRING_GET_INPUT},
+    {OperationType::MEDIA_CONTROLLER, OPERATION_STRING_MEDIA_CONTROLLER},
+    {OperationType::PRIVACY_SETTING_GUIDE, OPERATION_STRING_PRIVACY_SETTING_GUIDE}
+};
+
+const std::map<const std::string, OperationType> AppControl::_str2opType{
+    {OPERATION_STRING_NONE, OperationType::NONE},
+    {OPERATION_STRING_MAIN, OperationType::MAIN},
+    {OPERATION_STRING_DEFAULT, OperationType::DEFAULT},
+    {OPERATION_STRING_EDIT, OperationType::EDIT},
+    {OPERATION_STRING_VIEW, OperationType::VIEW},
+    {OPERATION_STRING_PICK, OperationType::PICK},
+    {OPERATION_STRING_CREATE_CONTENT, OperationType::CREATE_CONTENT},
+    {OPERATION_STRING_CALL, OperationType::CALL},
+    {OPERATION_STRING_SEND, OperationType::SEND},
+    {OPERATION_STRING_SEND_TEXT, OperationType::SEND_TEXT},
+    {OPERATION_STRING_SHARE, OperationType::SHARE},
+    {OPERATION_STRING_MULTI_SHARE, OperationType::MULTI_SHARE},
+    {OPERATION_STRING_SHARE_TEXT, OperationType::SHARE_TEXT},
+    {OPERATION_STRING_DIAL, OperationType::DIAL},
+    {OPERATION_STRING_SEARCH, OperationType::SEARCH},
+    {OPERATION_STRING_DOWNLOAD, OperationType::DOWNLOAD},
+    {OPERATION_STRING_PRINT, OperationType::PRINT},
+    {OPERATION_STRING_COMPOSE, OperationType::COMPOSE},
+    {OPERATION_STRING_LAUNCH_ON_EVENT, OperationType::LAUNCH_ON_EVENT},
+    {OPERATION_STRING_ADD, OperationType::ADD},
+    {OPERATION_STRING_IMAGE_CAPTURE, OperationType::IMAGE_CAPTURE},
+    {OPERATION_STRING_VIDEO_CAPTURE, OperationType::VIDEO_CAPTURE},
+    {OPERATION_STRING_SETTING_BT_ENABLE, OperationType::SETTING_BT_ENABLE},
+    {OPERATION_STRING_SETTING_BT_VISIBILITY, OperationType::SETTING_BT_VISIBILITY},
+    {OPERATION_STRING_SETTING_LOCATION, OperationType::SETTING_LOCATION},
+    {OPERATION_STRING_SETTING_NFC, OperationType::SETTING_NFC},
+    {OPERATION_STRING_SETTING, OperationType::SETTING},
+    {OPERATION_STRING_SETTING_WIFI, OperationType::SETTING_WIFI},
+    {OPERATION_STRING_SETTING_VPN, OperationType::SETTING_VPN},
+    {OPERATION_STRING_GET_INPUT, OperationType::GET_INPUT},
+    {OPERATION_STRING_MEDIA_CONTROLLER, OperationType::MEDIA_CONTROLLER},
+    {OPERATION_STRING_PRIVACY_SETTING_GUIDE, OperationType::PRIVACY_SETTING_GUIDE}
+};
+
+const std::map<DataType, const std::string> AppControl::_dataType2str{
+    {DataType::NONE, DATA_STRING_NONE},
+    {DataType::FEATURE, DATA_STRING_FEATURE},
+    {DataType::PRIVILEGES, DATA_STRING_PRIVILEGES},
+    {DataType::SUBJECT, DATA_STRING_SUBJECT},
+    {DataType::TO, DATA_STRING_TO},
+    {DataType::CC, DATA_STRING_CC},
+    {DataType::BCC, DATA_STRING_BCC},
+    {DataType::TEXT, DATA_STRING_TEXT},
+    {DataType::TITLE, DATA_STRING_TITLE},
+    {DataType::SELECTED, DATA_STRING_SELECTED},
+    {DataType::PATH, DATA_STRING_PATH},
+    {DataType::SELECTION_MODE, DATA_STRING_SELECTION_MODE},
+    {DataType::CALENDAR_ALL_DAY, DATA_STRING_CALENDAR_ALL_DAY},
+    {DataType::CALENDAR_START_TIME, DATA_STRING_CALENDAR_START_TIME},
+    {DataType::CALENDAR_END_TIME, DATA_STRING_CALENDAR_END_TIME},
+    {DataType::EMAIL, DATA_STRING_EMAIL},
+    {DataType::PHONE, DATA_STRING_PHONE},
+    {DataType::URL, DATA_STRING_URL},
+    {DataType::ID, DATA_STRING_ID},
+    {DataType::TYPE, DATA_STRING_TYPE},
+    {DataType::TOTAL_COUNT, DATA_STRING_TOTAL_COUNT},
+    {DataType::TOTAL_SIZE, DATA_STRING_TOTAL_SIZE},
+    {DataType::NAME, DATA_STRING_NAME},
+    {DataType::LOCATION, DATA_STRING_LOCATION},
+    {DataType::INPUT_TYPE, DATA_STRING_INPUT_TYPE},
+    {DataType::INPUT_DEFAULT_TEXT, DATA_STRING_INPUT_DEFAULT_TEXT},
+    {DataType::INPUT_GUIDE_TEXT, DATA_STRING_INPUT_GUIDE_TEXT},
+    {DataType::INPUT_PREDICTION_HINT, DATA_STRING_INPUT_PREDICTION_HINT},
+    {DataType::INPUT_RETURNKEY_TYPE, DATA_STRING_INPUT_RETURNKEY_TYPE},
+    {DataType::INPUT_MAX_TEXT_LENGTH, DATA_STRING_INPUT_MAX_TEXT_LENGTH},
+    {DataType::INPUT_CURSOR_POSITION_SET, DATA_STRING_INPUT_CURSOR_POSITION_SET},
+    {DataType::INPUT_CURSOR_POSITION_GET, DATA_STRING_INPUT_CURSOR_POSITION_GET},
+    {DataType::INPUT_REPLY_TYPE, DATA_STRING_INPUT_REPLY_TYPE},
+    {DataType::WIDGET_INSTANCE_ID, DATA_STRING_WIDGET_INSTANCE_ID},
+    {DataType::WIDGET_CONTENT, DATA_STRING_WIDGET_CONTENT},
+    {DataType::WIDGET_APP_ID, DATA_STRING_WIDGET_APP_ID}
+};
+
+const std::map<const std::string, DataType> AppControl::_str2dataType{
+    {DATA_STRING_NONE, DataType::NONE},
+    {DATA_STRING_FEATURE, DataType::FEATURE},
+    {DATA_STRING_PRIVILEGES, DataType::PRIVILEGES},
+    {DATA_STRING_SUBJECT, DataType::SUBJECT},
+    {DATA_STRING_TO, DataType::TO},
+    {DATA_STRING_CC, DataType::CC},
+    {DATA_STRING_BCC, DataType::BCC},
+    {DATA_STRING_TEXT, DataType::TEXT},
+    {DATA_STRING_TITLE, DataType::TITLE},
+    {DATA_STRING_SELECTED, DataType::SELECTED},
+    {DATA_STRING_PATH, DataType::PATH},
+    {DATA_STRING_SELECTION_MODE, DataType::SELECTION_MODE},
+    {DATA_STRING_CALENDAR_ALL_DAY, DataType::CALENDAR_ALL_DAY},
+    {DATA_STRING_CALENDAR_START_TIME, DataType::CALENDAR_START_TIME},
+    {DATA_STRING_CALENDAR_END_TIME, DataType::CALENDAR_END_TIME},
+    {DATA_STRING_EMAIL, DataType::EMAIL},
+    {DATA_STRING_PHONE, DataType::PHONE},
+    {DATA_STRING_URL, DataType::URL},
+    {DATA_STRING_ID, DataType::ID},
+    {DATA_STRING_TYPE, DataType::TYPE},
+    {DATA_STRING_TOTAL_COUNT, DataType::TOTAL_COUNT},
+    {DATA_STRING_TOTAL_SIZE, DataType::TOTAL_SIZE},
+    {DATA_STRING_NAME, DataType::NAME},
+    {DATA_STRING_LOCATION, DataType::LOCATION},
+    {DATA_STRING_INPUT_TYPE, DataType::INPUT_TYPE},
+    {DATA_STRING_INPUT_DEFAULT_TEXT, DataType::INPUT_DEFAULT_TEXT},
+    {DATA_STRING_INPUT_GUIDE_TEXT, DataType::INPUT_GUIDE_TEXT},
+    {DATA_STRING_INPUT_PREDICTION_HINT, DataType::INPUT_PREDICTION_HINT},
+    {DATA_STRING_INPUT_RETURNKEY_TYPE, DataType::INPUT_RETURNKEY_TYPE},
+    {DATA_STRING_INPUT_MAX_TEXT_LENGTH, DataType::INPUT_MAX_TEXT_LENGTH},
+    {DATA_STRING_INPUT_CURSOR_POSITION_SET, DataType::INPUT_CURSOR_POSITION_SET},
+    {DATA_STRING_INPUT_CURSOR_POSITION_GET, DataType::INPUT_CURSOR_POSITION_GET},
+    {DATA_STRING_INPUT_REPLY_TYPE, DataType::INPUT_REPLY_TYPE},
+    {DATA_STRING_WIDGET_INSTANCE_ID, DataType::WIDGET_INSTANCE_ID},
+    {DATA_STRING_WIDGET_CONTENT, DataType::WIDGET_CONTENT},
+    {DATA_STRING_WIDGET_APP_ID, DataType::WIDGET_APP_ID}
+};
+
+const std::string & AppControl::getOperationString(OperationType operation)
+{
+    auto found = _opType2str.find(operation);
+    return found != _opType2str.end()? found->second : OPERATION_STRING_NONE;
+}
+
+OperationType AppControl::getOperationType(const std::string &operation)
+{
+    auto found = _str2opType.find(operation);
+    return found != _str2opType.end()? found->second : OperationType::NONE;
+}
+
+const std::string & AppControl::getDataString(DataType type)
+{
+    auto found = _dataType2str.find(type);
+    return found != _dataType2str.end()? found->second : DATA_STRING_NONE;
+}
+
+DataType AppControl::getDataType(const std::string &operation)
+{
+    auto found = _str2dataType.find(operation);
+    return found != _str2dataType.end()? found->second : DataType::NONE;
+}
+
+AppControl::AppControl() : _destroyHandle(true), _callbacks(std::make_unique<_Callbacks>())
+{
+    int err = app_control_create(&_handle);
+    if(err)
+    {
+        logger::Err("Failed to create app_control handle: %d", err);
+        throw AppException("Failed to create app control handle");
+    }
+}
+
+AppControl::AppControl(const AppControl &appControl) : _destroyHandle(true), _callbacks(std::make_unique<_Callbacks>(*(appControl._callbacks)))
+{
+    int err = app_control_clone(&_handle, appControl._handle);
+    if(err)
+    {
+        logger::Err("Failed to clone app_control handle: %d", err);
+        throw AppException("Failed to clone app control handle");
+    }
+}
+
+AppControl &AppControl::operator=(const AppControl &appControl)
+{
+    int err = app_control_clone(&_handle, appControl._handle);
+    if(err)
+    {
+        logger::Err("Failed to clone app_control handle: %d", err);
+        throw AppException("Failed to clone app control handle");
+    }
+    _destroyHandle = true;
+    _callbacks = std::make_unique<_Callbacks>(*(appControl._callbacks));
+    return *this;
+}
+
+AppControl::AppControl(AppControl &&appControl) : _handle(std::move(appControl._handle)),
+    _destroyHandle(std::move(appControl._destroyHandle)), _callbacks(std::move(appControl._callbacks))
+{
+    appControl._destroy();
+}
+
+AppControl &AppControl::operator=(AppControl &&appControl)
+{
+    _destroy();
+    _handle = std::move(appControl._handle);
+    _destroyHandle = std::move(appControl._destroyHandle);
+    _callbacks = std::move(appControl._callbacks);
+    appControl._destroy();
+    return *this;
+}
+
+AppControl::AppControl(app_control_h handle, bool destroyHandle) : _handle(handle), _destroyHandle(destroyHandle)
+{
+    _callbacks = std::make_unique<_Callbacks>();
+}
+
+AppControl::~AppControl()
+{
+    _destroy();
+}
+
+void AppControl::_destroy()
+{
+    if(_handle && _destroyHandle)
+    {
+        int err = app_control_destroy(_handle);
+        if(err)
+        {
+            logger::Err("Failed to destroy handle to app_control: $d", err);
+        }
+    }
+
+    _handle = nullptr;
+    _destroyHandle = false;
+    _callbacks = nullptr;
+}
+
+ApiResult<void> AppControl::setOperation(OperationType operation)
+{
+    return setOperationString(getOperationString(operation));
+}
+
+ApiResult<void> AppControl::setOperationString(const std::string &operation)
+{
+    int err = app_control_set_operation(_handle, operation.c_str());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<OperationType> AppControl::getOperation() const
+{
+    auto res = getOperationString();
+    return res? ApiResult<OperationType>::Ok(AppControl::getOperationType(res.unwrap())) : ApiResult<OperationType>::Error(res.error());
+}
+
+ApiResult<std::string> AppControl::getOperationString() const
+{
+    char *value;
+    int err = app_control_get_operation(_handle, &value);
+    if(err)
+    {
+        return ApiResult<std::string>::Error(err);
+    }
+    return ApiResult<std::string>::Ok(wrapMallocString(value));
+}
+
+ApiResult<void> AppControl::setUri(const std::string &uri)
+{
+    int err = app_control_set_uri(_handle, uri.c_str());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<std::string> AppControl::getUri() const
+{
+    char *value;
+    int err = app_control_get_uri(_handle, &value);
+    if(err)
+    {
+        return ApiResult<std::string>::Error(err);
+    }
+    return ApiResult<std::string>::Ok(wrapMallocString(value));
+}
+
+ApiResult<void> AppControl::setMime(const std::string &mime)
+{
+    int err = app_control_set_mime(_handle, mime.c_str());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<std::string> AppControl::getMime() const
+{
+    char *value;
+    int err = app_control_get_mime(_handle, &value);
+    if(err)
+    {
+        return ApiResult<std::string>::Error(err);
+    }
+    return ApiResult<std::string>::Ok(wrapMallocString(value));
+}
+
+ApiResult<void> AppControl::setCategory(const std::string &uri)
+{
+    int err = app_control_set_category(_handle, uri.c_str());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<std::string> AppControl::getCategory() const
+{
+    char *value;
+    int err = app_control_get_category(_handle, &value);
+    if(err)
+    {
+        return ApiResult<std::string>::Error(err);
+    }
+    return ApiResult<std::string>::Ok(wrapMallocString(value));
+}
+
+ApiResult<void> AppControl::setAppId(const std::string &appId)
+{
+    int err = app_control_set_app_id(_handle, appId.c_str());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<std::string> AppControl::getAppId()
+{
+    char *value;
+    int err = app_control_get_app_id(_handle, &value);
+    if(err)
+    {
+        return ApiResult<std::string>::Error(err);
+    }
+    return ApiResult<std::string>::Ok(wrapMallocString(value));    
+}
+
+ApiResult<void> AppControl::addExtraData(DataType type, const std::string &value)
+{
+    return addExtraData(getDataString(type), value);
+}
+
+ApiResult<void> AppControl::addExtraData(const std::string &key, const std::string &value)
+{
+    int err = app_control_add_extra_data(_handle, key.c_str(), value.c_str());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> AppControl::addExtraDataArray(DataType type, const std::vector<std::string> &data)
+{
+    return addExtraDataArray(getDataString(type), data);
+}
+
+ApiResult<void> AppControl::addExtraDataArray(const std::string &key, const std::vector<std::string> &data)
+{
+    std::vector<const char *> array(data.size());
+    for(const std::string &s : data)
+    {
+        array.push_back(s.c_str());
+    }
+    int err = app_control_add_extra_data_array(_handle, key.c_str(), array.data(), static_cast<int>(array.size()));
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();   
+}
+
+ApiResult<void> AppControl::removeExtraData(DataType type)
+{
+    return removeExtraData(getDataString(type));
+}
+
+ApiResult<void> AppControl::removeExtraData(const std::string &key)
+{
+    int err = app_control_remove_extra_data(_handle, key.c_str());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<std::string> AppControl::getExtraData(DataType type)
+{
+    return getExtraData(getDataString(type));
+}
+
+ApiResult<std::string> AppControl::getExtraData(const std::string &key)
+{
+    char *value;
+    int err = app_control_get_extra_data(_handle, key.c_str(), &value);
+    if(err)
+    {
+        return ApiResult<std::string>::Error(err);
+    }
+    return ApiResult<std::string>::Ok(wrapMallocString(value));
+}
+
+ApiResult<std::vector<std::string>> AppControl::getExtraDataArray(DataType type)
+{
+    return getExtraDataArray(getDataString(type));
+}
+
+ApiResult<std::vector<std::string>> AppControl::getExtraDataArray(const std::string &key)
+{
+    int arSize;
+    char **arValues;
+    int err = app_control_get_extra_data_array(_handle, key.c_str(), &arValues, &arSize);
+    if(err)
+    {
+        return ApiResult<std::vector<std::string>>::Error(err);
+    }
+    std::vector<std::string> res(arSize);
+    for(int i = 0; i < arSize; ++i)
+    {
+        res.push_back(wrapMallocString(arValues[i]));
+    }
+    free(arValues);
+    return ApiResult<std::vector<std::string>>::Ok(res);
+}
+
+ApiResult<bool> AppControl::isExtraDataArray(DataType type)
+{
+    return isExtraDataArray(getDataString(type));
+}
+
+ApiResult<bool> AppControl::isExtraDataArray(const std::string &key)
+{
+    bool value;
+    int err = app_control_is_extra_data_array(_handle, key.c_str(), &value);
+    if(err)
+    {
+        return ApiResult<bool>::Error(err);
+    }
+    return ApiResult<bool>::Ok(value);
+}
+
+ApiResult<void> AppControl::foreachExtraData(std::function<bool(AppControl &, const std::string &)> extraDataCb)
+{
+    auto static_cb = [](app_control_h handle, const char *keyCstr, void *data)
+    {
+        _Callbacks *_callbacks = static_cast<_Callbacks*>(data);
+        if(_callbacks->extraDataCb)
+        {
+            std::string key(keyCstr);
+            AppControl appControl(handle);
+            return _callbacks->extraDataCb(appControl, key);
+        }
+        return false;
+    };
+    int err = app_control_foreach_extra_data(_handle, static_cb, _callbacks.get());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    _callbacks->extraDataCb = extraDataCb;
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> AppControl::foreachAppMatched(std::function<bool(AppControl &, const std::string &)> appMatchedCb)
+{
+    auto static_cb = [](app_control_h handle, const char *appIdCstr, void *data)
+    {
+        _Callbacks *_callbacks = static_cast<_Callbacks*>(data);
+        if(_callbacks->appMatchedCb)
+        {
+            std::string appId(appIdCstr);
+            AppControl appControl(handle);
+            return _callbacks->appMatchedCb(appControl, appId);
+        }
+        return false;
+    };
+    int err = app_control_foreach_app_matched(_handle, static_cb, _callbacks.get());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    _callbacks->appMatchedCb = appMatchedCb;
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> AppControl::sendLaunchRequest(std::function<void(AppControl &, AppControl &, app_control_result_e)> replyCb)
+{
+    auto static_cb = [](app_control_h requestHandle, app_control_h replyHandle, app_control_result_e result, void *data)
+    {
+        _Callbacks *_callbacks = static_cast<_Callbacks*>(data);
+        if(_callbacks->syncLaunchReplyCb)
+        {
+            AppControl request(requestHandle);
+            AppControl reply(replyHandle);
+            _callbacks->syncLaunchReplyCb(request, reply, result);
+        }
+    };
+    int err = app_control_send_launch_request(_handle, static_cb, _callbacks.get());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    _callbacks->syncLaunchReplyCb = replyCb;
+    return ApiResult<void>::Ok();  
+}
+
+ApiResult<void> AppControl::sendTerminateRequest()
+{
+    int err = app_control_send_terminate_request(_handle);
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> AppControl::sendLaunchRequestAsync(std::function<void(AppControl &, app_control_error_e)> resultCb, std::function<void(AppControl &, AppControl &, app_control_result_e)> replyCb)
+{
+    auto result_static_cb = [](app_control_h handle, app_control_error_e error, void *data)
+    {
+        _Callbacks *_callbacks = static_cast<_Callbacks*>(data);
+        if(_callbacks->asyncLaunchResultCb)
+        {
+            AppControl appControl(handle);
+            _callbacks->asyncLaunchResultCb(appControl, error);
+        }
+    };
+
+    auto reply_static_cb = [](app_control_h requestHandle, app_control_h replyHandle, app_control_result_e result, void *data)
+    {
+        _Callbacks *_callbacks = static_cast<_Callbacks*>(data);
+        if(_callbacks->asyncLaunchReplyCb)
+        {
+            AppControl request(requestHandle);
+            AppControl reply(replyHandle);
+            _callbacks->asyncLaunchReplyCb(request, reply, result);
+        }
+    };
+
+    int err = app_control_send_launch_request_async(_handle, result_static_cb, reply_static_cb, _callbacks.get());
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    _callbacks->asyncLaunchReplyCb = replyCb;
+    _callbacks->asyncLaunchResultCb = resultCb;
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> AppControl::replyToLaunchRequest(AppControl &reply, AppControl &request, app_control_result_e result)
+{
+    logger::Dbg("Sending reply...");
+    int err = app_control_reply_to_launch_request(reply._handle, request._handle, result);
+    if(err)
+    {
+        logger::Err("Failed to send response - error code: $d", err);
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<std::string> AppControl::getCaller()
+{
+    char *value;
+    int err = app_control_get_caller(_handle, &value);
+    if(err)
+    {
+        return ApiResult<std::string>::Error(err);
+    }
+    return ApiResult<std::string>::Ok(wrapMallocString(value));
+}
+
+ApiResult<bool> AppControl::isReplyRequested()
+{
+    bool value;
+    int err = app_control_is_reply_requested(_handle, &value);
+    if(err)
+    {
+        return ApiResult<bool>::Error(err);
+    }
+    return ApiResult<bool>::Ok(value); 
+}
+
+ApiResult<void> AppControl::setLaunchMode(app_control_launch_mode_e mode)
+{
+    int err = app_control_set_launch_mode(_handle, mode);
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok(); 
+}
+
+ApiResult<app_control_launch_mode_e> AppControl::getLaunchMode()
+{
+    app_control_launch_mode_e value;
+    int err = app_control_get_launch_mode(_handle, &value);
+    if(err)
+    {
+        return ApiResult<app_control_launch_mode_e>::Error(err);
+    }
+    return ApiResult<app_control_launch_mode_e>::Ok(value);     
+}
+
+ApiResult<void> AppControl::enableAppStartedResultEvent()
+{
+    int err = app_control_enable_app_started_result_event(_handle);
+    if(err)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+} // namespace application
+} // namespace tizen
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/AppControl.hpp b/oobe-easy-setup/api-cpp/src/tizen/application/AppControl.hpp
new file mode 100644 (file)
index 0000000..d4f532b
--- /dev/null
@@ -0,0 +1,279 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 APP_CONTROL_H
+#define APP_CONTROL_H
+
+#include "tizen/ApiResult.hpp"
+#include <app_control.h>
+#include <string>
+#include <vector>
+#include <functional>
+#include <memory>
+#include <map>
+
+namespace tizen {
+namespace application {
+
+enum class OperationType
+{
+    NONE,
+    MAIN,
+    DEFAULT,
+    EDIT,
+    VIEW,
+    PICK,
+    CREATE_CONTENT,
+    CALL,
+    SEND,
+    SEND_TEXT,
+    SHARE,
+    MULTI_SHARE,
+    SHARE_TEXT,
+    DIAL,
+    SEARCH,
+    DOWNLOAD,
+    PRINT,
+    COMPOSE,
+    LAUNCH_ON_EVENT,
+    ADD,
+    IMAGE_CAPTURE,
+    VIDEO_CAPTURE,
+    SETTING_BT_ENABLE,
+    SETTING_BT_VISIBILITY,
+    SETTING_LOCATION,
+    SETTING_NFC,
+    SETTING,
+    SETTING_WIFI,
+    SETTING_VPN,
+    GET_INPUT,
+    MEDIA_CONTROLLER,
+    PRIVACY_SETTING_GUIDE
+};
+
+enum class DataType
+{
+    NONE,
+    FEATURE,
+    PRIVILEGES,
+    SUBJECT,
+    TO,
+    CC,
+    BCC,
+    TEXT,
+    TITLE,
+    SELECTED,
+    PATH,
+    SELECTION_MODE,
+    CALENDAR_ALL_DAY,
+    CALENDAR_START_TIME,
+    CALENDAR_END_TIME,
+    EMAIL,
+    PHONE,
+    URL,
+    ID,
+    TYPE,
+    TOTAL_COUNT,
+    TOTAL_SIZE,
+    NAME,
+    LOCATION,
+    INPUT_TYPE,
+    INPUT_DEFAULT_TEXT,
+    INPUT_GUIDE_TEXT,
+    INPUT_PREDICTION_HINT,
+    INPUT_RETURNKEY_TYPE,
+    INPUT_MAX_TEXT_LENGTH,
+    INPUT_CURSOR_POSITION_SET,
+    INPUT_CURSOR_POSITION_GET,
+    INPUT_REPLY_TYPE,
+    WIDGET_INSTANCE_ID,
+    WIDGET_CONTENT,
+    WIDGET_APP_ID
+};
+
+class AppControl
+{
+public:
+    AppControl();
+    ~AppControl();
+
+    AppControl(const AppControl &appControl);
+    AppControl &operator=(const AppControl &appControl);
+
+    AppControl(AppControl &&appControl);
+    AppControl &operator=(AppControl &&appControl);
+
+    ApiResult<void> setOperation(OperationType operation);
+    ApiResult<void> setOperationString(const std::string &operation);
+    ApiResult<OperationType> getOperation() const;
+    ApiResult<std::string> getOperationString() const;
+    static const std::string & getOperationString(OperationType operation);
+    static OperationType getOperationType(const std::string &operation);
+
+    ApiResult<void> setUri(const std::string &uri); 
+    ApiResult<std::string> getUri() const; 
+    
+    ApiResult<void> setMime(const std::string &mime);
+    ApiResult<std::string> getMime() const; 
+    
+    ApiResult<void> setCategory(const std::string &uri);
+    ApiResult<std::string> getCategory() const; 
+    
+    ApiResult<void> setAppId(const std::string &appId); 
+    ApiResult<std::string> getAppId();
+    
+    ApiResult<void> addExtraData(DataType type, const std::string &value);
+    ApiResult<void> addExtraData(const std::string &key, const std::string &value);
+    ApiResult<void> addExtraDataArray(DataType type, const std::vector<std::string> &data);
+    ApiResult<void> addExtraDataArray(const std::string &key, const std::vector<std::string> &data);
+    ApiResult<void> removeExtraData(DataType type);
+    ApiResult<void> removeExtraData(const std::string &key);
+    ApiResult<std::string> getExtraData(DataType type);
+    ApiResult<std::string> getExtraData(const std::string &key);
+    ApiResult<std::vector<std::string>> getExtraDataArray(DataType type); 
+    ApiResult<std::vector<std::string>> getExtraDataArray(const std::string &key); 
+    ApiResult<bool> isExtraDataArray(DataType type);
+    ApiResult<bool> isExtraDataArray(const std::string &key);
+    ApiResult<void> foreachExtraData(std::function<bool(AppControl &, const std::string &)> extraDataCb);
+    
+    static const std::string & getDataString(DataType type);
+    static DataType getDataType(const std::string &operation);
+
+    ApiResult<void> foreachAppMatched(std::function<bool(AppControl &, const std::string &)> appMatchedCb);
+    
+    ApiResult<void> sendLaunchRequest(std::function<void(AppControl &, AppControl &, app_control_result_e)> replyCb);
+    ApiResult<void> sendTerminateRequest();
+    ApiResult<void> sendLaunchRequestAsync(std::function<void(AppControl &, app_control_error_e)> resultCb, std::function<void(AppControl &, AppControl &, app_control_result_e)> replyCb);
+    
+    static ApiResult<void> replyToLaunchRequest(AppControl &reply, AppControl &request, app_control_result_e result);
+    
+    ApiResult<std::string> getCaller(); 
+    
+    ApiResult<bool> isReplyRequested(); 
+    
+    ApiResult<void> setLaunchMode(app_control_launch_mode_e mode);
+    ApiResult<app_control_launch_mode_e> getLaunchMode();
+    
+    ApiResult<void> enableAppStartedResultEvent();
+
+private:
+    friend class ServiceApp;
+    friend class UiApp;
+    app_control_h _handle;
+    bool _destroyHandle;
+
+    struct _Callbacks
+    {
+        _Callbacks() = default;
+        _Callbacks(const _Callbacks &) = default;
+        _Callbacks &operator=(const _Callbacks &) = default;
+        _Callbacks(_Callbacks &&) = default;
+        _Callbacks & operator=(_Callbacks &&) = default;
+
+        std::function<bool(AppControl &, const std::string &)> extraDataCb;
+        std::function<bool(AppControl &, const std::string &)> appMatchedCb;
+        std::function<void(AppControl &, AppControl &, app_control_result_e)> syncLaunchReplyCb;
+        std::function<void(AppControl &, app_control_error_e)> asyncLaunchResultCb;
+        std::function<void(AppControl &, AppControl &, app_control_result_e)> asyncLaunchReplyCb;
+    };
+
+    std::unique_ptr<_Callbacks> _callbacks;
+
+    AppControl(app_control_h handle, bool destroyHandle = false);
+    void _destroy();
+
+    //Operation types strings
+    static const std::string OPERATION_STRING_NONE;
+    static const std::string OPERATION_STRING_MAIN;
+    static const std::string OPERATION_STRING_DEFAULT;
+    static const std::string OPERATION_STRING_EDIT;
+    static const std::string OPERATION_STRING_VIEW;
+    static const std::string OPERATION_STRING_PICK;
+    static const std::string OPERATION_STRING_CREATE_CONTENT;
+    static const std::string OPERATION_STRING_CALL;
+    static const std::string OPERATION_STRING_SEND;
+    static const std::string OPERATION_STRING_SEND_TEXT;
+    static const std::string OPERATION_STRING_SHARE;
+    static const std::string OPERATION_STRING_MULTI_SHARE;
+    static const std::string OPERATION_STRING_SHARE_TEXT;
+    static const std::string OPERATION_STRING_DIAL;
+    static const std::string OPERATION_STRING_SEARCH;
+    static const std::string OPERATION_STRING_DOWNLOAD;
+    static const std::string OPERATION_STRING_PRINT;
+    static const std::string OPERATION_STRING_COMPOSE;
+    static const std::string OPERATION_STRING_LAUNCH_ON_EVENT;
+    static const std::string OPERATION_STRING_ADD;
+    static const std::string OPERATION_STRING_IMAGE_CAPTURE;
+    static const std::string OPERATION_STRING_VIDEO_CAPTURE;
+    static const std::string OPERATION_STRING_SETTING_BT_ENABLE;
+    static const std::string OPERATION_STRING_SETTING_BT_VISIBILITY;
+    static const std::string OPERATION_STRING_SETTING_LOCATION;
+    static const std::string OPERATION_STRING_SETTING_NFC;
+    static const std::string OPERATION_STRING_SETTING;
+    static const std::string OPERATION_STRING_SETTING_WIFI;
+    static const std::string OPERATION_STRING_SETTING_VPN;
+    static const std::string OPERATION_STRING_GET_INPUT;
+    static const std::string OPERATION_STRING_MEDIA_CONTROLLER;
+    static const std::string OPERATION_STRING_PRIVACY_SETTING_GUIDE;
+
+    //Data types strings
+    static const std::string DATA_STRING_NONE;
+    static const std::string DATA_STRING_FEATURE;
+    static const std::string DATA_STRING_PRIVILEGES;
+    static const std::string DATA_STRING_SUBJECT;
+    static const std::string DATA_STRING_TO;
+    static const std::string DATA_STRING_CC;
+    static const std::string DATA_STRING_BCC;
+    static const std::string DATA_STRING_TEXT;
+    static const std::string DATA_STRING_TITLE;
+    static const std::string DATA_STRING_SELECTED;
+    static const std::string DATA_STRING_PATH;
+    static const std::string DATA_STRING_SELECTION_MODE;
+    static const std::string DATA_STRING_CALENDAR_ALL_DAY;
+    static const std::string DATA_STRING_CALENDAR_START_TIME;
+    static const std::string DATA_STRING_CALENDAR_END_TIME;
+    static const std::string DATA_STRING_EMAIL;
+    static const std::string DATA_STRING_PHONE;
+    static const std::string DATA_STRING_URL;
+    static const std::string DATA_STRING_ID;
+    static const std::string DATA_STRING_TYPE;
+    static const std::string DATA_STRING_TOTAL_COUNT;
+    static const std::string DATA_STRING_TOTAL_SIZE;
+    static const std::string DATA_STRING_NAME;
+    static const std::string DATA_STRING_LOCATION;
+    static const std::string DATA_STRING_INPUT_TYPE;
+    static const std::string DATA_STRING_INPUT_DEFAULT_TEXT;
+    static const std::string DATA_STRING_INPUT_GUIDE_TEXT;
+    static const std::string DATA_STRING_INPUT_PREDICTION_HINT;
+    static const std::string DATA_STRING_INPUT_RETURNKEY_TYPE;
+    static const std::string DATA_STRING_INPUT_MAX_TEXT_LENGTH;
+    static const std::string DATA_STRING_INPUT_CURSOR_POSITION_SET;
+    static const std::string DATA_STRING_INPUT_CURSOR_POSITION_GET;
+    static const std::string DATA_STRING_INPUT_REPLY_TYPE;
+    static const std::string DATA_STRING_WIDGET_INSTANCE_ID;
+    static const std::string DATA_STRING_WIDGET_CONTENT;
+    static const std::string DATA_STRING_WIDGET_APP_ID;
+
+    static const std::map<OperationType, const std::string> _opType2str;
+    static const std::map<const std::string, OperationType> _str2opType;
+    static const std::map<DataType, const std::string> _dataType2str;
+    static const std::map<const std::string, DataType> _str2dataType;
+};
+
+} // namespace application
+} // namespace tizen
+
+#endif //APP_CONTROL_H
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/AppException.cpp b/oobe-easy-setup/api-cpp/src/tizen/application/AppException.cpp
new file mode 100644 (file)
index 0000000..7f2a12d
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/application/AppException.hpp"
+
+namespace tizen {
+namespace application {
+
+AppException::AppException(std::string message) : _message(message)
+{
+}
+
+AppException::~AppException()
+{
+}
+
+const char *AppException::what() const noexcept
+{
+    return _message.c_str();
+}
+
+} // namespace application
+} // namespace tizen
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/AppException.hpp b/oobe-easy-setup/api-cpp/src/tizen/application/AppException.hpp
new file mode 100644 (file)
index 0000000..80e2aea
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 APP_EXCEPTION_H
+#define APP_EXCEPTION_H
+
+#include <exception>
+#include <string>
+
+namespace tizen {
+namespace application {
+    class AppException : public std::exception
+    {
+    public:
+        AppException(std::string message = "");
+        ~AppException();
+
+        virtual const char *what() const noexcept override;
+    private:
+        std::string _message;
+    };
+} // application
+} // tizen
+
+#endif //APP_EXCEPTION_H
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/Resource.cpp b/oobe-easy-setup/api-cpp/src/tizen/application/Resource.cpp
new file mode 100644 (file)
index 0000000..4afc809
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 <app.h>
+
+#include "tizen/application/Resource.hpp"
+
+using namespace tizen::application;
+
+std::string GetResourcePath(enum Directory dir, const char* relative)
+{
+    char* prefix;
+
+    switch (dir) {
+        case Directory::DATA:
+            prefix = app_get_data_path();
+            break;
+        case Directory::CACHE:
+            prefix = app_get_cache_path();
+            break;
+        case Directory::RESOURCE:
+            prefix = app_get_resource_path();
+            break;
+        case Directory::SHARED_DATA:
+            prefix = app_get_shared_data_path();
+            break;
+        case Directory::SHARED_RESOURCE:
+            prefix = app_get_shared_resource_path();
+            break;
+        case Directory::SHARED_TRUSTED:
+            prefix = app_get_shared_trusted_path();
+            break;
+        case Directory::EXTERNAL_DATA:
+            prefix = app_get_external_data_path();
+            break;
+        case Directory::EXTERNAL_CACHE:
+            prefix = app_get_external_cache_path();
+            break;
+        default:
+            return std::string();
+    }
+    if (!prefix)
+        return std::string();
+
+    std::string ret = prefix;
+    // according to implementation prefix should be always '/' terminated.
+    ret += relative;
+    free(prefix);
+
+    return ret;
+}
+
+
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/Resource.hpp b/oobe-easy-setup/api-cpp/src/tizen/application/Resource.hpp
new file mode 100644 (file)
index 0000000..28e6a29
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 RESOURCE_HPP
+#define RESOURCE_HPP
+
+#include <string>
+
+namespace tizen {
+namespace application {
+
+       /**
+        * @brief Application sub-directories type.
+        */
+       enum class Directory {
+               /** Data directory: ./data */
+               DATA,
+               /** Cache directory: ./cache */
+               CACHE,
+               /** Resource directory: ./res */
+               RESOURCE,
+               /** Data directory externally visible: ./shared/data */
+               SHARED_DATA,
+               /** Resource directory externally visible: ./shared/res */
+               SHARED_RESOURCE,
+               /** Resource directory externally visible for apps with same
+               * signature: ./shared/trused */
+               SHARED_TRUSTED,
+               /** External data directory */
+               EXTERNAL_DATA,
+               /** External cache directory */
+               EXTERNAL_CACHE
+       };
+
+    /**
+        * @brief Returns absolute path to resource file located in applications directory.
+        *
+        * @param dir type of subdirectory
+        * @param relative path of resource from starting from given sub dir.
+        *        eg. for DATA subdir and relative "database.db" => "/home/owner/apps/org.tizen.clock/data/database.db"
+        * @return absolute path string.
+        *
+        * @note returns statically allocated string
+        */
+       std::string GetResourcePath(enum Directory dir, const char* relative);
+
+} /* application */
+} /* tizen */
+
+#endif /* end of include guard: RESOURCE_HPP */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/ServiceApp.cpp b/oobe-easy-setup/api-cpp/src/tizen/application/ServiceApp.cpp
new file mode 100644 (file)
index 0000000..f138a42
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/application/ServiceApp.hpp"
+#include "tizen/Logger.hpp"
+
+using namespace tizen::application;
+
+bool ServiceApp::app_create(void* data)
+{
+    ServiceApp* app = static_cast<ServiceApp*>(data);
+    return app->OnCreate();
+}
+
+void ServiceApp::app_control(app_control_h app_control, void* data)
+{
+    ServiceApp* app = static_cast<ServiceApp*>(data);
+    AppControl appControlObject(app_control, false);
+    app->OnService(appControlObject);
+}
+
+void ServiceApp::app_terminate(void* data)
+{
+    ServiceApp* app = static_cast<ServiceApp*>(data);
+    app->OnTerminate();
+}
+
+int ServiceApp::Run(int argc, char** argv)
+{
+    int ret = 0;
+
+    service_app_lifecycle_callback_s event_callback;
+
+    event_callback.create = app_create;
+    event_callback.terminate = app_terminate;
+    event_callback.app_control = app_control;
+
+    ret = service_app_main(argc, argv, &event_callback, this);
+    if (ret != APP_ERROR_NONE)
+        tizen::logger::Dbg("service_app_main() is failed. err = %d", ret);
+
+    return ret;
+}
+
+void ServiceApp::Exit()
+{
+       service_app_exit();
+}
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/ServiceApp.hpp b/oobe-easy-setup/api-cpp/src/tizen/application/ServiceApp.hpp
new file mode 100644 (file)
index 0000000..eee590f
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SERVICEAPP_H
+#define SERVICEAPP_H
+
+#include "tizen/application/AppControl.hpp"
+#include <service_app.h>
+
+namespace tizen {
+namespace application {
+
+class ServiceApp
+{
+public:
+       ServiceApp() = default;
+       virtual ~ServiceApp() = default;
+
+       /**
+        * @brief Run Tizen application main loop
+        */
+    int Run(int argc, char** argv);
+
+       /**
+        * @brief Invoked when application recieved terminate request.
+        */
+    virtual void OnTerminate() {}
+
+       /**
+        * @brief Invoked when application recieved service request (recieve
+        * app control request from other application)
+        */
+    virtual void OnService(AppControl &) { }
+
+       /**
+        * @brief Invoked when application recieved service request (recieve
+        * app control request from other application)
+        */
+    virtual bool OnCreate() { return true; }
+
+       /**
+        * @brief Exits application process.
+        */
+    static void Exit();
+
+private:
+    static bool app_create(void* data);
+    static void app_control(app_control_h app_control, void* data);
+    static void app_terminate(void* data);
+};
+
+} /* application */
+} /* tizen */
+
+#endif /* SERVICEAPP_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/UiApp.cpp b/oobe-easy-setup/api-cpp/src/tizen/application/UiApp.cpp
new file mode 100644 (file)
index 0000000..afa4e73
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/application/UiApp.hpp"
+#include "tizen/Logger.hpp"
+
+using namespace tizen::application;
+
+bool UiApp::app_create(void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    return app->OnCreate();
+}
+
+void UiApp::app_control(app_control_h app_control, void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    AppControl appControlObject(app_control, false);
+    app->OnService(appControlObject);
+}
+
+void UiApp::app_pause(void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    app->OnPause();
+}
+
+void UiApp::app_resume(void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    app->OnResume();
+}
+
+void UiApp::app_terminate(void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    app->OnTerminate();
+}
+
+void UiApp::ui_app_lang_changed(app_event_info_h event_info, void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    app->OnLanguageChanged(event_info);
+}
+
+void UiApp::ui_app_orient_changed(app_event_info_h event_info, void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    app->OnOrientChanged(event_info);
+}
+
+void UiApp::ui_app_region_changed(app_event_info_h event_info, void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    app->OnRegionChanged(event_info);
+}
+
+void UiApp::ui_app_low_battery(app_event_info_h event_info, void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    app->OnLowBattery(event_info);
+}
+
+void UiApp::ui_app_low_memory(app_event_info_h event_info, void* data)
+{
+    UiApp* app = static_cast<UiApp*>(data);
+    app->OnLowMemory(event_info);
+}
+
+int UiApp::Run(int argc, char** argv)
+{
+    int ret = 0;
+
+    ui_app_lifecycle_callback_s event_callback;
+    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, this);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, this);
+       ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, this);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, this);
+       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, this);
+
+    ret = ui_app_main(argc, argv, &event_callback, this);
+    if (ret != APP_ERROR_NONE)
+        logger::Dbg("ui_app_main() is failed. err = %d", ret);
+
+    return ret;
+}
+
+void UiApp::Exit()
+{
+       ui_app_exit();
+}
diff --git a/oobe-easy-setup/api-cpp/src/tizen/application/UiApp.hpp b/oobe-easy-setup/api-cpp/src/tizen/application/UiApp.hpp
new file mode 100644 (file)
index 0000000..c3ac85c
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZENAPP_H
+#define TIZENAPP_H
+
+#include "tizen/application/AppControl.hpp"
+#include <app.h>
+#include <cstddef>
+#include <string>
+
+namespace tizen {
+namespace application {
+
+/**
+ * @addtogroup tizen
+ * @{
+ */
+
+/**
+ * @brief Tizen application main class. Starts application main loop and manages
+ * lifecycle callbacks
+ */
+class UiApp {
+public:
+    UiApp() = default;
+
+    virtual ~UiApp() = default;
+
+    /**
+                * @brief Run Tizen application main loop
+                */
+    int Run(int argc, char** argv);
+
+    /**
+                * @brief Exits application process.
+                */
+    static void Exit();
+
+protected:
+    /**
+                * @brief Invoked when application recieved service request (recieve
+                * app control request from other application)
+                */
+    virtual bool OnCreate() { return true; }
+
+    /**
+                * @brief Invoked when application recieved terminate request.
+                */
+    virtual void OnTerminate() {}
+    /**
+                * @brief Invoked when application recieved resume request (going
+                * foreground)
+                */
+    virtual void OnResume() {}
+
+    /**
+                * @brief Invoked when application recieved pause request (going
+                * background)
+                */
+    virtual void OnPause() {}
+
+    /**
+                * @brief Invoked when application recieved service request (recieve
+                * app control request from other application)
+                */
+    virtual void OnService(AppControl &) { }
+
+    /**
+                * @brief Invoked when system language has changed.
+                */
+    virtual void OnLanguageChanged(app_event_info_h event) { (void)event; }
+
+    /**
+                * @brief Invoked when system language has changed.
+                */
+    virtual void OnOrientChanged(app_event_info_h event) { (void)event; }
+
+        /**
+                * @brief Invoked when system language has changed.
+                */
+    virtual void OnRegionChanged(app_event_info_h event) { (void)event; }
+
+        /**
+                * @brief Invoked when system language has changed.
+                */
+    virtual void OnLowBattery(app_event_info_h event) { (void)event; }
+
+        /**
+                * @brief Invoked when system language has changed.
+                */
+    virtual void OnLowMemory(app_event_info_h event) { (void)event; }
+
+private:
+    static bool app_create(void* data);
+    static void app_control(app_control_h app_control, void* data);
+    static void app_pause(void* data);
+    static void app_resume(void* data);
+    static void app_terminate(void* data);
+    static void ui_app_lang_changed(app_event_info_h event_info, void* data);
+    static void ui_app_orient_changed(app_event_info_h event_info, void* data);
+    static void ui_app_region_changed(app_event_info_h event_info, void* data);
+    static void ui_app_low_battery(app_event_info_h event_info, void* data);
+    static void ui_app_low_memory(app_event_info_h event_info, void* data);
+};
+
+} /* application */
+} /* tizen */
+
+/**
+ * @}
+ */
+
+#endif /* end of include guard: TIZENAPP_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/key_manager/KeyManager.cpp b/oobe-easy-setup/api-cpp/src/tizen/key_manager/KeyManager.cpp
new file mode 100644 (file)
index 0000000..ad77441
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/key_manager/KeyManager.hpp"
+#include "tizen/Logger.hpp"
+#include "tizen/Strings.hpp"
+#include <utility>
+
+namespace tizen {
+namespace key_manager {
+
+ApiResult<void> removeAlias(const std::string &alias)
+{
+    logger::Dbg("alias [%s]", alias.c_str());
+
+       int err = ckmc_remove_alias(alias.c_str());
+       if (err != 0) 
+    {
+               logger::Wrn("ckmc_remove_alias() failed [%d]", err);
+               return ApiResult<void>::Error(err);
+       };
+
+       return ApiResult<void>::Ok();
+}
+
+ApiResult<std::string> getData(const std::string &alias)
+{
+    logger::Dbg( "alias [%s]", alias.c_str());
+
+       ckmc_raw_buffer_s *raw_buf = NULL;
+
+       int err = ckmc_get_data(alias.c_str(), NULL, &raw_buf);
+       if (err != 0) 
+    {
+               if (err != CKMC_ERROR_DB_ALIAS_UNKNOWN)
+                       logger::Err("alias [%s].. ckmc_get_data() failed [%d]", alias.c_str(), err);
+        else
+            logger::Wrn("alias [%s].. is unknown [%d]", alias.c_str(), err);
+               return ApiResult<std::string>::Error(err);
+       }
+       char *data = strndup(reinterpret_cast<const char *>(raw_buf->data), raw_buf->size);
+       ckmc_buffer_free(raw_buf);
+
+       return ApiResult<std::string>::Ok(wrapMallocString(data));
+}
+
+ApiResult<void> saveData(const std::string &alias, const std::string &data)
+{
+    logger::Dbg("alias [%s]", alias.c_str());
+
+    ckmc_raw_buffer_s save_data = {0,};
+    save_data.data = reinterpret_cast<unsigned char *>(const_cast<char *>(data.c_str()));
+    save_data.size = data.size();
+
+    ckmc_policy_s save_policy = {0,};
+    save_policy.password = NULL;
+    save_policy.extractable = true;
+
+    int err = ckmc_save_data(alias.c_str(), save_data, save_policy);
+    if (err == CKMC_ERROR_DB_ALIAS_EXISTS)
+    {
+        logger::Dbg("alias [%s] will be replaced", alias.c_str());
+
+        ckmc_remove_alias(alias.c_str());
+        err = ckmc_save_data(alias.c_str(), save_data, save_policy);
+        if (err != 0)
+        {
+            logger::Err("ckmc_save_data() failed [%d]", err);
+            return ApiResult<void>::Error(err);
+        }
+    }
+    else if (err != 0)
+    {
+        logger::Err("ckmc_save_data() failed [%d]", err);
+        return ApiResult<void>::Error(err);
+    }
+
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<std::vector<std::string>> getAliasList()
+{      
+    ckmc_alias_list_s *alias_list = NULL;
+       ckmc_alias_list_s *plist;
+
+       int err = ckmc_get_data_alias_list(&alias_list);
+       if (err != 0) 
+    {
+               logger::Err("ckmc_get_data_alias_list() failed [%d]", err);
+               return ApiResult<std::vector<std::string>>::Error(err);
+       }
+
+    std::vector<std::string> res;
+
+    plist = alias_list;
+       while (plist != NULL) 
+    {
+               res.push_back(std::string(plist->alias));
+               plist = plist->next;
+       }
+
+    return ApiResult<std::vector<std::string>>::Ok(std::move(res));
+}
+
+ApiResult<bool> exists(const std::string &alias)
+{
+    ckmc_raw_buffer_s *raw_buf = NULL;
+
+       int err = ckmc_get_data(alias.c_str(), NULL, &raw_buf);
+       if (err == 0) 
+    {
+               ckmc_buffer_free(raw_buf);
+        return ApiResult<bool>::Ok(true);
+       }
+       else if (err == CKMC_ERROR_DB_ALIAS_UNKNOWN) 
+    {
+               return ApiResult<bool>::Ok(false);
+       }
+    else
+    {
+        return ApiResult<bool>::Error(err);
+    }
+}
+
+ApiResult<void> setPermission(const std::string &alias, const std::string &accessor)
+{
+       logger::Dbg("alias [%s], accessor [%s]", alias.c_str(), accessor.c_str());
+
+       int err = ckmc_set_permission(alias.c_str(), accessor.c_str(), CKMC_PERMISSION_READ);
+       if (err != 0) {
+               logger::Err("ckmc_set_permission() failed [%d]", err);
+               return ApiResult<void>::Error(err);
+       }
+
+       return ApiResult<void>::Ok(); 
+}
+
+ApiResult<void> removeAllAliases()
+{
+       ckmc_alias_list_s *alias_list = NULL;
+       ckmc_alias_list_s *plist;
+
+       int err = ckmc_get_data_alias_list(&alias_list);
+       if (err != 0) 
+    {
+               logger::Err("ckmc_get_data_alias_list() failed [%d]", err);
+               return ApiResult<void>::Error(err);
+       }
+
+       plist = alias_list;
+       while (plist != NULL) 
+    {
+               logger::Dbg("alias [%s] will be removed", plist->alias);
+               ckmc_remove_alias(plist->alias);
+               plist = plist->next;
+       }
+
+       ckmc_alias_list_all_free(alias_list);
+
+       return ApiResult<void>::Ok();
+}
+
+} // namespace key_manager
+} // namespace tizen
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/key_manager/KeyManager.hpp b/oobe-easy-setup/api-cpp/src/tizen/key_manager/KeyManager.hpp
new file mode 100644 (file)
index 0000000..d725e6b
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 KEY_MANAGER_H
+#define KEY_MANAGER_H
+
+#include "tizen/ApiResult.hpp"
+#include <ckmc/ckmc-manager.h>
+#include <string>
+#include <vector>
+
+namespace tizen {
+namespace key_manager {
+    ApiResult<void> removeAlias(const std::string &alias);
+    ApiResult<std::string> getData(const std::string &alias);
+    ApiResult<void> saveData(const std::string &alias, const std::string &data);
+    ApiResult<std::vector<std::string>> getAliasList();
+    ApiResult<bool> exists(const std::string &alias);
+    ApiResult<void> setPermission(const std::string &alias, const std::string &accessor);
+    ApiResult<void> removeAllAliases();
+} // key_manager
+} // tizen
+
+#endif //KEY_MANAGER_H
diff --git a/oobe-easy-setup/api-cpp/src/tizen/macros.hpp b/oobe-easy-setup/api-cpp/src/tizen/macros.hpp
new file mode 100644 (file)
index 0000000..354645d
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 MACROS_HPP
+#define MACROS_HPP
+
+#define UNUSED __attribute__((unused))
+
+#endif /* end of include guard: MACROS_HPP */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Adapter.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Adapter.cpp
new file mode 100644 (file)
index 0000000..07817cb
--- /dev/null
@@ -0,0 +1,444 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/bluetooth/Adapter.hpp"
+#include "tizen/Strings.hpp"
+#include "tizen/network/bluetooth/DeviceInfo.hpp"
+#include "tizen/network/bluetooth/DiscoveryInfo.hpp"
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+
+std::weak_ptr<Adapter> Adapter::_instance;
+
+       std::shared_ptr<Adapter> Adapter::instance()
+    {
+        if(_instance.expired())
+        {
+            std::shared_ptr<Adapter> adapter_ptr(new Adapter());
+            _instance = adapter_ptr;
+            return adapter_ptr;
+        }
+        else
+        {
+            return _instance.lock();
+        }
+    }
+
+       ApiResult<bt_adapter_state_e> getState()
+    {
+        bt_adapter_state_e state;
+        int res;
+        res = bt_adapter_get_state(&state);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<bt_adapter_state_e>::Error(res);
+        }
+        return ApiResult<bt_adapter_state_e>::Ok(state);
+    }
+
+       static std::weak_ptr<Adapter> _instance;
+       
+       Adapter::Adapter()
+    {
+        _bluetoothManager = Manager::instance();
+    }
+
+       Adapter::~Adapter()
+    {
+        _bluetoothManager = nullptr;
+    }
+
+       ApiResult<bt_adapter_state_e> Adapter::getState()
+    {
+        bt_adapter_state_e state;
+        int res;
+        res = bt_adapter_get_state(&state);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<bt_adapter_state_e>::Error(res);
+        }
+        else
+        {
+            return ApiResult<bt_adapter_state_e>::Ok(state);
+        }
+    }
+
+       ApiResult<std::string> Adapter::getAddress()
+    {
+        char *address;
+        int res;
+        res = bt_adapter_get_address(&address);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<std::string>::Error(res);
+        }
+        else
+        {
+            std::string address_string = wrapMallocString(address);
+            return ApiResult<std::string>::Ok(address_string);
+        }
+    }
+
+       ApiResult<std::string> Adapter::getName()
+    {
+        char *name;
+        int res;
+        res = bt_adapter_get_name(&name);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<std::string>::Error(res);
+        }
+        else
+        {
+            std::string name_string = wrapMallocString(name);
+            return ApiResult<std::string>::Ok(name_string);
+        }
+    }
+
+       ApiResult<void> Adapter::setName(const std::string & name)
+    {
+        int res;
+        res = bt_adapter_set_name(name.c_str());
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<bt_adapter_visibility_mode_e> Adapter::getVisibilityMode()
+    {
+        bt_adapter_visibility_mode_e visibility_mode;
+        int duration;
+        int res;
+        res = bt_adapter_get_visibility(&visibility_mode, &duration);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<bt_adapter_visibility_mode_e>::Error(res);
+        }
+        else
+        {
+            return ApiResult<bt_adapter_visibility_mode_e>::Ok(visibility_mode);
+        }
+    }
+
+       ApiResult<int> Adapter::getVisibilityDuration()
+    {
+        bt_adapter_visibility_mode_e visibility_mode;
+        int duration;
+        int res;
+        res = bt_adapter_get_visibility(&visibility_mode, &duration);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<int>::Error(res);
+        }
+        else
+        {
+            return ApiResult<int>::Ok(duration);
+        }
+    }
+    
+       ApiResult<void> Adapter::startDeviceDiscovery()
+    {
+        int res;
+        res = bt_adapter_start_device_discovery();
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<void> Adapter::stopDeviceDiscovery()
+    {
+        int res;
+        res = bt_adapter_stop_device_discovery();
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<bool> Adapter::isDiscovering()
+    {
+        bool isTrue;
+        int res;
+        res = bt_adapter_is_discovering(&isTrue);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<bool>::Error(res);
+        }
+        else
+        {
+            return ApiResult<bool>::Ok(isTrue);
+        }
+    }
+
+       ApiResult<void> Adapter::foreachBondedDevice(std::function<bool(const DeviceInfo &)> foreach_cb)
+    {
+        int res;
+        _bonded_device_cb = foreach_cb;
+        auto static_cb = [](bt_device_info_s *device_info, void *user_data){
+            Adapter *adapter = static_cast<Adapter*>(user_data);
+            DeviceInfo deviceInfo(device_info);
+            bool ret = adapter->_bonded_device_cb(deviceInfo);
+            return ret;
+        };
+        res = bt_adapter_foreach_bonded_device(static_cb, this);
+        _bonded_device_cb = nullptr;
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+        
+    }
+
+       ApiResult<const DeviceInfo> Adapter::getBondedDeviceInfo(const std::string & remote_address)
+    {
+        bt_device_info_s *device_info;
+        int res;
+        res = bt_adapter_get_bonded_device_info(remote_address.c_str(), &device_info);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<const DeviceInfo>::Error(res);
+        }
+        else
+        {
+            DeviceInfo deviceInfo(device_info);
+            return ApiResult<const DeviceInfo>::Ok(deviceInfo);
+        }
+        
+    }
+
+       ApiResult<bool> Adapter::isServiceUsed(const std::string & service_uuid)
+    {
+        bool isTrue;
+        int res;
+        res = bt_adapter_is_service_used(service_uuid.c_str(), &isTrue);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<bool>::Error(res);
+        }
+        else
+        {
+            return ApiResult<bool>::Ok(isTrue);
+        }
+        
+    }
+
+       ApiResult<void> Adapter::setStateChangedCb(std::function<void(int, bt_adapter_state_e)> cb)
+    {
+        int res;
+        auto old_cb = _state_changed_cb;
+        _state_changed_cb = cb;
+        auto static_cb = [](int result, bt_adapter_state_e adapter_state, void *user_data){
+            Adapter *adapter = static_cast<Adapter*>(user_data);
+            adapter->_state_changed_cb(result, adapter_state);
+        };
+        res = bt_adapter_set_state_changed_cb(static_cb, this);
+        if(res != BT_ERROR_NONE)
+        {
+            _state_changed_cb = old_cb;
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<void> Adapter::unsetStateChangeCb()
+    {
+        int res;
+        res = bt_adapter_unset_state_changed_cb();
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            _state_changed_cb = nullptr;
+            return ApiResult<void>::Error(res);
+        }
+    }
+       
+    ApiResult<void> Adapter::setNameChangedCb(std::function<void(const std::string &)> cb)
+    {
+        int res;
+        auto old_cb = _name_changed_cb;
+        _name_changed_cb = cb;
+        auto static_cb = [](char *device_name, void *user_data){
+            Adapter *adapter = static_cast<Adapter*>(user_data);
+            std::string device_name_string(device_name);
+            adapter->_name_changed_cb(device_name_string);
+        };
+        res = bt_adapter_set_name_changed_cb(static_cb, this);
+        if(res != BT_ERROR_NONE)
+        {
+            _name_changed_cb = old_cb;
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<void> Adapter::unsetNameChangedCb()
+    {
+        int res;
+        res = bt_adapter_unset_name_changed_cb();
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            _name_changed_cb = nullptr;
+            return ApiResult<void>::Error(res);
+        }
+    }
+
+       ApiResult<void> Adapter::setVisibilityModeChangedCb(std::function<void(int, bt_adapter_visibility_mode_e)> cb)
+    {
+        int res;
+        auto old_cb = _visibility_mode_changed_cb;
+        _visibility_mode_changed_cb = cb;
+        auto static_cb = [](int result, bt_adapter_visibility_mode_e visibility_mode, void *user_data){
+            Adapter *adapter = static_cast<Adapter*>(user_data);
+            adapter->_visibility_mode_changed_cb(result, visibility_mode);
+        };
+        res = bt_adapter_set_visibility_mode_changed_cb(static_cb, this);
+        if(res != BT_ERROR_NONE)
+        {
+            _visibility_mode_changed_cb = old_cb;
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+       
+    ApiResult<void> Adapter::unsetVisibilityModeChangedCb()
+    {
+        int res;
+        res = bt_adapter_unset_visibility_mode_changed_cb();
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            _visibility_mode_changed_cb = nullptr;
+            return ApiResult<void>::Error(res);
+        }
+        
+    }
+
+       ApiResult<void> Adapter::setVisibilityDurationChangedCb(std::function<void(int)> cb)
+    {
+        int res;
+        auto old_cb = _visibility_duration_changed_cb;
+        _visibility_duration_changed_cb = cb;
+        auto static_cb = [](int duration, void *user_data){
+            Adapter *adapter = static_cast<Adapter*>(user_data);
+            adapter->_visibility_duration_changed_cb(duration);
+        };
+        res = bt_adapter_set_visibility_duration_changed_cb(static_cb, this);
+        if(res != BT_ERROR_NONE)
+        {
+            _visibility_duration_changed_cb = old_cb;
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<void> Adapter::unsetVisibilityDurationChangedCb()
+    {
+        int res;
+        res = bt_adapter_unset_visibility_duration_changed_cb();
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            _visibility_duration_changed_cb = nullptr;
+            return ApiResult<void>::Error(res);
+        }
+        
+    }
+
+       ApiResult<void> Adapter::setDeviceDisoveryStateChangedCb(std::function<void(int, bt_adapter_device_discovery_state_e, const DiscoveryInfo &)> cb)
+    {
+        int res;
+        auto old_cb = _device_discovery_state_changed_cb;
+        _device_discovery_state_changed_cb = cb;
+        auto static_cb = [](int result, bt_adapter_device_discovery_state_e discovery_state,  bt_adapter_device_discovery_info_s *discovery_info, void *user_data){
+            Adapter *adapter = static_cast<Adapter*>(user_data);
+            DiscoveryInfo discoveryInfo(discovery_info);
+            adapter->_device_discovery_state_changed_cb(result, discovery_state, discoveryInfo);
+        };
+        res = bt_adapter_set_device_discovery_state_changed_cb(static_cb, this);
+        if(res != BT_ERROR_NONE)
+        {
+            _device_discovery_state_changed_cb = old_cb;
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<void> Adapter::unsetDeviceDisoveryStateChangedCb()
+    {
+        int res;
+        res = bt_adapter_unset_device_discovery_state_changed_cb();
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            _device_discovery_state_changed_cb = nullptr;
+            return ApiResult<void>::Error(res);        
+        }
+        
+    }
+} /* bluetooth */
+} /* network */
+} /* tizen */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Adapter.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Adapter.hpp
new file mode 100644 (file)
index 0000000..ce0cbb9
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 ADAPTER_H
+#define ADAPTER_H
+
+#include <memory>
+#include <bluetooth.h>
+#include <functional>
+#include <utility>
+#include "tizen/ApiResult.hpp"
+#include "tizen/network/bluetooth/DeviceInfo.hpp"
+#include "tizen/network/bluetooth/Manager.hpp"
+#include "tizen/network/bluetooth/DiscoveryInfo.hpp"
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+
+class Adapter
+{
+public:
+       /*@brief Returns shared pointer to existing instance of bluetooth adapter or creates new
+        *@warning This function is not thread-safe!*/
+       static std::shared_ptr<Adapter> instance();
+
+       ApiResult<bt_adapter_state_e> getState();
+       ApiResult<std::string> getAddress();
+       ApiResult<std::string> getName();
+       ApiResult<void> setName(const std::string & name);
+       ApiResult<bt_adapter_visibility_mode_e> getVisibilityMode();
+       ApiResult<int> getVisibilityDuration();
+       ApiResult<void> startDeviceDiscovery();
+       ApiResult<void> stopDeviceDiscovery();
+       ApiResult<bool> isDiscovering();
+       ApiResult<const DeviceInfo> getBondedDeviceInfo(const std::string & remote_address);
+       ApiResult<bool> isServiceUsed(const std::string & service_uuid);
+
+       /*@brief Runs foreach_cb(device_info) for all devices. It stops iterating if return value of foreach_cb is false*/
+       ApiResult<void> foreachBondedDevice(std::function<bool(const DeviceInfo &)> foreach_cb);
+
+       /*@brief Sets callback for state changing and runs cb(result_of_state_changing, state_to_be_changed) when it happens*/
+       ApiResult<void> setStateChangedCb(std::function<void(int, bt_adapter_state_e)> cb);
+       ApiResult<void> unsetStateChangeCb();
+
+       /*@brief Sets callback for name changing and runs cb(name_of_bluetooth_device_to_be_changed) when it happens*/
+       ApiResult<void> setNameChangedCb(std::function<void(const std::string &)> cb);
+       ApiResult<void> unsetNameChangedCb();
+
+       /*@brief Sets callback for visibility mode changing and runs cb(result_of_visibility_mode_changing, visibility_mode_to_be_changed) 
+        * when it happens*/
+       ApiResult<void> setVisibilityModeChangedCb(std::function<void(int, bt_adapter_visibility_mode_e)> cb);
+       ApiResult<void> unsetVisibilityModeChangedCb();
+
+       /*@brief Sets callback for visibility duration changing and runs cb(duration_until_mode_is_changed_to_non_discoverable) 
+        * when it happens*/
+       ApiResult<void> setVisibilityDurationChangedCb(std::function<void(int)> cb);
+       ApiResult<void> unsetVisibilityDurationChangedCb();
+       
+       /* @brief Sets callback for discovery state changing and runs cb(result_of_device_discovery, state_to_be_changed, discovery_info)
+        * @note if state_to_be_changed is BT_ADAPTER_DEVICE_DISCOVERY_STARTED or BT_ADAPTER_DEVICE_DISCOVERY_FINISHED, 
+        * discovery_info is not valid object*/
+       ApiResult<void> setDeviceDisoveryStateChangedCb(std::function<void(int, bt_adapter_device_discovery_state_e, const DiscoveryInfo &)> cb);
+       ApiResult<void> unsetDeviceDisoveryStateChangedCb();
+
+       ~Adapter();
+
+private:
+       static std::weak_ptr<Adapter> _instance;
+
+       std::shared_ptr<Manager> _bluetoothManager;
+
+       Adapter();
+
+       Adapter(const Adapter&) = delete;
+       Adapter(Adapter&&) = delete;
+
+       Adapter& operator=(const Adapter&) = delete;
+       Adapter& operator=(Adapter&&) = delete;
+
+       std::function<void(int, bt_adapter_state_e)> _state_changed_cb;
+       std::function<void(const std::string &)> _name_changed_cb;
+       std::function<void(int, bt_adapter_visibility_mode_e)> _visibility_mode_changed_cb;
+       std::function<void(int)> _visibility_duration_changed_cb;
+       std::function<void(int, bt_adapter_device_discovery_state_e, const DiscoveryInfo &)> _device_discovery_state_changed_cb;
+       std::function<bool(const DeviceInfo &)> _bonded_device_cb;
+};
+
+} /* bluetooth */
+} /* network */
+} /* tizen */
+#endif /* ADAPTER_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/AdvertiserLE.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/AdvertiserLE.cpp
new file mode 100644 (file)
index 0000000..8ba5bd0
--- /dev/null
@@ -0,0 +1,194 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/bluetooth/AdvertiserLE.hpp"
+#include "tizen/network/bluetooth/Exceptions.hpp"
+#include "tizen/macros.hpp"
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+
+       AdvertiserLE::AdvertiserLE(std::shared_ptr<Manager> manager) : _manager(manager)
+    {
+        int res = bt_adapter_le_create_advertiser(&_advertiser);
+        if(res != BT_ERROR_NONE)
+        {
+            throw BluetoothException(res, "Cannot initialize advertiser");
+        }
+    }
+
+       AdvertiserLE::~AdvertiserLE()
+    {
+        _manager = nullptr;
+        bt_adapter_le_destroy_advertiser(_advertiser);
+    }
+
+       ApiResult<void> AdvertiserLE::addServiceUuid(bt_adapter_le_packet_type_e packet_type, const std::string & uuid)
+    {
+        int res = bt_adapter_le_add_advertising_service_uuid(_advertiser, packet_type, uuid.c_str());
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<void> AdvertiserLE::addServiceSolicitationUuid(bt_adapter_le_packet_type_e packet_type, const std::string & uuid)
+    {
+        int res = bt_adapter_le_add_advertising_service_solicitation_uuid(_advertiser, packet_type, uuid.c_str());
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<void> AdvertiserLE::addServiceData(bt_adapter_le_packet_type_e packet_type, const std::string & uuid, std::vector<char> serviceData)
+    {
+        int res = bt_adapter_le_add_advertising_service_data(_advertiser, packet_type, uuid.c_str(), serviceData.data(), static_cast<int>(serviceData.size()));
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+       ApiResult<void> AdvertiserLE::setAppearance(bt_adapter_le_packet_type_e packet_type, int appearance)
+       {
+        int res = bt_adapter_le_set_advertising_appearance(_advertiser, packet_type, appearance);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+    ApiResult<void> AdvertiserLE::addManufacturerData(bt_adapter_le_packet_type_e packet_type, int manufacturerId, std::vector<char> manufacturerData)
+       {
+        int res = bt_adapter_le_add_advertising_manufacturer_data(_advertiser, packet_type, manufacturerId, manufacturerData.data(), static_cast<int>(manufacturerData.size()));
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+    ApiResult<void> AdvertiserLE::setDeviceName(bt_adapter_le_packet_type_e packet_type, bool includeName)
+       {
+        int res = bt_adapter_le_set_advertising_device_name(_advertiser, packet_type, includeName);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+    ApiResult<void> AdvertiserLE::setTxPowerLevel(bt_adapter_le_packet_type_e packet_type, bool includeTxPower)
+       {
+        int res = bt_adapter_le_set_advertising_tx_power_level(_advertiser, packet_type, includeTxPower);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+    ApiResult<void> AdvertiserLE::clearData(bt_adapter_le_packet_type_e packet_type)
+       {
+        int res = bt_adapter_le_clear_advertising_data(_advertiser, packet_type);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+    ApiResult<void> AdvertiserLE::stop()
+       {
+        int res = bt_adapter_le_stop_advertising(_advertiser);
+        if(res != BT_ERROR_NONE)
+        {
+
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+    ApiResult<void> AdvertiserLE::start(std::function<void(int, AdvertiserLE&, bt_adapter_le_advertising_state_e)> state_changed)
+       {
+        auto old_cb = _start_cb;
+        _start_cb = state_changed;
+        auto _static_cb = [](int result, bt_advertiser_h advertiser UNUSED, bt_adapter_le_advertising_state_e adv_state, void *user_data) -> void
+        {
+            AdvertiserLE *advertiserLE = static_cast<AdvertiserLE*>(user_data);
+            advertiserLE->_start_cb(result, *advertiserLE, adv_state);
+        };
+
+        int res = bt_adapter_le_start_advertising_new(_advertiser, _static_cb, this);
+        if(res != BT_ERROR_NONE)
+        {
+            _start_cb = old_cb;
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+
+    ApiResult<void> AdvertiserLE::setMode(bt_adapter_le_advertising_mode_e mode)
+       {
+        int res = bt_adapter_le_set_advertising_mode(_advertiser, mode);
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<void>::Error(res);
+        }
+        else
+        {
+            return ApiResult<void>::Ok();
+        }
+    }
+}
+}
+}
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/AdvertiserLE.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/AdvertiserLE.hpp
new file mode 100644 (file)
index 0000000..bf150cc
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 ADVERTISER_LE_H
+#define ADVERTISER_LE_H
+
+#include "tizen/network/bluetooth/Manager.hpp"
+#include "tizen/ApiResult.hpp"
+#include <bluetooth.h>
+#include <vector>
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+
+class AdvertiserLE
+{
+public:
+       AdvertiserLE(std::shared_ptr<Manager> manager);
+       ~AdvertiserLE();
+
+       AdvertiserLE() = delete;
+       AdvertiserLE(const AdvertiserLE &) = delete;
+       AdvertiserLE& operator=(const AdvertiserLE&) = delete;
+       
+       AdvertiserLE(const AdvertiserLE &&) = delete;
+       AdvertiserLE& operator=(const AdvertiserLE&&) = delete;
+
+       ApiResult<void> addServiceUuid(bt_adapter_le_packet_type_e packet_type, const std::string & uuid);
+       ApiResult<void> addServiceSolicitationUuid(bt_adapter_le_packet_type_e packet_type, const std::string & uuid);
+       ApiResult<void> addServiceData(bt_adapter_le_packet_type_e packet_type, const std::string & uuid, std::vector<char> serviceData);
+       ApiResult<void> setAppearance(bt_adapter_le_packet_type_e packet_type, int appearance);
+       ApiResult<void> addManufacturerData(bt_adapter_le_packet_type_e packet_type, int manufacturer_id, std::vector<char> manufacturerData);
+       ApiResult<void> setDeviceName(bt_adapter_le_packet_type_e packet_type, bool includeName);
+       ApiResult<void> setTxPowerLevel(bt_adapter_le_packet_type_e packet_type, bool includeTxPower);
+       ApiResult<void> clearData(bt_adapter_le_packet_type_e packet_type);
+       ApiResult<void> stop();
+       ApiResult<void> setMode(bt_adapter_le_advertising_mode_e mode);
+
+       /*@brief Start advertising and sets callback for state changing. Whenever its changed, state_changed_cb(result_of_requested_state_change, 
+        * advertiser, advertising_state_to_Be_changed) is called.*/
+       ApiResult<void> start(std::function<void(int, AdvertiserLE&, bt_adapter_le_advertising_state_e)> state_changed_cb);
+
+private:
+       std::shared_ptr<Manager> _manager;
+    bt_advertiser_h _advertiser;
+       
+       std::function<void(int, AdvertiserLE&, bt_adapter_le_advertising_state_e)> _start_cb;
+};
+
+} /* bluetooth */
+} /* network */
+} /* tizen */
+
+#endif /* ADVERTISER_LE_H */
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DeviceInfo.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DeviceInfo.cpp
new file mode 100644 (file)
index 0000000..c04a9d8
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/bluetooth/DeviceInfo.hpp"
+#include <cstring>
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+    
+    DeviceInfo::DeviceInfo(bt_device_info_s *device_info)
+    {
+        if(device_info != nullptr)
+        {
+            manufacturerData = std::vector<char>(device_info->manufacturer_data, device_info->manufacturer_data + device_info->manufacturer_data_len);
+            remoteAddress = device_info->remote_address;
+            remoteName = device_info->remote_name;
+            btClass = device_info->bt_class;
+            isBonded = device_info->is_bonded;
+            isConnected = device_info->is_connected;
+            isAuthorized = device_info->is_authorized;
+            for(int i = 0; i < device_info->service_count; ++i)
+            {
+                serviceUuid.push_back(std::string(device_info->service_uuid[i]));
+            }
+        }
+    }
+
+    DeviceInfo::DeviceInfo()
+    {
+        isBonded = false;
+        isConnected = false;
+        isAuthorized = false;
+        btClass.major_device_class = static_cast<bt_major_device_class_e>(0);
+        btClass.major_service_class_mask = 0;
+        btClass.minor_device_class = static_cast<bt_minor_device_class_e>(0);
+    }
+    
+} /* bluetooth */
+} /* network */
+} /* tizen */
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DeviceInfo.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DeviceInfo.hpp
new file mode 100644 (file)
index 0000000..1fe41e4
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 BLUETOOTH_DEVICE_INFO_H
+#define BLUETOOTH_DEVICE_INFO_H
+
+#include <bluetooth.h>
+#include <string>
+#include <vector>
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+
+class DeviceInfo
+{
+public:
+    DeviceInfo();
+
+    DeviceInfo(bt_device_info_s *device_info);
+
+    std::string remoteAddress;
+    std::string remoteName;
+    bt_class_s btClass;
+    std::vector<std::string> serviceUuid;
+    bool isBonded;
+    bool isConnected;
+    bool isAuthorized;
+    std::vector<char> manufacturerData;
+};
+
+} /* bluetooth */
+} /* network */
+} /* tizen */
+
+#endif //BLUETOOTH_DEVICE_INFO_H
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DiscoveryInfo.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DiscoveryInfo.cpp
new file mode 100644 (file)
index 0000000..8b99ac6
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/bluetooth/DiscoveryInfo.hpp"
+#include <cstring>
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+    
+    DiscoveryInfo::DiscoveryInfo(bt_adapter_device_discovery_info_s *device_discovery_info) 
+    {
+        if(device_discovery_info != nullptr)
+        {
+            manufacturerData = std::vector<char>(device_discovery_info->manufacturer_data, device_discovery_info->manufacturer_data + device_discovery_info->manufacturer_data_len);
+            remoteAddress = device_discovery_info->remote_address;
+            remoteName = device_discovery_info->remote_name;
+            btClass = device_discovery_info->bt_class;
+            rssi = device_discovery_info->rssi;
+            isBonded = device_discovery_info->is_bonded;
+            appearance = device_discovery_info->appearance;
+            for(int i = 0; i < device_discovery_info->service_count; ++i)
+            {
+                serviceUuid.push_back(std::string(device_discovery_info->service_uuid[i]));
+            }
+        }
+    }
+
+    DiscoveryInfo::DiscoveryInfo()
+    {
+        rssi = 0;
+        isBonded = false;
+        appearance = BT_APPEARANCE_TYPE_UNKNOWN;
+        btClass.major_device_class = static_cast<bt_major_device_class_e>(0);
+        btClass.major_service_class_mask = 0;
+        btClass.minor_device_class = static_cast<bt_minor_device_class_e>(0);
+    }
+
+} /* bluetooth */
+} /* network */
+} /* tizen */
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DiscoveryInfo.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/DiscoveryInfo.hpp
new file mode 100644 (file)
index 0000000..16006cf
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 DISCOVERYINFO_H
+#define DISCOVERYINFO_H
+
+#include <string>
+#include <bluetooth.h>
+#include <vector>
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+    
+class DiscoveryInfo {
+public:
+    DiscoveryInfo();
+
+    DiscoveryInfo(bt_adapter_device_discovery_info_s *device_discovery_info);
+
+    std::string remoteAddress;
+    std::string remoteName;
+    bt_class_s btClass;
+    int rssi;
+    bool isBonded;
+    bt_appearance_type_e appearance;
+    std::vector<char> manufacturerData;
+    std::vector<std::string> serviceUuid;
+};
+
+} /* bluetooth */
+} /* network */
+} /* tizen */
+
+#endif //DISCOVERY_INFO_H
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Exceptions.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Exceptions.cpp
new file mode 100644 (file)
index 0000000..2a502c1
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/bluetooth/Exceptions.hpp"
+#include <string>
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+    BluetoothException::BluetoothException(Error error, std::string message) : _error(error), _message(message)
+    {
+    }
+
+    const char *BluetoothException::what() const noexcept
+    {
+        return (_message + ":" + _error.message()).c_str();
+    }
+
+    Error BluetoothException::getError() const
+    {
+        return _error;
+    }
+} /* bluetooth */
+} /* network */
+} /* tizen */
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Exceptions.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Exceptions.hpp
new file mode 100644 (file)
index 0000000..69739cf
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 BLUETOOTH_EXCEPTIONS_H
+#define BLUETOOTH_EXCEPTIONS_H
+
+#include <exception>
+#include <string>
+
+#include "tizen/Error.hpp"
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+    class BluetoothException : public std::exception
+    {
+    public:
+        BluetoothException(Error error, std::string message = "");
+        ~BluetoothException() = default;
+
+        virtual const char *what() const noexcept override;
+        Error getError() const;
+    private:
+        Error _error;
+        std::string _message;
+    };
+}
+}
+}
+
+#endif //BLUETOOTH_EXCEPTIONS_H
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Manager.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Manager.cpp
new file mode 100644 (file)
index 0000000..471fcb8
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "Manager.hpp"
+
+#include "tizen/network/bluetooth/Exceptions.hpp"
+#include "tizen/Strings.hpp"
+#include "tizen/Logger.hpp"
+#include <bluetooth.h>
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+
+std::weak_ptr<Manager> Manager::_instance;
+
+    std::shared_ptr<Manager> Manager::instance()
+    {
+        if(_instance.expired())
+        {
+            std::shared_ptr<Manager> shared_p(new Manager());
+            _instance = shared_p;
+            return shared_p; 
+        }
+        else
+        {
+            return _instance.lock();
+        }
+    }
+
+    Manager::Manager()
+    {
+        int res = bt_initialize();
+        if(res != BT_ERROR_NONE)
+        {
+            throw BluetoothException(res, "Bluetooth manager constructor error");
+        }
+    }
+
+    Manager::~Manager()
+    {
+        int res = bt_deinitialize();
+        if(res != BT_ERROR_NONE)
+        {
+            Error error(res);
+            logger::Err("Cannot deinitialize bluetooth: ", error.message());
+        }
+    }
+
+    ApiResult<std::string> Manager::GetUuidName(const std::string & uuid)
+    {
+        char *name;
+        int res = bt_get_uuid_name(uuid.c_str(), &name);
+        
+        if(res != BT_ERROR_NONE)
+        {
+            return ApiResult<std::string>::Error(res);
+        }
+
+        std::string string_name = wrapMallocString(name);
+        return ApiResult<std::string>::Ok(string_name);
+    }
+}
+}
+}
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Manager.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/bluetooth/Manager.hpp
new file mode 100644 (file)
index 0000000..0eac376
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 MANAGER_H
+#define MANAGER_H
+
+#include "tizen/ApiResult.hpp"
+#include <memory>
+#include <string>
+#include <functional>
+
+namespace tizen {
+namespace network {
+namespace bluetooth {
+
+class Manager
+{
+public:
+       /*@brief Returns shared pointer to existing instance of Manager or creates new one.
+         @warning This function is not thread-safe!*/
+       static std::shared_ptr<Manager> instance();
+
+       /*@brief Returns name of UUID (Universally Unique Identifier) for bluetooth manager*/
+       ApiResult<std::string> GetUuidName(const std::string & uuid);
+
+       ~Manager();
+
+private:
+       static std::weak_ptr<Manager> _instance;
+
+       Manager();
+
+       Manager(const Manager&) = delete;
+       Manager(Manager&&) = delete;
+
+       Manager& operator=(const Manager&) = delete;
+       Manager& operator=(Manager&&) = delete;
+
+       
+};
+
+} /* bluetooth */
+} /* network */
+} /* tizen */
+
+#endif /* MANAGER_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/softap/Client.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/softap/Client.cpp
new file mode 100644 (file)
index 0000000..0bbd051
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/softap/Client.hpp"
+#include "tizen/network/softap/Exception.hpp"
+#include "tizen/ApiUtils.hpp"
+#include "tizen/Strings.hpp"
+
+using namespace tizen;
+using namespace tizen::network::softap;
+
+Client::Client()
+{
+}
+
+Client::Client(softap_client_h hdl, bool owner) :
+       handle(hdl, softap_client_deleter{owner})
+{
+}
+
+Client::Client(const Client& c)
+{
+       softap_client_h cloned;
+       int err = softap_client_clone(&cloned, c.handle.get());
+       if (err != TIZEN_ERROR_NONE)
+               throw SoftAPException(err);
+
+       handle = std::unique_ptr<void, softap_client_deleter>(cloned, true);
+}
+
+Client& Client::operator=(const Client& c)
+{
+       softap_client_h cloned;
+       int err = softap_client_clone(&cloned, c.handle.get());
+       if (err != TIZEN_ERROR_NONE)
+               throw SoftAPException(err);
+
+       handle = std::unique_ptr<void, softap_client_deleter>(cloned, true);
+       return *this;
+}
+
+Client::Client(Client&& c)
+{
+       handle.swap(c.handle);
+}
+
+Client& Client::operator=(Client&& c)
+{
+       handle.swap(c.handle);
+       return *this;
+}
+
+IMPLEMENT_METHOD(std::string, Client::name(), char *ret, softap_client_get_name(handle.get(), &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(std::string, Client::ipAddress(softap_address_family_e af), char *ret, softap_client_get_ip_address(handle.get(), af, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(std::string, Client::macAddress(), char *ret, softap_client_get_mac_address(handle.get(), &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(std::chrono::system_clock::time_point, Client::time(), time_t ret, softap_client_get_time(handle.get(), &ret), std::chrono::system_clock::from_time_t(ret))
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/softap/Client.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/softap/Client.hpp
new file mode 100644 (file)
index 0000000..2f54eed
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZEN_NETWORK_SOFTAP_CLIENT_H
+#define TIZEN_NETWORK_SOFTAP_CLIENT_H
+
+#include <softap.h>
+#include <memory>
+#include <chrono>
+
+#include "tizen/network/softap/Manager.hpp"
+
+namespace tizen {
+namespace network {
+namespace softap {
+
+class Manager;
+
+class Client
+{
+public:
+       Client();
+       Client(const Client&);
+       Client& operator=(const Client&);
+       Client(Client&&);
+       Client& operator=(Client&&);
+       ~Client() = default;
+
+       ApiResult<std::string> name();
+       ApiResult<std::string> ipAddress(softap_address_family_e);
+       ApiResult<std::string> macAddress();
+       ApiResult<std::chrono::system_clock::time_point> time();
+
+private:
+       Client(softap_client_h, bool owner);
+       
+       struct softap_client_deleter {
+               softap_client_deleter(bool o) : owns(o) {}
+               softap_client_deleter() : softap_client_deleter(false) {}
+               bool owns;
+               void operator()(softap_client_h client) {
+                       if (owns && client)
+                               softap_client_destroy(client);
+               }
+       };
+
+       std::unique_ptr<void, softap_client_deleter> handle;
+       friend Manager;
+};
+
+} /* softap */
+} /* network */
+} /* tizen */
+
+#endif /* TIZEN_NETWORK_SOFTAP_CLIENT_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/softap/Exception.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/softap/Exception.hpp
new file mode 100644 (file)
index 0000000..2e84247
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZEN_NETWORK_SOFTAP_EXCEPTION_H
+#define TIZEN_NETWORK_SOFTAP_EXCEPTION_H
+
+#include <stdexcept>
+#include <tizen.h>
+
+namespace tizen {
+namespace network {
+namespace softap {
+
+class SoftAPException : std::runtime_error
+{
+public:
+  SoftAPException(int err) : std::runtime_error(get_error_message(err)) {}
+  virtual ~SoftAPException() = default;
+};
+
+} /* wifi */
+} /* network */
+} /* softap */
+
+#endif /* TIZEN_NETWORK_SOFTAP_EXCEPTION_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/softap/Manager.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/softap/Manager.cpp
new file mode 100644 (file)
index 0000000..0265569
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/softap/Manager.hpp"
+#include "tizen/network/softap/Exception.hpp"
+#include "tizen/ApiUtils.hpp"
+#include "tizen/Strings.hpp"
+
+using namespace tizen;
+using namespace tizen::network::softap;
+
+Manager::Manager()
+{
+       int err = softap_create(&handle);
+       if (err != TIZEN_ERROR_NONE) {
+               throw SoftAPException(err);
+       }
+}
+
+Manager::~Manager()
+{
+       softap_destroy(handle);
+}
+
+IMPLEMENT_METHOD(void, Manager::enable(), , softap_enable(handle), )
+IMPLEMENT_METHOD(void, Manager::disable(), , softap_disable(handle), )
+IMPLEMENT_METHOD(bool, Manager::isEnabled(), bool ret , softap_is_enabled(handle, &ret), ret)
+IMPLEMENT_METHOD(std::string, Manager::macAddress(), char *ret , softap_get_mac_address(handle, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(std::string, Manager::networkInterfaceName(), char *ret , softap_get_network_interface_name(handle, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Manager::setIpAddress(softap_address_family_e address_family, const std::string& ip_address), , softap_set_ip_address(handle, address_family, ip_address.c_str()), )
+IMPLEMENT_METHOD(std::string, Manager::ipAddress(softap_address_family_e address_family), char *ret , softap_get_ip_address(handle, address_family, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(std::string, Manager::gatewayAddress(softap_address_family_e address_family), char *ret , softap_get_gateway_address(handle, address_family, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(std::string, Manager::subnetMask(softap_address_family_e address_family), char *ret , softap_get_subnet_mask(handle, address_family, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Manager::setSecurityType(softap_security_type_e st), , softap_set_security_type(handle, st), )
+IMPLEMENT_METHOD(softap_security_type_e, Manager::securityType(), softap_security_type_e ret, softap_get_security_type(handle, &ret), ret)
+IMPLEMENT_METHOD(void, Manager::setSsid(const std::string& ssid), , softap_set_ssid(handle, ssid.c_str()), )
+IMPLEMENT_METHOD(std::string, Manager::ssid(), char *ret, softap_get_ssid(handle, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Manager::setSsidVisibility(bool v), , softap_set_ssid_visibility(handle, v), )
+IMPLEMENT_METHOD(bool, Manager::ssidVisibility(), bool ret, softap_get_ssid_visibility(handle, &ret), ret)
+IMPLEMENT_METHOD(void, Manager::setPassphrase(const std::string &pass), , softap_set_passphrase(handle, pass.c_str()), )
+IMPLEMENT_METHOD(std::string, Manager::passphrase(), char *ret, softap_get_passphrase(handle, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Manager::pushWpsButton(), , softap_push_wps_button(handle), )
+IMPLEMENT_METHOD(void, Manager::setWpsPin(const std::string& v), , softap_set_wps_pin(handle, v.c_str()), )
+IMPLEMENT_METHOD(void, Manager::setVendorElemenet(const std::string& v), , softap_set_vendor_element(handle, v.c_str()), )
+IMPLEMENT_METHOD(std::string, Manager::vendorElemenet(), char *ret, softap_get_vendor_element(handle, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Manager::setChannel(int v), , softap_set_channel(handle, v), )
+IMPLEMENT_METHOD(int, Manager::channel(), int ret, softap_get_channel(handle, &ret), ret)
+IMPLEMENT_METHOD(void, Manager::enableDHCP(), , softap_enable_dhcp(handle), )
+IMPLEMENT_METHOD(void, Manager::disableDHCP(), , softap_disable_dhcp(handle), )
+IMPLEMENT_METHOD(bool, Manager::isDHCPEnabled(), bool ret, softap_is_dhcp_enabled(handle, &ret), ret)
+IMPLEMENT_METHOD(void, Manager::enableDHCPWithRange(const std::string& start, const std::string& end), , softap_enable_dhcp_with_range(handle, const_cast<char*>(start.c_str()), const_cast<char*>(end.c_str())), )
+IMPLEMENT_METHOD(void, Manager::setMode(softap_wireless_mode_e m), , softap_set_mode(handle, m), )
+IMPLEMENT_METHOD(softap_wireless_mode_e, Manager::mode(), softap_wireless_mode_e ret, softap_get_mode(handle, &ret), ret)
+IMPLEMENT_METHOD(void, Manager::reloadSettings(SettingsReloadedCallback cb), settings_reloaded_cb = cb, softap_reload_settings(handle, [](softap_error_e err, void *user_data) {
+       Manager *mgr = static_cast<Manager*>(user_data);
+       if (mgr->settings_reloaded_cb) mgr->settings_reloaded_cb(err);
+       }, this), )
+
+ApiResult<std::vector<Client>> Manager::connectedClients()
+{
+       std::vector<Client> ret;
+       int err = softap_foreach_connected_clients(handle, [](softap_client_h c, void *user_data) -> bool {
+                       std::vector<Client> *ret = static_cast<std::vector<Client>*>(user_data);
+                       Client client(c, false);
+                       ret->push_back(client);
+                       return true;
+                       }, &ret);
+       if (err != TIZEN_ERROR_NONE) {
+               return ApiResult<std::vector<Client>>::Error(err);
+       } else {
+               return ApiResult<std::vector<Client>>::Ok(ret);
+       }
+}
+
+IMPLEMENT_METHOD(void, Manager::setEnabledCallback(EnabledCallback cb),
+       static const auto ccb = [](softap_error_e result, bool is_requested, void *user_data) {
+               Manager *mgr = static_cast<Manager*>(user_data);
+               if (mgr->enabled_cb) mgr->enabled_cb(result, is_requested);
+       };
+       enabled_cb = cb;,
+       cb ? softap_set_enabled_cb(handle, ccb, this) : softap_unset_enabled_cb(handle), )
+
+IMPLEMENT_METHOD(void, Manager::setDisabledCallback(DisabledCallback cb),
+       static const auto ccb = [](softap_error_e result, softap_disabled_cause_e cause, void *user_data) {
+               Manager *mgr = static_cast<Manager*>(user_data);
+               if (mgr->disabled_cb) mgr->disabled_cb(result, cause);
+       };
+       disabled_cb = cb;,
+       cb ? softap_set_disabled_cb(handle, ccb, this) : softap_unset_disabled_cb(handle);, )
+
+IMPLEMENT_METHOD(void, Manager::setClientConnectionStateChangedCallback(ClientConnectionStateChangedCallback cb),
+       static const auto ccb = [](softap_client_h client, bool opened, void *user_data) {
+               Manager *mgr = static_cast<Manager*>(user_data);
+               Client c(client, false);
+               if (mgr->client_state_changed_cb) mgr->client_state_changed_cb(c, opened);
+       };
+       client_state_changed_cb = cb;,
+       cb ? softap_set_client_connection_state_changed_cb(handle, ccb, this) : softap_unset_client_connection_state_changed_cb(handle);,)
+
+IMPLEMENT_METHOD(void, Manager::setSecurityTypeChangedCallback(SecurityTypeChangedCallback cb),
+       static const auto ccb = [](softap_security_type_e changed_type, void *user_data) {
+               Manager *mgr = static_cast<Manager*>(user_data);
+               if (mgr->security_type_changed_cb) mgr->security_type_changed_cb(changed_type);
+       };
+       security_type_changed_cb = cb;,
+       cb ? softap_set_security_type_changed_cb(handle, ccb, this) : softap_unset_security_type_changed_cb(handle);,)
+
+IMPLEMENT_METHOD(void, Manager::setSsidVisibilityChangedCallback(SsidVisibilityChangedCallback cb),
+       static const auto ccb = [](bool changed_visible, void *user_data) {
+               Manager *mgr = static_cast<Manager*>(user_data);
+               if (mgr->visibility_changed_cb) mgr->visibility_changed_cb(changed_visible);
+       };
+       visibility_changed_cb = cb;,
+       cb ? softap_set_ssid_visibility_changed_cb(handle, ccb, this) : softap_unset_ssid_visibility_changed_cb(handle);, )
+
+IMPLEMENT_METHOD(void, Manager::setPassphraseChangedCallback(PassphraseChangedCallback cb),
+       static const auto ccb = [](void *user_data) {
+               Manager *mgr = static_cast<Manager*>(user_data);
+               if (mgr->passphrase_changed_cb) mgr->passphrase_changed_cb();
+       };
+       passphrase_changed_cb = cb;,
+       cb ? softap_set_passphrase_changed_cb(handle, ccb, this) : softap_unset_passphrase_changed_cb(handle);, )
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/softap/Manager.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/softap/Manager.hpp
new file mode 100644 (file)
index 0000000..c421269
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZEN_NETWORK_SOFTAP_MANANGER
+#define TIZEN_NETWORK_SOFTAP_MANANGER
+
+#include <softap.h>
+#include <string>
+#include <vector>
+#include <functional>
+
+#include "tizen/ApiResult.hpp"
+#include "tizen/network/softap/Client.hpp"
+
+namespace tizen {
+namespace network {
+namespace softap {
+
+class Client;
+
+class Manager
+{
+public:
+       Manager();
+       Manager(const Manager&) = delete;
+       Manager& operator=(const Manager&) = delete;
+       Manager(Manager&&) = delete;
+       Manager& operator=(Manager&&) = delete;
+
+       virtual ~Manager();
+
+       ApiResult<void> enable();
+       ApiResult<void> disable();
+       ApiResult<bool> isEnabled();
+       ApiResult<std::string> macAddress();
+       ApiResult<std::string> networkInterfaceName();
+
+       ApiResult<std::vector<Client>> connectedClients();
+
+       using EnabledCallback = std::function<void(softap_error_e result, bool is_requested)>;
+       using DisabledCallback = std::function<void(softap_error_e result, softap_disabled_cause_e cause)>;
+       using ClientConnectionStateChangedCallback = std::function<void(Client &c, bool opened)>;
+       using SecurityTypeChangedCallback = std::function<void(softap_security_type_e changed_type)>;
+       using SsidVisibilityChangedCallback = std::function<void(bool changed_visible)>;
+       using PassphraseChangedCallback = std::function<void()>;
+       using SettingsReloadedCallback = std::function<void(softap_error_e result)>;
+
+       ApiResult<void> setIpAddress(softap_address_family_e address_family, const std::string& ip_address);
+       ApiResult<std::string> ipAddress(softap_address_family_e address_family);
+       ApiResult<std::string> gatewayAddress(softap_address_family_e address_family);
+       ApiResult<std::string> subnetMask(softap_address_family_e address_family);
+
+       ApiResult<void> setEnabledCallback(EnabledCallback);
+       ApiResult<void> setDisabledCallback(DisabledCallback);
+       ApiResult<void> setClientConnectionStateChangedCallback(ClientConnectionStateChangedCallback);
+       ApiResult<void> setSecurityTypeChangedCallback(SecurityTypeChangedCallback);
+       ApiResult<void> setSsidVisibilityChangedCallback(SsidVisibilityChangedCallback);
+       ApiResult<void> setPassphraseChangedCallback(PassphraseChangedCallback);
+
+       ApiResult<void> setSecurityType(softap_security_type_e);
+       ApiResult<softap_security_type_e> securityType();
+       ApiResult<void> setSsid(const std::string& ssid);
+       ApiResult<std::string> ssid();
+       ApiResult<void> setSsidVisibility(bool);
+       ApiResult<bool> ssidVisibility();
+       ApiResult<void> setPassphrase(const std::string &pass);
+       ApiResult<std::string> passphrase();
+
+       ApiResult<void> pushWpsButton();
+       ApiResult<void> setWpsPin(const std::string&);
+       ApiResult<void> setVendorElemenet(const std::string&);
+       ApiResult<std::string> vendorElemenet();
+       ApiResult<void> setChannel(int);
+       ApiResult<int> channel();
+       ApiResult<void> enableDHCP();
+       ApiResult<void> disableDHCP();
+       ApiResult<bool> isDHCPEnabled();
+       ApiResult<void> enableDHCPWithRange(const std::string& start, const std::string& end);
+       ApiResult<void> setMode(softap_wireless_mode_e);
+       ApiResult<softap_wireless_mode_e> mode();
+       ApiResult<void> reloadSettings(SettingsReloadedCallback);
+private:
+       softap_h handle;
+       EnabledCallback enabled_cb;
+       DisabledCallback disabled_cb;
+       ClientConnectionStateChangedCallback client_state_changed_cb;
+       SecurityTypeChangedCallback security_type_changed_cb;
+       SsidVisibilityChangedCallback visibility_changed_cb;
+       PassphraseChangedCallback passphrase_changed_cb;
+       SettingsReloadedCallback settings_reloaded_cb;
+};
+
+} /* softap */
+} /* network */
+} /* tizen */
+
+#endif /* TIZEN_NETWORK_SOFTAP_MANANGER */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Ap.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Ap.cpp
new file mode 100644 (file)
index 0000000..b263404
--- /dev/null
@@ -0,0 +1,260 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/wifi/Ap.hpp"
+#include "tizen/ApiUtils.hpp"
+
+using namespace tizen;
+using namespace tizen::network::wifi;
+
+Ap::Ap() : handle(nullptr) {}
+
+Ap::~Ap() {
+  if (handle)
+    wifi_manager_ap_destroy(handle);
+}
+
+Ap::Ap(const Ap &ap) {
+  wifi_manager_ap_h cloned;
+
+  int err = wifi_manager_ap_clone(&cloned, ap.handle);
+  if (err != TIZEN_ERROR_NONE) {
+    throw WifiException(err);
+  }
+
+  if (handle)
+    wifi_manager_ap_destroy(handle);
+
+  handle = cloned;
+}
+
+Ap &Ap::operator=(const Ap &ap) {
+  wifi_manager_ap_h cloned;
+
+  int err = wifi_manager_ap_clone(&cloned, ap.handle);
+  if (err != TIZEN_ERROR_NONE) {
+    throw WifiException(err);
+  }
+
+  if (handle)
+    wifi_manager_ap_destroy(handle);
+
+  handle = cloned;
+  return *this;
+}
+
+Ap::Ap(Ap &&ap) {
+  std::swap(handle, ap.handle);
+}
+
+Ap &Ap::operator=(Ap &&ap) {
+  std::swap(handle, ap.handle);
+
+  return *this;
+}
+
+Ap::Ap(wifi_manager_ap_h ap)
+    : handle(ap) {}
+
+IMPLEMENT_METHOD(std::string, Ap::essid(), char *tmp,
+                 wifi_manager_ap_get_essid(handle, &tmp), wrapMallocString(tmp))
+IMPLEMENT_METHOD(std::string, Ap::rawSsid(), char *ssid; int len;
+                 , wifi_manager_ap_get_raw_ssid(handle, &ssid, &len),
+                 wrapMallocString(ssid, static_cast<size_t>(len)))
+IMPLEMENT_METHOD(std::string, Ap::bssid(), char *tmp,
+                 wifi_manager_ap_get_bssid(handle, &tmp), wrapMallocString(tmp))
+IMPLEMENT_METHOD(int, Ap::rssi(), int val,
+                 wifi_manager_ap_get_rssi(handle, &val), val)
+IMPLEMENT_METHOD(wifi_manager_rssi_level_e, Ap::rssiLevel(),
+                 wifi_manager_rssi_level_e val,
+                 wifi_manager_ap_get_rssi_level(handle, &val), val)
+IMPLEMENT_METHOD(int, Ap::frequency(), int val,
+                 wifi_manager_ap_get_frequency(handle, &val), val)
+IMPLEMENT_METHOD(int, Ap::maxSpeed(), int val,
+                 wifi_manager_ap_get_max_speed(handle, &val), val)
+IMPLEMENT_METHOD(bool, Ap::isFavourite(), bool val,
+                 wifi_manager_ap_is_favorite(handle, &val), val)
+IMPLEMENT_METHOD(bool, Ap::isPasspoint(), bool val,
+                 wifi_manager_ap_is_passpoint(handle, &val), val)
+IMPLEMENT_METHOD(wifi_manager_connection_state_e, Ap::connectionState(),
+                 wifi_manager_connection_state_e val,
+                 wifi_manager_ap_get_connection_state(handle, &val), val)
+
+IMPLEMENT_METHOD(std::vector<std::string>, Ap::ipv6Addresses(),
+                 std::vector<std::string> ret;
+                 , wifi_manager_ap_foreach_ipv6_address(
+                       handle,
+                       [](char *ipv6address, void *user_data) -> bool {
+                         std::vector<std::string> *ret =
+                             static_cast<std::vector<std::string> *>(user_data);
+                         ret->push_back(ipv6address);
+                         return true;
+                       },
+                       &ret),
+                 ret)
+
+IMPLEMENT_METHOD(wifi_manager_disconnect_reason_e, Ap::disconnectReason(),
+                 wifi_manager_disconnect_reason_e val,
+                 wifi_manager_ap_get_disconnect_reason(handle, &val), val)
+IMPLEMENT_METHOD(wifi_manager_error_e, Ap::getErrorState(),
+                 wifi_manager_error_e val,
+                 wifi_manager_ap_get_error_state(handle, &val), val)
+IMPLEMENT_METHOD(wifi_manager_assoc_status_code_e, Ap::assocStatusCode(),
+                 wifi_manager_assoc_status_code_e val,
+                 wifi_manager_ap_get_assoc_status_code(handle, &val), val)
+
+IMPLEMENT_METHOD(
+    std::vector<std::vector<unsigned char>>, Ap::vises(),
+    std::vector<std::vector<unsigned char>> ret,
+    wifi_manager_ap_foreach_vsie(
+        handle,
+        [](unsigned char *vsie, int length, void *user_data) -> bool {
+          std::vector<std::vector<unsigned char>> *ret =
+              static_cast<std::vector<std::vector<unsigned char>> *>(user_data);
+          std::vector<unsigned char> elem(vsie, vsie + length);
+          ret->push_back(elem);
+          return true;
+        },
+        &ret),
+    ret)
+
+IMPLEMENT_METHOD(std::string, Ap::countryCode(), char *val,
+                 wifi_manager_ap_get_countrycode(handle, &val), val)
+
+IMPLEMENT_METHOD(std::vector<BssidInfo>, Ap::foundBssids(),
+                 std::vector<BssidInfo> ret,
+                 wifi_manager_foreach_found_bssid(
+                     handle,
+                     [](const char *bssid, int rssi, int freq,
+                        void *user_data) -> bool {
+                       std::vector<BssidInfo> *ret =
+                           static_cast<std::vector<BssidInfo> *>(user_data);
+                       BssidInfo info = {bssid, rssi, freq};
+                       ret->push_back(info);
+                       return true;
+                     },
+                     &ret),
+                 ret)
+
+// Security
+IMPLEMENT_METHOD(wifi_manager_security_type_e, Ap::securityType(),
+                 wifi_manager_security_type_e val,
+                 wifi_manager_ap_get_security_type(handle, &val), val)
+IMPLEMENT_METHOD(void, Ap::setSecurityType(wifi_manager_security_type_e val), ,
+                 wifi_manager_ap_set_security_type(handle, val), )
+IMPLEMENT_METHOD(wifi_manager_encryption_type_e, Ap::encryptionType(),
+                 wifi_manager_encryption_type_e val,
+                 wifi_manager_ap_get_encryption_type(handle, &val), val)
+IMPLEMENT_METHOD(void, Ap::setSecurityType(wifi_manager_encryption_type_e val),
+                 , wifi_manager_ap_set_encryption_type(handle, val), )
+IMPLEMENT_METHOD(bool, Ap::isPassphraseRequired(), bool val,
+                 wifi_manager_ap_is_passphrase_required(handle, &val), val)
+IMPLEMENT_METHOD(void, Ap::setPassphrase(const std::string &val), ,
+                 wifi_manager_ap_set_passphrase(handle, val.c_str()), )
+IMPLEMENT_METHOD(bool, Ap::isWpsSupported(), bool val,
+                 wifi_manager_ap_is_wps_supported(handle, &val), val)
+
+// Security - Eap
+IMPLEMENT_METHOD(void, Ap::setEapPassphrase(const std::string &username,
+                                            const std::string &passphrase),
+                 , wifi_manager_ap_set_eap_passphrase(handle, username.c_str(),
+                                                      passphrase.c_str()), )
+IMPLEMENT_METHOD(EapPassphraseInfo, Ap::eapPassphrase(), EapPassphraseInfo ret;
+                 char *val; bool is_set;
+                 , wifi_manager_ap_get_eap_passphrase(handle, &val, &is_set),
+                 (EapPassphraseInfo{wrapMallocString(val), is_set}))
+IMPLEMENT_METHOD(void, Ap::setEapCACertFile(const std::string &filepath), ,
+                 wifi_manager_ap_set_eap_ca_cert_file(handle,
+                                                      filepath.c_str()), )
+IMPLEMENT_METHOD(std::string, Ap::eapCACertFile(), char *val,
+                 wifi_manager_ap_get_eap_ca_cert_file(handle, &val),
+                 wrapMallocString(val))
+IMPLEMENT_METHOD(void, Ap::setEapClientCertFile(const std::string &filepath), ,
+                 wifi_manager_ap_set_eap_client_cert_file(handle,
+                                                          filepath.c_str()), )
+IMPLEMENT_METHOD(std::string, Ap::eapClientCertFile(), char *val,
+                 wifi_manager_ap_get_eap_client_cert_file(handle, &val),
+                 wrapMallocString(val))
+IMPLEMENT_METHOD(std::string, Ap::eapPrivateKeyFile(), char *val,
+                 wifi_manager_ap_get_eap_private_key_file(handle, &val),
+                 wrapMallocString(val))
+IMPLEMENT_METHOD(void, Ap::setEapPrivateKeyInfo(const std::string &file,
+                                                const std::string &password),
+                 ,
+                 wifi_manager_ap_set_eap_private_key_info(handle, file.c_str(),
+                                                          password.c_str()), )
+IMPLEMENT_METHOD(wifi_manager_eap_type_e, Ap::eapType(),
+                 wifi_manager_eap_type_e val,
+                 wifi_manager_ap_get_eap_type(handle, &val), val)
+IMPLEMENT_METHOD(void, Ap::setEapType(wifi_manager_eap_type_e type), ,
+                 wifi_manager_ap_set_eap_type(handle, type), )
+IMPLEMENT_METHOD(wifi_manager_eap_auth_type_e, Ap::eapAuthType(),
+                 wifi_manager_eap_auth_type_e val,
+                 wifi_manager_ap_get_eap_auth_type(handle, &val), val)
+IMPLEMENT_METHOD(void, Ap::setEapAuthType(wifi_manager_eap_auth_type_e type), ,
+                 wifi_manager_ap_set_eap_auth_type(handle, type), )
+IMPLEMENT_METHOD(wifi_manager_ip_config_type_e, Ap::config(wifi_manager_address_family_e af),
+                                wifi_manager_ip_config_type_e val,
+                                wifi_manager_ap_get_ip_config_type(handle, af, &val),
+                                val)
+IMPLEMENT_METHOD(void, Ap::setConfig(wifi_manager_address_family_e af, wifi_manager_ip_config_type_e type), ,
+                                wifi_manager_ap_set_ip_config_type(handle, af, type), )
+
+IMPLEMENT_METHOD(std::string, Ap::address(wifi_manager_address_family_e af), char *ret,
+                                wifi_manager_ap_get_ip_address(handle, af, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Ap::setAddress(wifi_manager_address_family_e af, const std::string& addr), ,
+                                wifi_manager_ap_set_ip_address(handle, af, addr.c_str()), )
+
+IMPLEMENT_METHOD(std::string, Ap::subnetMask(wifi_manager_address_family_e af), char *ret,
+                                wifi_manager_ap_get_subnet_mask(handle, af, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Ap::setSubnetMask(wifi_manager_address_family_e af, const std::string& addr), ,
+                                wifi_manager_ap_set_subnet_mask(handle, af, addr.c_str()), )
+
+IMPLEMENT_METHOD(std::string, Ap::gatewayAddress(wifi_manager_address_family_e af), char *ret,
+                                wifi_manager_ap_get_gateway_address(handle, af, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Ap::setGatewayAddress(wifi_manager_address_family_e af, const std::string& addr), ,
+                                wifi_manager_ap_set_gateway_address(handle, af, addr.c_str()), )
+
+IMPLEMENT_METHOD(std::string, Ap::dhcpServerAddress(wifi_manager_address_family_e af), char *ret,
+                                wifi_manager_ap_get_dhcp_server_address(handle, af, &ret), wrapMallocString(ret))
+
+IMPLEMENT_METHOD(std::chrono::seconds, Ap::dhcpServerLeaseDuration(wifi_manager_address_family_e af), int ret,
+                                wifi_manager_ap_get_dhcp_lease_duration(handle, af, &ret), std::chrono::seconds(ret))
+
+IMPLEMENT_METHOD(std::string, Ap::proxyAddress(wifi_manager_address_family_e af), char *ret,
+                                wifi_manager_ap_get_proxy_address(handle, af, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Ap::setProxyAddress(wifi_manager_address_family_e af, const std::string& addr), ,
+                                wifi_manager_ap_set_proxy_address(handle, af, addr.c_str()), )
+
+IMPLEMENT_METHOD(wifi_manager_proxy_type_e, Ap::proxyType(), wifi_manager_proxy_type_e ret,
+                                wifi_manager_ap_get_proxy_type(handle, &ret), ret)
+IMPLEMENT_METHOD(void, Ap::setProxyType(wifi_manager_proxy_type_e type), ,
+                                wifi_manager_ap_set_proxy_type(handle, type),)
+
+IMPLEMENT_METHOD(std::string, Ap::dnsAddress(int order, wifi_manager_address_family_e af), char *ret,
+                                wifi_manager_ap_get_dns_address(handle, order, af, &ret), wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Ap::setDnsAddress(int order, wifi_manager_address_family_e af, const std::string& addr), ,
+                                wifi_manager_ap_set_dns_address(handle, order, af, addr.c_str()), )
+
+IMPLEMENT_METHOD(wifi_manager_dns_config_type_e, Ap::dnsConfigType(wifi_manager_address_family_e af), wifi_manager_dns_config_type_e ret,
+                                wifi_manager_ap_get_dns_config_type(handle, af, &ret), ret)
+IMPLEMENT_METHOD(void, Ap::setDnsConfigType(wifi_manager_address_family_e af, wifi_manager_dns_config_type_e type), ,
+                                wifi_manager_ap_set_dns_config_type(handle, af, type),)
+
+IMPLEMENT_METHOD(int, Ap::prefixLength(wifi_manager_address_family_e af), int ret,
+                                wifi_manager_ap_get_prefix_length(handle, af, &ret), ret)
+IMPLEMENT_METHOD(void, Ap::setPrefixLength(wifi_manager_address_family_e af, int len), ,
+                                wifi_manager_ap_set_prefix_length(handle, af, len),)
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Ap.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Ap.hpp
new file mode 100644 (file)
index 0000000..b0856b8
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 AP_H
+#define AP_H
+
+#include <chrono>
+#include <memory>
+#include <string>
+#include <vector>
+#include <wifi-manager.h>
+
+#include "tizen/ApiResult.hpp"
+#include "tizen/ApiUtils.hpp"
+#include "tizen/Strings.hpp"
+#include "tizen/network/wifi/Exception.hpp"
+
+namespace tizen {
+namespace network {
+namespace wifi {
+
+class Manager;
+
+struct EapPassphraseInfo {
+  std::string username;
+  bool is_password_set;
+};
+
+struct BssidInfo {
+  std::string bssid;
+  int rssi;
+  int frequency;
+};
+
+class Ap {
+public:
+  Ap();
+  Ap(const Ap &ap);
+  Ap &operator=(const Ap &ap);
+  Ap(Ap &&ap);
+  Ap &operator=(Ap &&ap);
+  ~Ap();
+
+  ApiResult<std::string> essid();
+  ApiResult<std::string> rawSsid();
+  ApiResult<std::string> bssid();
+  ApiResult<int> rssi();
+  ApiResult<wifi_manager_rssi_level_e> rssiLevel();
+  ApiResult<int> frequency();
+  ApiResult<int> maxSpeed();
+  ApiResult<bool> isFavourite();
+  ApiResult<bool> isPasspoint();
+  ApiResult<wifi_manager_connection_state_e> connectionState();
+  ApiResult<wifi_manager_ip_config_type_e> config(wifi_manager_address_family_e);
+  ApiResult<void> setConfig(wifi_manager_address_family_e, wifi_manager_ip_config_type_e);
+  ApiResult<std::string> address(wifi_manager_address_family_e);
+  ApiResult<void> setAddress(wifi_manager_address_family_e, const std::string&);
+  ApiResult<std::string> subnetMask(wifi_manager_address_family_e);
+  ApiResult<void> setSubnetMask(wifi_manager_address_family_e, const std::string&);
+
+  ApiResult<std::string> gatewayAddress(wifi_manager_address_family_e);
+  ApiResult<void> setGatewayAddress(wifi_manager_address_family_e, const std::string&);
+
+  ApiResult<std::string> dhcpServerAddress(wifi_manager_address_family_e);
+  ApiResult<std::chrono::seconds> dhcpServerLeaseDuration(wifi_manager_address_family_e);
+
+  ApiResult<std::string> proxyAddress(wifi_manager_address_family_e);
+  ApiResult<void> setProxyAddress(wifi_manager_address_family_e, const std::string&);
+
+  ApiResult<wifi_manager_proxy_type_e> proxyType();
+  ApiResult<void> setProxyType(wifi_manager_proxy_type_e);
+
+  ApiResult<std::string> dnsAddress(int order, wifi_manager_address_family_e);
+  ApiResult<void> setDnsAddress(int order, wifi_manager_address_family_e, const std::string&);
+
+  ApiResult<wifi_manager_dns_config_type_e> dnsConfigType(wifi_manager_address_family_e);
+  ApiResult<void> setDnsConfigType(wifi_manager_address_family_e, wifi_manager_dns_config_type_e);
+
+  ApiResult<int> prefixLength(wifi_manager_address_family_e);
+  ApiResult<void> setPrefixLength(wifi_manager_address_family_e, int);
+
+  ApiResult<std::vector<std::string>> ipv6Addresses();
+  ApiResult<wifi_manager_disconnect_reason_e> disconnectReason();
+  ApiResult<wifi_manager_error_e> getErrorState();
+  ApiResult<wifi_manager_assoc_status_code_e> assocStatusCode();
+  ApiResult<std::vector<std::vector<unsigned char>>> vises();
+  ApiResult<std::string> countryCode();
+
+  ApiResult<std::vector<BssidInfo>> foundBssids();
+
+  // Security
+  ApiResult<wifi_manager_security_type_e> securityType();
+  ApiResult<void> setSecurityType(wifi_manager_security_type_e val);
+  ApiResult<wifi_manager_encryption_type_e> encryptionType();
+  ApiResult<void> setSecurityType(wifi_manager_encryption_type_e val);
+  ApiResult<bool> isPassphraseRequired();
+  ApiResult<void> setPassphrase(const std::string &val);
+  ApiResult<bool> isWpsSupported();
+  // Security - Eap
+  ApiResult<void> setEapPassphrase(const std::string &username,
+                                   const std::string &passphrase);
+
+  ApiResult<EapPassphraseInfo> eapPassphrase();
+  ApiResult<void> setEapCACertFile(const std::string &filepath);
+
+  ApiResult<std::string> eapCACertFile();
+  ApiResult<void> setEapClientCertFile(const std::string &filepath);
+  ApiResult<std::string> eapClientCertFile();
+  ApiResult<std::string> eapPrivateKeyFile();
+  ApiResult<void> setEapPrivateKeyInfo(const std::string &file,
+                                       const std::string &password);
+  ApiResult<wifi_manager_eap_type_e> eapType();
+  ApiResult<void> setEapType(wifi_manager_eap_type_e type);
+  ApiResult<wifi_manager_eap_auth_type_e> eapAuthType();
+  ApiResult<void> setEapAuthType(wifi_manager_eap_auth_type_e type);
+
+private:
+  Ap(wifi_manager_ap_h ap);
+
+  wifi_manager_ap_h handle = nullptr;
+
+  friend tizen::network::wifi::Manager;
+};
+
+} /* wifi */
+} /* network */
+} /* tizen */
+
+#endif /* AP_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Exception.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Exception.cpp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Exception.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Exception.hpp
new file mode 100644 (file)
index 0000000..6890602
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZEN_NETWORK_WIFI_EXCEPTION_H
+#define TIZEN_NETWORK_WIFI_EXCEPTION_H
+
+#include <stdexcept>
+#include <tizen.h>
+
+namespace tizen {
+namespace network {
+namespace wifi {
+
+class WifiException : public std::runtime_error {
+public:
+  WifiException(int err) : std::runtime_error(get_error_message(err)) {}
+  virtual ~WifiException() = default;
+
+private:
+};
+
+} /* wifi */
+} /* network */
+} /* tizen */
+
+#endif /* TIZEN_NETWORK_WIFI_EXCEPTION_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Manager.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Manager.cpp
new file mode 100644 (file)
index 0000000..409fde2
--- /dev/null
@@ -0,0 +1,368 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "Manager.hpp"
+#include "tizen/ApiUtils.hpp"
+
+#include <tizen/network/wifi/Exception.hpp>
+
+using namespace tizen;
+using namespace tizen::network::wifi;
+
+Manager::Manager() {
+  wifi_manager_h hdl;
+
+  int err = wifi_manager_initialize(&hdl);
+  if (err != TIZEN_ERROR_NONE) {
+    throw WifiException(err);
+  }
+  handle = hdl;
+}
+
+Manager::~Manager() { wifi_manager_deinitialize(handle); }
+
+void Manager::connected_static_callback(wifi_manager_error_e err,
+                                        void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->connected_cb)
+    manager->connected_cb(err);
+}
+
+void Manager::disconnected_static_callback(wifi_manager_error_e err,
+                                           void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->disconnected_cb)
+    manager->disconnected_cb(err);
+}
+
+void Manager::activated_static_callback(wifi_manager_error_e err,
+                                        void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->activate_cb)
+    manager->activate_cb(err);
+}
+
+void Manager::deactivated_static_callback(wifi_manager_error_e err,
+                                          void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->deactivate_cb)
+    manager->deactivate_cb(err);
+}
+
+void Manager::forget_ap_static_callback(wifi_manager_error_e err,
+                                        void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->forget_ap_cb)
+    manager->forget_ap_cb(err);
+}
+
+void Manager::scan_static_callback(wifi_manager_error_e err, void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->scan_finished_cb)
+    manager->scan_finished_cb(err);
+}
+
+void Manager::scan_specific_static_callback(wifi_manager_error_e err,
+                                            void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->scan_specific_finished_cb)
+    manager->scan_specific_finished_cb(err);
+}
+
+void Manager::multi_scan_static_callback(wifi_manager_error_e err,
+                                         void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->multi_scan_finished_cb)
+    manager->multi_scan_finished_cb(err);
+}
+
+void Manager::bssid_scan_static_callback(wifi_manager_error_e err,
+                                         void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->bssid_scan_finished_cb)
+    manager->bssid_scan_finished_cb(err);
+}
+
+bool Manager::ap_iterator(wifi_manager_ap_h ap, void *user_data) {
+  auto *aps = static_cast<std::vector<Ap> *>(user_data);
+  wifi_manager_ap_h cloned;
+  int err = wifi_manager_ap_clone(&cloned, ap);
+  if (err == TIZEN_ERROR_NONE) {
+    aps->push_back(Ap{cloned});
+  }
+  return true;
+}
+
+void Manager::device_state_changed_static_callback(
+    wifi_manager_device_state_e state, void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->device_state_changed_cb)
+    manager->device_state_changed_cb(state);
+}
+
+void Manager::background_scan_finished_static_callback(wifi_manager_error_e err,
+                                                       void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->background_scan_finished_cb)
+    manager->background_scan_finished_cb(err);
+}
+
+void Manager::scan_state_changed_static_callback(
+    wifi_manager_scan_state_e state, void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->scan_state_changed_cb)
+    manager->scan_state_changed_cb(state);
+}
+
+void Manager::connection_state_changed_static_callback(
+    wifi_manager_connection_state_e state, wifi_manager_ap_h ap,
+    void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  Ap access_point(ap);
+  if (manager->connection_state_changed_cb)
+    manager->connection_state_changed_cb(state, access_point);
+}
+
+void Manager::rssi_level_changed_static_callback(
+    wifi_manager_rssi_level_e level, void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->rssi_level_changed_cb)
+    manager->rssi_level_changed_cb(level);
+}
+
+void Manager::module_state_changed_static_callback(
+    wifi_manager_module_state_e state, void *user_data) {
+  Manager *manager = static_cast<Manager *>(user_data);
+  if (manager->module_state_changed_cb)
+    manager->module_state_changed_cb(state);
+}
+
+void Manager::setActivatedCallback(ActivateCallback callback) {
+  activate_cb = callback;
+}
+
+void Manager::setDeactivatedCallback(DeactivateCallback callback) {
+  deactivate_cb = callback;
+}
+
+void Manager::setScanFinishedCallback(ScanFinishedCallback callback) {
+  scan_finished_cb = callback;
+}
+
+void Manager::setScanSpecificFinishedCallback(ScanFinishedCallback callback) {
+  scan_specific_finished_cb = callback;
+}
+
+void Manager::setMultiScanFinishedCallback(ScanFinishedCallback callback) {
+  multi_scan_finished_cb = callback;
+}
+
+void Manager::setConnectedCallback(ConnectedCallback callback) {
+  connected_cb = callback;
+}
+
+void Manager::setDisconnectedCallback(DisconnectedCallback callback) {
+  disconnected_cb = callback;
+}
+
+void Manager::setForgetApCallback(ForgetApCallback callback) {
+  forget_ap_cb = callback;
+}
+
+void Manager::setBssidScanFinishedCallback(ScanFinishedCallback callback) {
+  bssid_scan_finished_cb = callback;
+}
+
+Ap Manager::create_ap(const std::string &essid) {
+  wifi_manager_ap_h aphandle;
+  int err = wifi_manager_ap_create(handle, essid.c_str(), &aphandle);
+  if (err != TIZEN_ERROR_NONE) {
+    throw WifiException(err);
+  }
+
+  return Ap{aphandle};
+}
+
+Ap Manager::create_hidden_ap(const std::string &essid) {
+  wifi_manager_ap_h aphandle;
+  int err = wifi_manager_ap_hidden_create(handle, essid.c_str(), &aphandle);
+  if (err != TIZEN_ERROR_NONE) {
+    throw WifiException(err);
+  }
+  return Ap{aphandle};
+}
+
+IMPLEMENT_METHOD(void, Manager::activate(), ,
+                 wifi_manager_activate(handle, activated_static_callback,
+                                       this), )
+IMPLEMENT_METHOD(void, Manager::activateWithPickerTested(), ,
+                 wifi_manager_activate_with_wifi_picker_tested(
+                     handle, activated_static_callback, this), )
+IMPLEMENT_METHOD(void, Manager::deactivate(), ,
+                 wifi_manager_deactivate(handle, deactivated_static_callback,
+                                         this), )
+IMPLEMENT_METHOD(bool, Manager::activated(), bool activated,
+                 wifi_manager_is_activated(handle, &activated), activated)
+IMPLEMENT_METHOD(std::string, Manager::macAddress(), char *str,
+                 wifi_manager_get_mac_address(handle, &str),
+                 wrapMallocString(str))
+IMPLEMENT_METHOD(std::string, Manager::networkInterfaceName(), char *str,
+                 wifi_manager_get_network_interface_name(handle, &str),
+                 wrapMallocString(str))
+IMPLEMENT_METHOD(void, Manager::scan(), ,
+                 wifi_manager_scan(handle, scan_static_callback, this), )
+IMPLEMENT_METHOD(wifi_manager_scan_state_e, Manager::scanState(),
+                 wifi_manager_scan_state_e ret,
+                 wifi_manager_get_scan_state(handle, &ret), ret)
+IMPLEMENT_METHOD(void, Manager::scanSpecificAp(const std::string &essid), ,
+                 wifi_manager_scan_specific_ap(handle, essid.c_str(),
+                                               scan_specific_static_callback,
+                                               this), )
+IMPLEMENT_METHOD(SpecificScan, Manager::specificScanCreate(),
+                 wifi_manager_specific_scan_h sscan,
+                 wifi_manager_specific_scan_create(handle, &sscan),
+                 (SpecificScan{handle, sscan}))
+IMPLEMENT_METHOD(void, Manager::multiScan(SpecificScan &sscan), ,
+                 wifi_manager_specific_ap_start_multi_scan(
+                     handle, sscan.handle, multi_scan_static_callback, this), )
+IMPLEMENT_METHOD(void, Manager::bssidScan(), ,
+                 wifi_manager_bssid_scan(handle, bssid_scan_static_callback,
+                                         this), )
+IMPLEMENT_METHOD(void,
+                 Manager::connectHiddenAp(const std::string &essid,
+                                          wifi_manager_security_type_e sec_type,
+                                          const std::string &pass),
+                 , wifi_manager_connect_hidden_ap(handle, essid.c_str(),
+                                                  sec_type, pass.c_str(),
+                                                  connected_static_callback,
+                                                  this), )
+IMPLEMENT_METHOD(Ap, Manager::connectedAp(), wifi_manager_ap_h ap,
+                 wifi_manager_get_connected_ap(handle, &ap), Ap{ap})
+IMPLEMENT_METHOD(std::vector<Ap>, Manager::foundAps(), std::vector<Ap> aps,
+                 wifi_manager_foreach_found_ap(handle, ap_iterator, &aps), aps)
+IMPLEMENT_METHOD(
+    std::vector<Ap>, Manager::specificFoundAps(), std::vector<Ap> aps,
+    wifi_manager_foreach_found_specific_ap(handle, ap_iterator, &aps), aps)
+IMPLEMENT_METHOD(std::vector<Ap>, Manager::foundBssidAps(), std::vector<Ap> aps,
+                 wifi_manager_foreach_found_bssid_ap(handle, ap_iterator, &aps),
+                 aps)
+IMPLEMENT_METHOD(void, Manager::connect(Ap &ap), ,
+                 wifi_manager_connect(handle, ap.handle,
+                                      connected_static_callback, this), )
+IMPLEMENT_METHOD(void, Manager::disconnect(Ap &ap), ,
+                 wifi_manager_disconnect(handle, ap.handle,
+                                         disconnected_static_callback, this), )
+IMPLEMENT_METHOD(void, Manager::connectByWpsPbc(Ap &ap), ,
+                 wifi_manager_connect_by_wps_pbc(handle, ap.handle,
+                                                 connected_static_callback,
+                                                 this), )
+IMPLEMENT_METHOD(void, Manager::connectByWpsPin(Ap &ap, const std::string &pin),
+                 ,
+                 wifi_manager_connect_by_wps_pin(handle, ap.handle, pin.c_str(),
+                                                 connected_static_callback,
+                                                 this), )
+IMPLEMENT_METHOD(void, Manager::connectByWpsPbcWithoutSsid(), ,
+                 wifi_manager_connect_by_wps_pbc_without_ssid(
+                     handle, connected_static_callback, this), )
+IMPLEMENT_METHOD(void,
+                 Manager::connectByWpsPinWithoutSsid(const std::string &pin), ,
+                 wifi_manager_connect_by_wps_pin_without_ssid(
+                     handle, pin.c_str(), connected_static_callback, this), )
+IMPLEMENT_METHOD(void, Manager::cancelWps(), ,
+                 wifi_manager_cancel_wps(handle), )
+IMPLEMENT_METHOD(std::string, Manager::wpsGeneratedPin(), char *ret,
+                 wifi_manager_get_wps_generated_pin(handle, &ret),
+                 wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Manager::forgetAp(Ap &ap), ,
+                 wifi_manager_forget_ap(handle, ap.handle), )
+IMPLEMENT_METHOD(void, Manager::forgetApAsync(Ap &ap), ,
+                 wifi_manager_forget_ap_async(handle, ap.handle,
+                                              forget_ap_static_callback,
+                                              this), )
+IMPLEMENT_METHOD(void, Manager::addVsie(wifi_manager_vsie_frames_e id,
+                                        const std::string &payload),
+                 , wifi_manager_add_vsie(handle, id, payload.c_str()), )
+IMPLEMENT_METHOD(std::string, Manager::getVsie(wifi_manager_vsie_frames_e id),
+                 char *ret, wifi_manager_get_vsie(handle, id, &ret),
+                 wrapMallocString(ret))
+IMPLEMENT_METHOD(void, Manager::removeVsie(wifi_manager_vsie_frames_e id,
+                                           const std::string &payload),
+                 , wifi_manager_remove_vsie(handle, id, payload.c_str()), )
+
+// monitor
+IMPLEMENT_METHOD(wifi_manager_connection_state_e, Manager::connectionState(),
+                 wifi_manager_connection_state_e ret,
+                 wifi_manager_get_connection_state(handle, &ret), ret)
+
+#define IMPLEMENT_CALLBACK_SETTER(prototype, setter, unsetter, field)          \
+  ApiResult<void> prototype {                                                  \
+    int err;                                                                   \
+    if (callback) {                                                            \
+      err = setter;                                                            \
+    } else {                                                                   \
+      err = unsetter;                                                          \
+    }                                                                          \
+    if (err != TIZEN_ERROR_NONE) {                                             \
+      field = callback;                                                        \
+      return ApiResult<void>::Ok();                                            \
+    } else {                                                                   \
+      return ApiResult<void>::Error(err);                                      \
+    }                                                                          \
+  }
+
+IMPLEMENT_CALLBACK_SETTER(
+    Manager::setDeviceStateChangedCallback(DeviceStateChangedCallback callback),
+    wifi_manager_set_device_state_changed_cb(
+        handle, device_state_changed_static_callback, this),
+    wifi_manager_unset_device_state_changed_cb(handle), device_state_changed_cb)
+
+IMPLEMENT_CALLBACK_SETTER(
+    Manager::setBackgroundScanFinishedCallback(ScanFinishedCallback callback),
+    wifi_manager_set_background_scan_cb(
+        handle, background_scan_finished_static_callback, this),
+    wifi_manager_unset_background_scan_cb(handle), background_scan_finished_cb)
+
+IMPLEMENT_CALLBACK_SETTER(
+    Manager::setScanStateChangedCallback(ScanStateChangedCallback callback),
+    wifi_manager_set_scan_state_changed_cb(handle,
+                                           scan_state_changed_static_callback,
+                                           this),
+    wifi_manager_unset_scan_state_changed_cb(handle), scan_state_changed_cb)
+
+IMPLEMENT_CALLBACK_SETTER(
+    Manager::setConnectionStateChangedCallback(
+        ConnectionStateChangedCallback callback),
+    wifi_manager_set_connection_state_changed_cb(
+        handle, connection_state_changed_static_callback, this),
+    wifi_manager_unset_connection_state_changed_cb(handle),
+    connection_state_changed_cb)
+
+IMPLEMENT_CALLBACK_SETTER(
+    Manager::setRssiLevelChangedCallback(RssiLevelChangedCallback callback),
+    wifi_manager_set_rssi_level_changed_cb(handle,
+                                           rssi_level_changed_static_callback,
+                                           this),
+    wifi_manager_unset_rssi_level_changed_cb(handle), rssi_level_changed_cb)
+
+IMPLEMENT_CALLBACK_SETTER(
+    Manager::setModuleStateChangedCallback(ModuleStateChangedCallback callback),
+    wifi_manager_set_module_state_changed_cb(
+        handle, module_state_changed_static_callback, this),
+    wifi_manager_unset_module_state_changed_cb(handle), module_state_changed_cb)
+
+IMPLEMENT_METHOD(wifi_manager_module_state_e, Manager::moduleState(),
+                 wifi_manager_module_state_e ret,
+                 wifi_manager_get_module_state(handle, &ret), ret)
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Manager.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/wifi/Manager.hpp
new file mode 100644 (file)
index 0000000..b8255fe
--- /dev/null
@@ -0,0 +1,201 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZEN_NETWORK_WIFI_MANAGER_H
+#define TIZEN_NETWORK_WIFI_MANAGER_H
+
+#include <memory>
+#include <vector>
+
+#include <wifi-manager.h>
+
+#include "tizen/ApiResult.hpp"
+#include "tizen/network/wifi/Ap.hpp"
+#include "tizen/network/wifi/Exception.hpp"
+#include "tizen/network/wifi/SpecificScan.hpp"
+
+namespace tizen {
+namespace network {
+namespace wifi {
+
+class Ap;
+class SpecificScan;
+
+class Manager {
+public:
+  Manager();
+  ~Manager();
+  Manager(const Manager &) = delete;
+  Manager &operator=(const Manager &) = delete;
+  Manager(Manager &&) = delete;
+  Manager &operator=(Manager &&) = delete;
+
+  using ActivateCallback = std::function<void(wifi_manager_error_e)>;
+  using DeactivateCallback = std::function<void(wifi_manager_error_e)>;
+  using ScanFinishedCallback = std::function<void(wifi_manager_error_e)>;
+  using ConnectedCallback = std::function<void(wifi_manager_error_e)>;
+  using DisconnectedCallback = std::function<void(wifi_manager_error_e)>;
+  using ForgetApCallback = std::function<void(wifi_manager_error_e)>;
+
+  // management
+
+  ApiResult<void> activate();
+  ApiResult<void> activateWithPickerTested();
+  ApiResult<void> deactivate();
+  ApiResult<bool> activated();
+
+  ApiResult<std::string> macAddress();
+  ApiResult<std::string> networkInterfaceName();
+
+  // TODO write what callbacks will be triggered after each call
+  ApiResult<void> scan();
+  ApiResult<wifi_manager_scan_state_e> scanState();
+  ApiResult<void> scanSpecificAp(const std::string &essid);
+  ApiResult<SpecificScan> specificScanCreate();
+  ApiResult<void> multiScan(SpecificScan &scan);
+  ApiResult<void> bssidScan();
+
+  ApiResult<void> connectHiddenAp(const std::string &essid,
+                                  wifi_manager_security_type_e sec_type,
+                                  const std::string &pass);
+  ApiResult<Ap> connectedAp();
+
+  ApiResult<std::vector<Ap>> foundAps();
+  ApiResult<std::vector<Ap>> specificFoundAps();
+  ApiResult<std::vector<Ap>> foundBssidAps();
+
+  ApiResult<void> connect(Ap &ap);
+  ApiResult<void> disconnect(Ap &ap);
+  ApiResult<void> connectByWpsPbc(Ap &ap);
+  ApiResult<void> connectByWpsPin(Ap &ap, const std::string &pin);
+  ApiResult<void> connectByWpsPbcWithoutSsid();
+  ApiResult<void> connectByWpsPinWithoutSsid(const std::string &pin);
+  ApiResult<void> cancelWps();
+  ApiResult<std::string> wpsGeneratedPin();
+  ApiResult<void> forgetAp(Ap &ap);
+  ApiResult<void> forgetApAsync(Ap &ap);
+  ApiResult<void> addVsie(wifi_manager_vsie_frames_e id,
+                          const std::string &payload);
+  ApiResult<std::string> getVsie(wifi_manager_vsie_frames_e id);
+  ApiResult<void> removeVsie(wifi_manager_vsie_frames_e id,
+                             const std::string &payload);
+
+  void setActivatedCallback(ActivateCallback callback);
+  void setDeactivatedCallback(DeactivateCallback callback);
+  void setScanFinishedCallback(ScanFinishedCallback callback);
+  void setScanSpecificFinishedCallback(ScanFinishedCallback callback);
+  void setMultiScanFinishedCallback(ScanFinishedCallback callback);
+  void setConnectedCallback(ConnectedCallback callback);
+  void setDisconnectedCallback(DisconnectedCallback callback);
+  void setForgetApCallback(ForgetApCallback callback);
+  void setBssidScanFinishedCallback(ScanFinishedCallback callback);
+
+  Ap create_ap(const std::string &essid);
+  Ap create_hidden_ap(const std::string &essid);
+
+  // monitor
+
+  using DeviceStateChangedCallback =
+      std::function<void(wifi_manager_device_state_e)>;
+  using ScanStateChangedCallback =
+      std::function<void(wifi_manager_scan_state_e)>;
+  using ConnectionStateChangedCallback =
+      std::function<void(wifi_manager_connection_state_e, const Ap &)>;
+  using RssiLevelChangedCallback =
+      std::function<void(wifi_manager_rssi_level_e)>;
+  using ModuleStateChangedCallback =
+      std::function<void(wifi_manager_module_state_e)>;
+
+  ApiResult<wifi_manager_connection_state_e> connectionState();
+  ApiResult<void>
+  setDeviceStateChangedCallback(DeviceStateChangedCallback callback);
+  ApiResult<void>
+  setBackgroundScanFinishedCallback(ScanFinishedCallback callback);
+  ApiResult<void>
+  setScanStateChangedCallback(ScanStateChangedCallback callback);
+  ApiResult<void>
+  setConnectionStateChangedCallback(ConnectionStateChangedCallback callback);
+  ApiResult<void>
+  setRssiLevelChangedCallback(RssiLevelChangedCallback callback);
+  ApiResult<void>
+  setModuleStateChangedCallback(ModuleStateChangedCallback callback);
+  ApiResult<wifi_manager_module_state_e> moduleState();
+
+private:
+  ActivateCallback activate_cb;
+  DeactivateCallback deactivate_cb;
+
+  ScanFinishedCallback scan_finished_cb;
+  ScanFinishedCallback scan_specific_finished_cb;
+  ScanFinishedCallback multi_scan_finished_cb;
+  ScanFinishedCallback bssid_scan_finished_cb;
+
+  ConnectedCallback connected_cb;
+  DisconnectedCallback disconnected_cb;
+  ForgetApCallback forget_ap_cb;
+
+  DeviceStateChangedCallback device_state_changed_cb;
+  ScanFinishedCallback background_scan_finished_cb;
+  ScanStateChangedCallback scan_state_changed_cb;
+  ConnectionStateChangedCallback connection_state_changed_cb;
+  RssiLevelChangedCallback rssi_level_changed_cb;
+  ModuleStateChangedCallback module_state_changed_cb;
+
+  static void activated_static_callback(wifi_manager_error_e err,
+                                        void *user_data);
+  static void deactivated_static_callback(wifi_manager_error_e err,
+                                          void *user_data);
+  static void connected_static_callback(wifi_manager_error_e err,
+                                        void *user_data);
+  static void disconnected_static_callback(wifi_manager_error_e err,
+                                           void *user_data);
+  static void forget_ap_static_callback(wifi_manager_error_e err,
+                                        void *user_data);
+  static void scan_static_callback(wifi_manager_error_e err, void *user_data);
+  static void scan_specific_static_callback(wifi_manager_error_e err,
+                                            void *user_data);
+  static void multi_scan_static_callback(wifi_manager_error_e err,
+                                         void *user_data);
+  static void bssid_scan_static_callback(wifi_manager_error_e err,
+                                         void *user_data);
+  static bool ap_iterator(wifi_manager_ap_h ap, void *user_data);
+
+  static void
+  device_state_changed_static_callback(wifi_manager_device_state_e state,
+                                       void *user_data);
+  static void background_scan_finished_static_callback(wifi_manager_error_e err,
+                                                       void *user_data);
+  static void
+  scan_state_changed_static_callback(wifi_manager_scan_state_e state,
+                                     void *user_data);
+  static void connection_state_changed_static_callback(
+      wifi_manager_connection_state_e state, wifi_manager_ap_h ap,
+      void *user_data);
+  static void
+  rssi_level_changed_static_callback(wifi_manager_rssi_level_e level,
+                                     void *user_data);
+  static void
+  module_state_changed_static_callback(wifi_manager_module_state_e state,
+                                       void *user_data);
+
+  wifi_manager_h handle = nullptr;
+};
+
+} /* wifi */
+} /* network */
+} /* tizen */
+
+#endif /* TIZEN_NETWORK_WIFI_MANAGER_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/wifi/SpecificScan.cpp b/oobe-easy-setup/api-cpp/src/tizen/network/wifi/SpecificScan.cpp
new file mode 100644 (file)
index 0000000..814e73e
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/network/wifi/SpecificScan.hpp"
+#include "tizen/ApiUtils.hpp"
+
+using namespace tizen::network::wifi;
+using namespace tizen;
+
+SpecificScan::SpecificScan(wifi_manager_h m, wifi_manager_specific_scan_h h)
+    : handle(h), manager(m) {}
+
+SpecificScan::~SpecificScan() {
+  wifi_manager_specific_scan_destroy(manager, handle);
+}
+
+SpecificScan::SpecificScan(SpecificScan &&ss) {
+  std::swap(handle, ss.handle);
+  std::swap(manager, ss.manager);
+}
+
+SpecificScan &SpecificScan::operator=(SpecificScan &&ss) {
+  std::swap(handle, ss.handle);
+  std::swap(manager, ss.manager);
+  return *this;
+}
+
+IMPLEMENT_METHOD(void, SpecificScan::setSsid(const std::string &ssid), ,
+                 wifi_manager_specific_scan_set_ssid(handle, ssid.c_str()), )
+IMPLEMENT_METHOD(void, SpecificScan::setFreq(int freq), ,
+                 wifi_manager_specific_scan_set_freq(handle, freq), )
diff --git a/oobe-easy-setup/api-cpp/src/tizen/network/wifi/SpecificScan.hpp b/oobe-easy-setup/api-cpp/src/tizen/network/wifi/SpecificScan.hpp
new file mode 100644 (file)
index 0000000..e7aa5c9
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZEN_NETWORK_WIFI_SPECIFICSCAN_H
+#define TIZEN_NETWORK_WIFI_SPECIFICSCAN_H
+
+#include <tizen/ApiResult.hpp>
+#include <tizen/network/wifi/Manager.hpp>
+#include <wifi-manager.h>
+
+namespace tizen {
+namespace network {
+namespace wifi {
+
+class SpecificScan {
+public:
+  SpecificScan() = default;
+  ~SpecificScan();
+  SpecificScan(const SpecificScan &) = delete;
+  SpecificScan &operator=(const SpecificScan &) = delete;
+  SpecificScan(SpecificScan &&);
+  SpecificScan &operator=(SpecificScan &&);
+
+  ApiResult<void> setSsid(const std::string &str);
+  ApiResult<void> setFreq(int freq);
+
+private:
+  SpecificScan(wifi_manager_h, wifi_manager_specific_scan_h);
+
+  wifi_manager_specific_scan_h handle;
+  wifi_manager_h manager;
+  friend Manager;
+};
+
+} /* wifi */
+} /* network */
+} /* tizen */
+
+#endif /* TIZEN_NETWORK_WIFI_SPECIFICSCAN_H */
diff --git a/oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/GpioException.cpp b/oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/GpioException.cpp
new file mode 100644 (file)
index 0000000..48b71e0
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/peripheral/gpio/GpioException.hpp"
+
+namespace tizen {
+namespace peripheral {
+namespace gpio {
+
+    GpioException::GpioException(Error error, std::string message) : _error(error), _message(message)
+    {
+    }
+
+    GpioException::~GpioException()
+    {
+        
+    }
+
+    const char *GpioException::what() const noexcept
+    {
+        return (_message + ":" + _error.message()).c_str();
+    }
+
+    Error GpioException::error() const
+    {
+        return _error;
+    }
+} // gpio
+} // peripheral
+} // tizen
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/GpioException.hpp b/oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/GpioException.hpp
new file mode 100644 (file)
index 0000000..8ea4aa0
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 GPIO_EXCEPTION_H
+#define GPIO_EXCEPTION_H
+
+#include "tizen/Error.hpp"
+#include <exception>
+#include <string>
+
+namespace tizen {
+namespace peripheral {
+namespace gpio {
+
+    class GpioException : public std::exception
+    {
+    public:
+        GpioException(Error error, std::string message = "");
+        ~GpioException();
+
+        virtual const char *what() const noexcept override;
+        Error error() const;
+    private:
+        Error _error;
+        std::string _message;
+    };
+} // gpio
+} // peripheral
+} // tizen
+
+
+#endif //GPIO_EXCEPTION_H
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/Pin.cpp b/oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/Pin.cpp
new file mode 100644 (file)
index 0000000..ad5b247
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/peripheral/gpio/Pin.hpp"
+#include "tizen/peripheral/gpio/GpioException.hpp"
+#include "tizen/Logger.hpp"
+
+namespace tizen {
+namespace peripheral {
+namespace gpio {
+
+Pin::Pin(unsigned int pinNumber, peripheral_gpio_direction_e direction) : _pinNnumber(pinNumber)
+{
+    int err = peripheral_gpio_open(static_cast<int>(pinNumber), &_handle);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        logger::Err("Failed to open pin %u (%d)", pinNumber, err);
+        throw GpioException(err, "Failed to open pin " + std::to_string(pinNumber));
+    }
+    err = peripheral_gpio_set_direction(_handle, direction);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        logger::Err("Failed to set direction %d for pin %u (%d)", direction, pinNumber, err);
+        throw GpioException(err, "Failed to set direction " + std::to_string(direction) + " for pin " + std::to_string(pinNumber));
+    }
+}
+
+Pin::~Pin()
+{
+    if(_handle == nullptr)
+        return;
+
+    int err = peripheral_gpio_close(_handle);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        logger::Err("Failed to close pin %u (%d)", _pinNnumber, err);
+    }
+}
+
+Pin::Pin(Pin &&pin)
+{
+    this->_pinNnumber = std::move(pin._pinNnumber);
+    this->_interruptedCb = std::move(pin._interruptedCb);
+    this->_handle = std::move(pin._handle);
+    pin._handle = nullptr;
+}
+
+Pin& Pin::operator=(Pin &&pin)
+{
+    this->_pinNnumber = std::move(pin._pinNnumber);
+    this->_interruptedCb = std::move(pin._interruptedCb);
+    this->_handle = std::move(pin._handle);
+    pin._handle = nullptr;
+    return *this;
+}
+
+ApiResult<void> Pin::setDirection(peripheral_gpio_direction_e direction)
+{
+    int err = peripheral_gpio_set_direction(_handle, direction);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<unsigned int> Pin::read()
+{
+    unsigned int value;
+    int err = peripheral_gpio_read(_handle, &value);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<unsigned int>::Error(err);
+    }
+    return ApiResult<unsigned int>::Ok(value);
+}
+
+ApiResult<void> Pin::write(unsigned int value)
+{
+    int err = peripheral_gpio_write(_handle, value);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> Pin::setEdgeMode(peripheral_gpio_edge_e edge)
+{
+    int err = peripheral_gpio_set_edge_mode(_handle, edge);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> Pin::setInterruptedCb(std::function<void(peripheral_error_e)> interruptedCb)
+{
+    auto static_cb = [](peripheral_gpio_h, peripheral_error_e error, void *user_data)
+    {
+        Pin *self = static_cast<Pin*>(user_data);
+        if(self->_interruptedCb)
+            self->_interruptedCb(error);
+    };
+    int err = peripheral_gpio_set_interrupted_cb(_handle, static_cb, this);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    _interruptedCb = interruptedCb;
+    return ApiResult<void>::Ok();
+}
+
+unsigned int Pin::getPinNumber()
+{
+    return _pinNnumber;
+}
+
+} // gpio
+} // peripheral
+} // tizen
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/Pin.hpp b/oobe-easy-setup/api-cpp/src/tizen/peripheral/gpio/Pin.hpp
new file mode 100644 (file)
index 0000000..d5cb940
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 PIN_H
+#define PIN_H
+
+#include "tizen/ApiResult.hpp"
+#include <peripheral_io.h>
+#include <functional>
+
+namespace tizen {
+namespace peripheral {
+namespace gpio {
+
+class Pin
+{
+public:
+    Pin(unsigned int pinNumber, peripheral_gpio_direction_e direction);
+    ~Pin();
+
+    Pin(const Pin&) = delete;
+    Pin& operator=(const Pin&) = delete;
+
+    Pin(Pin &&pin);
+    Pin& operator=(Pin &&pin);
+
+    ApiResult<void> setDirection(peripheral_gpio_direction_e direction);
+    ApiResult<unsigned int> read();
+    ApiResult<void> write(unsigned int value);
+    ApiResult<void> setEdgeMode(peripheral_gpio_edge_e edge);
+    ApiResult<void> setInterruptedCb(std::function<void(peripheral_error_e)> interruptedCb);
+    unsigned int getPinNumber();
+private:
+    peripheral_gpio_h _handle;
+    std::function<void(peripheral_error_e)> _interruptedCb;
+    unsigned int _pinNnumber;
+};
+
+} // gpio
+} // peripheral
+} // tizen
+
+#endif // PIN_H
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/Spi.cpp b/oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/Spi.cpp
new file mode 100644 (file)
index 0000000..c5b727c
--- /dev/null
@@ -0,0 +1,141 @@
+    /*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/peripheral/spi/Spi.hpp"
+#include "tizen/peripheral/spi/SpiException.hpp"
+#include "tizen/Logger.hpp"
+
+namespace tizen {
+namespace peripheral {
+namespace spi {
+    
+Spi::Spi(int bus, int chip_select) : _bus(bus), _chip(chip_select)
+{
+    int err = peripheral_spi_open(bus, chip_select, &_handle);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        logger::Err("Failed to open SPI on bus %d and chip %d (%d)", bus, chip_select, err);
+        throw SpiException(err, "Failed to open SPI");
+    }
+}
+
+Spi::~Spi()
+{
+    int err = peripheral_spi_close(_handle);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        logger::Err("Failed to close SPI on bus %d and chip %d (%d)", _bus, _chip, err);
+    }
+}
+
+Spi::Spi(Spi &&spi)
+{
+    _handle = spi._handle;
+    _bus = spi._bus;
+    _chip = spi._chip;
+}
+
+Spi &Spi::operator=(Spi &&spi)
+{
+    _handle = spi._handle;
+    _bus = spi._bus;
+    _chip = spi._chip;
+    return *this;
+}
+
+ApiResult<void> Spi::read(char* buffer, size_t length)
+{
+    int err = peripheral_spi_read(_handle, reinterpret_cast<uint8_t *>(buffer), length);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> Spi::write(const char* buffer, size_t length)
+{
+    int err = peripheral_spi_write(_handle, reinterpret_cast<uint8_t *>(const_cast<char *>(buffer)), length);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+    
+ApiResult<void> Spi::transfer(const char *transmitBuffer, char *receiveBuffer, size_t length)
+{
+    int err = peripheral_spi_transfer(_handle, reinterpret_cast<uint8_t *>(const_cast<char *>(transmitBuffer)), reinterpret_cast<uint8_t *>(receiveBuffer), length);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> Spi::setBitsPerWord(uint8_t bitsPerWord)
+{
+    int err = peripheral_spi_set_bits_per_word(_handle, bitsPerWord);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> Spi::setFrequency(uint32_t frequency)
+{
+    int err = peripheral_spi_set_frequency(_handle, frequency);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> Spi::setMode(peripheral_spi_mode_e mode)
+{
+    int err = peripheral_spi_set_mode(_handle, mode);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+ApiResult<void> Spi::setBitOrder(peripheral_spi_bit_order_e bitOrder)
+{
+    int err = peripheral_spi_set_bit_order(_handle, bitOrder);
+    if(err != PERIPHERAL_ERROR_NONE)
+    {
+        return ApiResult<void>::Error(err);
+    }
+    return ApiResult<void>::Ok();
+}
+
+int Spi::getBus() const
+{
+    return _bus;
+}
+
+int Spi::getSelectedChip() const
+{
+    return _chip;
+}
+
+} // spi
+} // peripheral
+} // tizen
diff --git a/oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/Spi.hpp b/oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/Spi.hpp
new file mode 100644 (file)
index 0000000..bfbd82d
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SPI_H
+#define SPI_H
+
+#include "tizen/ApiResult.hpp"
+#include <peripheral_io.h>
+
+namespace tizen {
+namespace peripheral {
+namespace spi {
+
+class Spi
+{
+public:
+    Spi(int bus, int chip_select);
+    virtual ~Spi();
+
+    Spi(const Spi &) = delete;
+    Spi &operator=(const Spi &) = delete;
+
+    Spi(Spi &&spi);
+    Spi &operator=(Spi &&spi);
+
+    ApiResult<void> read(char* buffer, size_t length);
+    ApiResult<void> write(const char* buffer, size_t length);
+    ApiResult<void> transfer(const char *transmitBuffer, char *receiveBuffer, size_t length);
+    ApiResult<void> setBitsPerWord(uint8_t bitsPerWord);
+    ApiResult<void> setFrequency(uint32_t frequency);
+    ApiResult<void> setMode(peripheral_spi_mode_e mode);
+    ApiResult<void> setBitOrder(peripheral_spi_bit_order_e bitOrder);
+    int getBus() const;
+    int getSelectedChip() const;
+private:
+    peripheral_spi_h _handle;
+    int _bus;
+    int _chip;
+};
+
+} // spi
+} // peripheral
+} // tizen
+
+#endif //SPI_H
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/SpiException.cpp b/oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/SpiException.cpp
new file mode 100644 (file)
index 0000000..d66eadd
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/peripheral/spi/SpiException.hpp"
+
+namespace tizen {
+namespace peripheral {
+namespace spi {
+
+    SpiException::SpiException(Error error, std::string message) : _error(error), _message(message)
+    {
+        
+    }
+
+    SpiException::~SpiException()
+    {
+        
+    }
+
+    const char *SpiException::what() const noexcept
+    {
+        return (_message + ":" + _error.message()).c_str();
+    }
+
+    Error SpiException::error() const
+    {
+        return _error;
+    }
+} // spi
+} // peripheral
+} // tizen
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/SpiException.hpp b/oobe-easy-setup/api-cpp/src/tizen/peripheral/spi/SpiException.hpp
new file mode 100644 (file)
index 0000000..516c16f
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SPI_EXCEPTION_H
+#define SPI_EXCEPTION_H
+
+#include "tizen/Error.hpp"
+#include <exception>
+#include <string>
+
+namespace tizen {
+namespace peripheral {
+namespace spi {
+
+    class SpiException : public std::exception
+    {
+    public:
+        SpiException(Error error, std::string message = "");
+        ~SpiException();
+
+        virtual const char *what() const noexcept override;
+        Error error() const;
+    private:
+        Error _error;
+        std::string _message;
+    };
+} // spi
+} // peripheral
+} // tizen
+
+
+#endif //SPI_EXCEPTION_H
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/timer/Timer.cpp b/oobe-easy-setup/api-cpp/src/tizen/timer/Timer.cpp
new file mode 100644 (file)
index 0000000..2567676
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/timer/Timer.hpp"
+#include "tizen/timer/TimerException.hpp"
+#include "tizen/Logger.hpp"
+
+namespace tizen {
+namespace timer {
+
+Timer::Timer(double interval, std::function<bool()> cb) : _cb(cb)
+{
+    auto static_cb = [](void *data)
+    {
+        Timer *self = static_cast<Timer*>(data);
+        bool res = false;
+        if(self->_cb)
+            res = self->_cb();
+        if(res == false)
+        {
+            self->_isActive = false;
+            return ECORE_CALLBACK_CANCEL;
+        }
+        else
+        {
+            return ECORE_CALLBACK_RENEW;
+        }
+        
+    };
+    _timer = ecore_timer_add(interval, static_cb, this);
+    if(_timer == nullptr)
+    {
+        logger::Err("Failed to create timer");
+        throw TimerException("ecore_timer_add failed");
+    }
+    _isActive = true;
+}
+
+Timer::~Timer()
+{
+    if(_timer != nullptr && _isActive)
+    {
+        if(!ecore_timer_del(_timer))
+        {
+            logger::Err("ecore_timer_del failed");
+        }
+    }
+}
+
+Timer::Timer(Timer &&timer)
+{
+    this->_cb = std::move(timer._cb);
+    this->_isActive = std::move(timer._isActive);
+    this->_timer = std::move(timer._timer);
+    timer._timer = nullptr;
+}
+
+Timer& Timer::operator=(Timer &&timer)
+{
+    this->_cb = std::move(timer._cb);
+    this->_isActive = std::move(timer._isActive);
+    this->_timer = std::move(timer._timer);
+    timer._timer = nullptr;
+    return *this;
+}
+
+void Timer::cancel()
+{
+    if(_isActive)
+    {
+        if(ecore_timer_del(_timer))
+        {
+            logger::Err("ecore_timer_del failed");
+        };
+        _isActive = false;
+    }
+}
+
+} // timer
+} // tizen
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/timer/Timer.hpp b/oobe-easy-setup/api-cpp/src/tizen/timer/Timer.hpp
new file mode 100644 (file)
index 0000000..e21a4d4
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIMER_H
+#define TIMER_H
+
+#include <Ecore.h>
+#include <functional>
+#include <vector>
+#include <memory>
+
+namespace tizen {
+namespace timer {
+
+class Timer
+{
+public:
+    Timer(double interval, std::function<bool()> cb);
+    ~Timer();
+
+    Timer(const Timer&) = delete;
+    Timer& operator=(const Timer&) = delete;
+
+    Timer(Timer &&timer);
+    Timer& operator=(Timer &&timer);
+    
+    void cancel();
+private:
+    std::function<bool()> _cb;
+    bool _isActive;
+    Ecore_Timer *_timer;
+};
+
+} // timer
+} // tizen
+
+#endif //TIMER_H
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/timer/TimerException.cpp b/oobe-easy-setup/api-cpp/src/tizen/timer/TimerException.cpp
new file mode 100644 (file)
index 0000000..243dd56
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "tizen/timer/TimerException.hpp"
+
+namespace tizen {
+namespace timer {
+
+    TimerException::TimerException( std::string message) : _message(message)
+    {
+    }
+
+    TimerException::~TimerException()
+    {
+        
+    }
+
+    const char *TimerException::what() const noexcept
+    {
+        return _message.c_str();
+    }
+} // timer
+} // tizen
\ No newline at end of file
diff --git a/oobe-easy-setup/api-cpp/src/tizen/timer/TimerException.hpp b/oobe-easy-setup/api-cpp/src/tizen/timer/TimerException.hpp
new file mode 100644 (file)
index 0000000..558a241
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIMER_EXCEPTION_H
+#define TIMER_EXCEPTION_H
+
+#include <exception>
+#include <string>
+
+namespace tizen {
+namespace timer {
+    class TimerException : public std::exception
+    {
+    public:
+        TimerException(std::string message = "");
+        ~TimerException();
+
+        virtual const char *what() const noexcept override;
+    private:
+        std::string _message;
+    };
+} // timer
+} // tizen
+
+
+#endif //TIMER_EXCEPTION_H
\ No newline at end of file
diff --git a/oobe-easy-setup/edje/fonts/SamsungOneUI-300_v1.0.ttf b/oobe-easy-setup/edje/fonts/SamsungOneUI-300_v1.0.ttf
new file mode 100644 (file)
index 0000000..a60f133
Binary files /dev/null and b/oobe-easy-setup/edje/fonts/SamsungOneUI-300_v1.0.ttf differ
diff --git a/oobe-easy-setup/edje/fonts/SamsungOneUI-400C_v1.0.ttf b/oobe-easy-setup/edje/fonts/SamsungOneUI-400C_v1.0.ttf
new file mode 100644 (file)
index 0000000..324f2c9
Binary files /dev/null and b/oobe-easy-setup/edje/fonts/SamsungOneUI-400C_v1.0.ttf differ
diff --git a/oobe-easy-setup/edje/fonts/SamsungOneUI-400_v3.0.ttf b/oobe-easy-setup/edje/fonts/SamsungOneUI-400_v3.0.ttf
new file mode 100644 (file)
index 0000000..b662d56
Binary files /dev/null and b/oobe-easy-setup/edje/fonts/SamsungOneUI-400_v3.0.ttf differ
diff --git a/oobe-easy-setup/edje/fonts/SamsungOneUI-600_v3.0.ttf b/oobe-easy-setup/edje/fonts/SamsungOneUI-600_v3.0.ttf
new file mode 100644 (file)
index 0000000..67d2bb5
Binary files /dev/null and b/oobe-easy-setup/edje/fonts/SamsungOneUI-600_v3.0.ttf differ
diff --git a/oobe-easy-setup/edje/fonts/SamsungOneUI-800_v1.0.ttf b/oobe-easy-setup/edje/fonts/SamsungOneUI-800_v1.0.ttf
new file mode 100644 (file)
index 0000000..ba0a0af
Binary files /dev/null and b/oobe-easy-setup/edje/fonts/SamsungOneUI-800_v1.0.ttf differ
diff --git a/oobe-easy-setup/edje/images/bg.png b/oobe-easy-setup/edje/images/bg.png
new file mode 100644 (file)
index 0000000..12b6a0f
Binary files /dev/null and b/oobe-easy-setup/edje/images/bg.png differ
diff --git a/oobe-easy-setup/edje/images/es/bubble_triangle.png b/oobe-easy-setup/edje/images/es/bubble_triangle.png
new file mode 100644 (file)
index 0000000..db3d9c0
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/bubble_triangle.png differ
diff --git a/oobe-easy-setup/edje/images/es/door.png b/oobe-easy-setup/edje/images/es/door.png
new file mode 100644 (file)
index 0000000..08a07f7
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/door.png differ
diff --git a/oobe-easy-setup/edje/images/es/gears.png b/oobe-easy-setup/edje/images/es/gears.png
new file mode 100644 (file)
index 0000000..6d1c9f4
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/gears.png differ
diff --git a/oobe-easy-setup/edje/images/es/icon_phone.png b/oobe-easy-setup/edje/images/es/icon_phone.png
new file mode 100644 (file)
index 0000000..4866fde
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/icon_phone.png differ
diff --git a/oobe-easy-setup/edje/images/es/phone_image_left.png b/oobe-easy-setup/edje/images/es/phone_image_left.png
new file mode 100644 (file)
index 0000000..3081408
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/phone_image_left.png differ
diff --git a/oobe-easy-setup/edje/images/es/phone_image_right.png b/oobe-easy-setup/edje/images/es/phone_image_right.png
new file mode 100644 (file)
index 0000000..59dc105
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/phone_image_right.png differ
diff --git a/oobe-easy-setup/edje/images/es/puls_circle.png b/oobe-easy-setup/edje/images/es/puls_circle.png
new file mode 100644 (file)
index 0000000..441ab81
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/puls_circle.png differ
diff --git a/oobe-easy-setup/edje/images/es/rect100x100.png b/oobe-easy-setup/edje/images/es/rect100x100.png
new file mode 100644 (file)
index 0000000..2ad7c34
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/rect100x100.png differ
diff --git a/oobe-easy-setup/edje/images/es/smartthings_logo.png b/oobe-easy-setup/edje/images/es/smartthings_logo.png
new file mode 100644 (file)
index 0000000..d15168a
Binary files /dev/null and b/oobe-easy-setup/edje/images/es/smartthings_logo.png differ
diff --git a/oobe-easy-setup/edje/images/oobe_button/arrow_left.png b/oobe-easy-setup/edje/images/oobe_button/arrow_left.png
new file mode 100644 (file)
index 0000000..351f022
Binary files /dev/null and b/oobe-easy-setup/edje/images/oobe_button/arrow_left.png differ
diff --git a/oobe-easy-setup/edje/images/oobe_button/arrow_right.png b/oobe-easy-setup/edje/images/oobe_button/arrow_right.png
new file mode 100644 (file)
index 0000000..04e60a3
Binary files /dev/null and b/oobe-easy-setup/edje/images/oobe_button/arrow_right.png differ
diff --git a/oobe-easy-setup/edje/images/oobe_button/button_circle_32.png b/oobe-easy-setup/edje/images/oobe_button/button_circle_32.png
new file mode 100644 (file)
index 0000000..aa770f1
Binary files /dev/null and b/oobe-easy-setup/edje/images/oobe_button/button_circle_32.png differ
diff --git a/oobe-easy-setup/edje/images/oobe_button/button_circle_60.png b/oobe-easy-setup/edje/images/oobe_button/button_circle_60.png
new file mode 100644 (file)
index 0000000..0dfbbcd
Binary files /dev/null and b/oobe-easy-setup/edje/images/oobe_button/button_circle_60.png differ
diff --git a/oobe-easy-setup/edje/images/oobe_button/button_shadow_77.png b/oobe-easy-setup/edje/images/oobe_button/button_shadow_77.png
new file mode 100644 (file)
index 0000000..b2367a3
Binary files /dev/null and b/oobe-easy-setup/edje/images/oobe_button/button_shadow_77.png differ
diff --git a/oobe-easy-setup/inc/AppUtils.hpp b/oobe-easy-setup/inc/AppUtils.hpp
new file mode 100644 (file)
index 0000000..d0b3d8d
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 UTILITY_H
+#define UTILITY_H
+
+#include "tizen/application/AppControl.hpp"
+#include <Elementary.h>
+#include <app.h>
+#include <string>
+#include <memory>
+
+class AppUtils
+{
+public:
+    static std::string getResource(std::string path);
+    static Evas_Object *getConformant();
+    static Evas_Object *getWindow();
+    static tizen::application::AppControl &getAppControl();
+    static void saveConformant(Evas_Object *conformant);
+    static void saveWindow(Evas_Object *window);
+    static void saveAppControl(tizen::application::AppControl &appControl);
+    static void setTranslatableText(Evas_Object *object, const std::string &key);
+    static void setTranslatableText(Evas_Object *object, const std::string &part, const std::string &key);
+    static std::string getTranslatedText(const std::string &key);
+private:
+    static Evas_Object *_conformant;
+    static Evas_Object *_window;
+    static std::unique_ptr<tizen::application::AppControl> _appControl;
+};
+
+#endif //UTILITY_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/EasySetup.hpp b/oobe-easy-setup/inc/EasySetup.hpp
new file mode 100644 (file)
index 0000000..7a086e7
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 EASY_SETUP_HELPER_H
+#define EASY_SETUP_HELPER_H
+
+#include "smartthings.h"
+#include "EasySetupEvent.hpp"
+#include "common/Observable.hpp"
+#include "ses/smartthings/thing/ApInfo.hpp"
+#include "ses/smartthings/thing/Master.hpp"
+#include <memory>
+#include <functional>
+#include <string>
+
+
+class EasySetup : public Observable<EasySetupEvent>
+{
+public:
+    EasySetup();
+    ~EasySetup();
+    EasySetup(const EasySetup &) = delete;
+    EasySetup& operator=(const EasySetup &) = delete;
+    EasySetup(EasySetup &&) = default;
+    EasySetup& operator=(EasySetup &&) = default;
+
+    void startST();
+    void resetST();
+    void stopST();
+private:
+    std::unique_ptr<ses::smartthings::thing::Master> _st_master;  
+    static const std::string MY_PROV_VENDOR_INFO; 
+    static const std::string DEVICE_NAME;
+    static const std::string CERT_FILE;
+    static const std::string KEY_FILE;
+    void _startSTEasySetup(std::function<void(smartthings_status_e)> status_cb, std::function<void(const std::string &)> pin_cb);
+    void _easySetupConnectionStateCallback(smartthings_status_e status);
+    void _easySetupPinCallback(const std::string &pin);
+};
+
+#endif //EASY_SETUP_HELPER_H
diff --git a/oobe-easy-setup/inc/EasySetupEvent.hpp b/oobe-easy-setup/inc/EasySetupEvent.hpp
new file mode 100644 (file)
index 0000000..16897a4
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 EASY_SETUP_EVENT_H
+#define EASY_SETUP_EVENT_H
+
+#include <functional>
+#include "ses/smartthings/thing/ApInfo.hpp"
+#include "smartthings.h"
+
+enum EasySetupEventType
+{
+       NOT_READY = SMARTTHINGS_STATUS_NOT_READY,
+    INIT = SMARTTHINGS_STATUS_INIT,
+    ES_STARTED = SMARTTHINGS_STATUS_ES_STARTED,
+    ES_DONE = SMARTTHINGS_STATUS_ES_DONE,
+    ES_FAILED_OWNERSHIP_TRANSFER = SMARTTHINGS_STATUS_ES_FAILED_ON_OWNERSHIP_TRANSFER,
+    CONNECTING_TO_AP = SMARTTHINGS_STATUS_CONNECTING_TO_AP,
+    CONNECTED_TO_AP = SMARTTHINGS_STATUS_CONNECTED_TO_AP,
+    CONNECTING_TO_AP_FAILED = SMARTTHINGS_STATUS_CONNECTING_TO_AP_FAILED,
+    REGISTERING_TO_CLOUD = SMARTTHINGS_STATUS_REGISTERING_TO_CLOUD,
+    REGISTERED_TO_CLOUD = SMARTTHINGS_STATUS_REGISTERED_TO_CLOUD,
+    REGISTERING_FAILED_ON_SIGN_IN = SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_SIGN_IN,
+    REGISTERING_FAILED_ON_PUB_RES = SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_PUB_RES,
+    PIN_AQUIRED,
+    WIFI_PROVISIONING,
+    MEDIUM_REQUEST,
+    CLOUD_TIMEOUT,
+    SET_DEVICE_PROPERTY_ERROR,
+    SET_RESET_CONFIRM_CB_ERROR,
+    SET_RESET_RESULT_CB_ERROR,
+    SET_PIN_CB_ERROR,
+    SET_USER_CONFIRM_CB_ERROR,
+    SET_WIFI_AP_PROVISIONING_CB_ERROR,
+    SET_STATUS_CB_ERROR,
+    SET_CERTIFICATE_ERROR,
+    START_ERROR,
+    START_ES_ERROR
+};
+
+struct EasySetupEvent
+{
+public:
+    EasySetupEvent(EasySetupEventType type) : type(type)
+    {
+
+    }
+    EasySetupEventType type;    
+};
+
+struct EasySetupEventPinAquired : EasySetupEvent
+{
+public:
+    EasySetupEventPinAquired(const std::string &pin) : EasySetupEvent(EasySetupEventType::PIN_AQUIRED), pin(pin)
+    {
+    }
+    std::string pin;
+};
+
+struct EasySetupEventWifiProvisioning : EasySetupEvent
+{
+public:
+    EasySetupEventWifiProvisioning(ses::smartthings::thing::ApInfo &apInfo) : EasySetupEvent(EasySetupEventType::WIFI_PROVISIONING), apInfo(apInfo)
+    {
+
+    }
+    std::reference_wrapper<ses::smartthings::thing::ApInfo> apInfo;
+};
+
+#endif //EASY_SETUP_EVENT_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/EasySetupEventAdapter.hpp b/oobe-easy-setup/inc/EasySetupEventAdapter.hpp
new file mode 100644 (file)
index 0000000..692cca2
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 EASY_SETUP_EVENT_ADAPTER_H
+#define EASY_SETUP_EVENT_ADAPTER_H
+
+#include "StateManager.hpp"
+#include "common/Observer.hpp"
+#include "EasySetupEvent.hpp"
+#include "tizen/timer/Timer.hpp"
+#include <functional>
+
+class StateManager;
+
+class EasySetupEventAdapter : public Observer<EasySetupEvent>
+{
+public:
+    EasySetupEventAdapter(std::shared_ptr<StateManager> stateManager);
+    ~EasySetupEventAdapter() = default;
+    EasySetupEventAdapter(const EasySetupEventAdapter&) = delete;
+    EasySetupEventAdapter& operator=(const EasySetupEventAdapter&) = delete;
+    EasySetupEventAdapter(EasySetupEventAdapter &&) = default;
+    EasySetupEventAdapter& operator=(EasySetupEventAdapter &&) = default;
+    virtual void update(const EasySetupEvent &event) override;
+private:
+    std::shared_ptr<StateManager> _stateManager;
+    std::unique_ptr<tizen::timer::Timer> _timerConnected, _timerInit;
+    static const double _timeoutInterval;
+};
+
+#endif //EASY_SETUP_EVENT_ADAPTER_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/ErrorType.hpp b/oobe-easy-setup/inc/ErrorType.hpp
new file mode 100644 (file)
index 0000000..9d10153
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 ERROR_TYPE_H
+#define ERROR_TYPE_H
+
+enum class ErrorType { 
+    RESETABLE,
+    UNRECOVERABLE
+};
+
+#endif //ERROR_TYPE_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/OobeEasySetupApp.hpp b/oobe-easy-setup/inc/OobeEasySetupApp.hpp
new file mode 100644 (file)
index 0000000..7caf998
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 OOBE_EASY_SETUP_APP_H
+#define OOBE_EASY_SETUP_APP_H
+
+#include "tizen/application/UiApp.hpp"
+#include "ViewManager.hpp"
+#include "EasySetup.hpp"
+#include "StateManager.hpp"
+#include <memory>
+
+class OobeEasySetupApp : public tizen::application::UiApp
+{
+public:
+    OobeEasySetupApp() = default;
+
+    OobeEasySetupApp(const OobeEasySetupApp &) = delete;
+    OobeEasySetupApp& operator=(const OobeEasySetupApp &) = delete;
+
+    OobeEasySetupApp(OobeEasySetupApp &&) = delete;
+    OobeEasySetupApp& operator=(OobeEasySetupApp &&) = delete;
+
+    virtual ~OobeEasySetupApp();
+protected:
+    virtual bool OnCreate() override;
+    virtual void OnService(tizen::application::AppControl & app) override;
+    virtual void OnLanguageChanged(app_event_info_h event) override;
+
+private:
+    void _createSkeleton();
+    static void _win_delete_request_cb(void *data, Evas_Object *obj, void *event_info);
+
+    Evas_Object *_win;
+    Evas_Object *_conform;
+    std::shared_ptr<StateManager> _stateManager;
+
+    std::shared_ptr<ViewManager> _viewManager;
+    std::shared_ptr<EasySetup> _easySetup;
+
+    std::shared_ptr<Observer<EasySetupEvent>> _easySetupEventAdapter;
+    std::shared_ptr<Observer<ViewEvent>> _viewEventAdapter;
+
+    static const std::string DEMANDED_CALLER;
+    static const std::string DEMANDED_CALLER_KEY;
+    static const std::string DEMANDED_CALLER_VALUE;
+};
+
+#endif //OOBE_EASY_SETUP_APP_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/OobeEasySetupMain.hpp b/oobe-easy-setup/inc/OobeEasySetupMain.hpp
new file mode 100644 (file)
index 0000000..e246e2f
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 OOBE_EASY_SETUP_H
+#define OOBE_EASY_SETUP_H
+
+#include <app.h>
+#include <Elementary.h>
+#include <system_settings.h>
+#include <efl_extension.h>
+#include <dlog.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "oobe-easy-setup"
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.tizen.oobe-easy-setup"
+#endif
+
+#endif // OOBE_EASY_SETUP_H
diff --git a/oobe-easy-setup/inc/StateManager.hpp b/oobe-easy-setup/inc/StateManager.hpp
new file mode 100644 (file)
index 0000000..8552d79
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 STATE_MANAGER_H
+#define STATE_MANAGER_H
+
+//#define TEST_UI_STATE_MANAGER
+
+#include "ViewManager.hpp"
+#include "connectivity/TizenHomeAP.hpp"
+#include "connectivity/TizenSoftAP.hpp"
+#include "EasySetup.hpp"
+#include <string>
+
+class StateManager
+{
+public:
+    StateManager(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<TizenHomeAP> homeAp,
+        std::shared_ptr<TizenSoftAP> medium, std::shared_ptr<EasySetup> easySetup);
+    ~StateManager() = default;
+    StateManager(const StateManager&) = delete;
+    StateManager& operator=(const StateManager&) = delete;
+    StateManager(StateManager &&) = default;
+    StateManager& operator=(StateManager &&) = default;
+    void startPreparation();
+    void startAdvertisement();
+    void processAdvertisement();
+    void setupPin(std::string pin);
+    void confirmPin();
+    void logOnSamsungAccount();
+    void finishSetup();
+    void skipRequest();
+    void cancelSkipRequest();
+    void closeApp();
+    void connectToNetwork(std::string ssid, std::string password);
+    void enableMedium();
+    void disableMedium();
+    void reset();
+    void error();
+    void timeout();
+    void saveWifiConnection();
+    void unrecoverableError();
+private:
+    std::shared_ptr<ViewManager> _viewManager;
+    std::shared_ptr<TizenHomeAP> _homeAp;
+    std::shared_ptr<TizenSoftAP> _medium;
+    std::shared_ptr<EasySetup> _easySetup;
+
+    bool _easySetupFinished;
+    bool _connectedToAp;
+    bool _loggedToSA;
+
+    static const std::string REPLY_KEY;
+    static const std::string LOGGED_TO_SA_KEY;
+    static const std::string EASY_SETUP_FINISHED_KEY;
+    static const std::string WIFI_CONNECTED_KEY;
+};
+
+#endif //STATE_MANAGER_H
diff --git a/oobe-easy-setup/inc/TestUIViewEventAdapter.hpp b/oobe-easy-setup/inc/TestUIViewEventAdapter.hpp
new file mode 100644 (file)
index 0000000..4034771
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 TEST_UI_VIEW_EVENT_ADAPTER_H
+#define TEST_UI_VIEW_EVENT_ADAPTER_H
+
+#include "StateManager.hpp"
+#include "ViewManager.hpp"
+#include "common/Observer.hpp"
+#include <functional>
+
+class TestUIViewEventAdapter : public Observer<ViewEvent>
+{
+public:
+       TestUIViewEventAdapter(std::shared_ptr<StateManager> _stateManager);
+    virtual ~TestUIViewEventAdapter() = default;
+    TestUIViewEventAdapter(const TestUIViewEventAdapter &) = delete;
+    TestUIViewEventAdapter& operator=(const TestUIViewEventAdapter &) = delete;
+    TestUIViewEventAdapter(TestUIViewEventAdapter &&) = default;
+    TestUIViewEventAdapter& operator=(TestUIViewEventAdapter &&) = default;
+    virtual void update(const ViewEvent &event) override;
+private:
+    std::shared_ptr<StateManager> _stateManager;
+};
+
+#endif //TEST_UI_VIEW_EVENT_ADAPTER_H
diff --git a/oobe-easy-setup/inc/View.hpp b/oobe-easy-setup/inc/View.hpp
new file mode 100644 (file)
index 0000000..554ee59
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_BASE_H 
+#define VIEW_BASE_H
+
+#include "OobeEasySetupMain.hpp"
+
+#include "ViewDefines.hpp"
+#include "ViewTypes.hpp"
+#include "common/Observable.hpp"
+#include <string>
+
+class View : public Observable<std::string>
+{
+public:
+    View() = default;
+    ~View() = default;
+    View(const View &) = delete;
+    View& operator=(const View &) = delete;
+    View(View &&) = default;
+    View& operator=(View &&) = default;
+    virtual void show() = 0;
+    virtual void hide() = 0;
+};
+
+#endif //VIEW_BASE_H
+
diff --git a/oobe-easy-setup/inc/ViewDefines.hpp b/oobe-easy-setup/inc/ViewDefines.hpp
new file mode 100644 (file)
index 0000000..781ba95
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_DEFINES_H
+#define VIEW_DEFINES_H
+
+#include "../res/edje/common_definitions.h"
+
+#endif //VIEW_DEFINES_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/ViewEventAdapter.hpp b/oobe-easy-setup/inc/ViewEventAdapter.hpp
new file mode 100644 (file)
index 0000000..30c40cf
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 EASY_SETUP_VIEW_EVENT_ADAPTER_H
+#define EASY_SETUP_VIEW_EVENT_ADAPTER_H
+
+#include "StateManager.hpp"
+#include "ViewManager.hpp"
+#include "common/Observer.hpp"
+#include <functional>
+
+class ViewEventAdapter : public Observer<ViewEvent>
+{
+public:
+    ViewEventAdapter(std::shared_ptr<StateManager> _stateManager);
+    virtual ~ViewEventAdapter() = default;
+    ViewEventAdapter(const ViewEventAdapter &) = delete;
+    ViewEventAdapter& operator=(const ViewEventAdapter &) = delete;
+    ViewEventAdapter(ViewEventAdapter &&) = default;
+    ViewEventAdapter& operator=(ViewEventAdapter &&) = default;
+    virtual void update(const ViewEvent &event) override;
+private:
+    std::shared_ptr<StateManager> _stateManager;
+};
+
+#endif //EASY_SETUP_VIEW_EVENT_ADAPTER_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/ViewEventObserver.hpp b/oobe-easy-setup/inc/ViewEventObserver.hpp
new file mode 100644 (file)
index 0000000..be4b3be
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_EVENT_OBSERVER_H
+#define VIEW_EVENT_OBSERVER_H
+
+#include "View.hpp"
+#include <functional>
+
+class ViewManager;
+
+class ViewEventObserver : public Observer<std::string>
+{
+public:
+    ViewEventObserver(ViewManager &viewManager);
+    virtual void update(const std::string &info) override;
+private:
+    std::reference_wrapper<ViewManager> _viewManager;
+};
+
+#endif //VIEW_EVENT_OBSERVER_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/ViewManager.hpp b/oobe-easy-setup/inc/ViewManager.hpp
new file mode 100644 (file)
index 0000000..f8cc51d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_MANAGER_H
+#define VIEW_MANAGER_H
+
+#include "View.hpp"
+#include "ViewEventObserver.hpp"
+#include "ErrorType.hpp"
+#include "common/Observer.hpp"
+#include <memory>
+
+struct ViewData
+{
+    ViewData() : pin("12345678"), isLogged(false) {};
+    std::string pin;
+    bool isLogged;
+    ErrorType errorType;
+};
+
+struct ViewEvent
+{
+    view_e source;
+    std::string info;    
+};
+
+class ViewManager : public Observable<ViewEvent>
+{
+public:
+    ViewManager();
+    ~ViewManager();
+    ViewManager(const ViewManager &) = delete;
+    ViewManager& operator=(const ViewManager &) = delete;
+    ViewManager(ViewManager &&) = default;
+    ViewManager& operator=(ViewManager &&) = default;
+    void setView(view_e view);
+    void showPopup(popup_e popup);
+    void hidePopup();
+    ViewData viewData;
+    void processInfo(std::string info);
+private:
+    view_e _currentEnum;
+    popup_e _currentPopupEnum;
+    std::shared_ptr<View> _current;
+    std::shared_ptr<View> _currentPopup;
+    std::shared_ptr<ViewEventObserver> _viewEventObserver;
+    std::shared_ptr<ViewEventObserver> _popupEventObserver;
+};
+
+
+#endif //VIEW_MANAGER_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/ViewTypes.hpp b/oobe-easy-setup/inc/ViewTypes.hpp
new file mode 100644 (file)
index 0000000..3a8a643
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_TYPES_H
+#define VIEW_TYPES_H
+
+enum view_e
+{
+    VIEW_START = 0,
+    VIEW_ADVERTISEMENT,
+    VIEW_CONNECTED_TO_SOFTAP,
+    VIEW_PIN,
+    VIEW_AUTO_CONFIGURTION,
+    VIEW_ERROR
+};
+
+enum popup_e
+{
+    POPUP_NONE = -1,
+    POPUP_SKIP
+};
+
+#endif //VIEW_TYPES_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/abstractions/HomeAP.hpp b/oobe-easy-setup/inc/abstractions/HomeAP.hpp
new file mode 100644 (file)
index 0000000..6eacbd5
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 HOME_AP_CONNECTION
+#define HOME_AP_CONNECTION
+
+#include <string>
+#include "common/Observable.hpp"
+
+enum ConnectionState
+{
+       CONNECTED,
+       DISCONNECTED,
+       ERROR
+};
+
+class HomeAP : public Observable<ConnectionState>
+{
+public:
+       HomeAP() = default;
+       virtual ~HomeAP() = default;
+
+       virtual bool connect(const std::string &ssid, const std::string& passwd) = 0;
+       virtual void disconnect() = 0;
+       virtual bool activated() = 0;
+private:
+       
+};
+
+#endif /* HOME_AP_CONNECTION */
diff --git a/oobe-easy-setup/inc/abstractions/SASigner.hpp b/oobe-easy-setup/inc/abstractions/SASigner.hpp
new file mode 100644 (file)
index 0000000..5b8a393
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SASIGNER_H
+#define SASIGNER_H
+
+#include "common/Observable.hpp"
+#include "common/SigningEvent.hpp"
+#include <memory>
+
+class SASigner : public Observable<SigningEvent>
+{
+public:
+
+    virtual void checkUserProfileReady() = 0;
+    virtual bool signIn() = 0;
+
+    virtual std::string userName() const = 0;
+    virtual std::string nickName() const = 0;
+};
+
+#endif //SASIGNER_H
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/abstractions/SoftAP.hpp b/oobe-easy-setup/inc/abstractions/SoftAP.hpp
new file mode 100644 (file)
index 0000000..bd32d4c
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 ABSTRACT_SOFTAP_H
+#define ABSTRACT_SOFTAP_H
+
+#include "common/Observable.hpp"
+
+enum class SoftAPState
+{
+       ENABLED,
+       DISABLED,
+       ERROR,
+};
+
+class SoftAP : public Observable<SoftAPState>
+{
+public:
+       SoftAP() = default;
+       virtual ~SoftAP() = default;
+
+       virtual void enable() = 0;
+       virtual void disable() = 0;
+private:
+};
+
+#endif /* ABSTRACT_SOFTAP_H */
diff --git a/oobe-easy-setup/inc/common/Observable.hpp b/oobe-easy-setup/inc/common/Observable.hpp
new file mode 100644 (file)
index 0000000..eadad15
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * 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 OBSERVABLE_H
+#define OBSERVABLE_H
+
+#include <memory>
+#include <vector>
+
+#include "Observer.hpp"
+
+template <typename T>
+class Observable {
+public:
+    Observable() = default;
+    virtual ~Observable() = default;
+
+    void attach(std::weak_ptr<Observer<T>> observer)
+    {
+        observers.push_back(observer);
+    }
+
+    void detach(std::weak_ptr<Observer<T>> observer)
+    {
+        for (auto it = observers.begin(); it != observers.end(); ++it) {
+            auto ptr = it->lock();
+            if (ptr == observer.lock()) {
+                observers.erase(it);
+                return;
+            }
+        }
+    }
+
+    void notify(const T &item)
+    {
+        auto observers_copy = observers;
+        for (auto& obs : observers_copy) {
+            auto ptr = obs.lock();
+            if (ptr)
+                ptr->update(item);
+        }
+    }
+
+private:
+    std::vector<std::weak_ptr<Observer<T>>> observers;
+};
+
+#endif /* OBSERVABLE_H */
diff --git a/oobe-easy-setup/inc/common/Observer.hpp b/oobe-easy-setup/inc/common/Observer.hpp
new file mode 100644 (file)
index 0000000..05c0b8a
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * 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 OBSERVER_H
+#define OBSERVER_H
+
+template <typename T>
+class Observer {
+public:
+    Observer() = default;
+    virtual ~Observer() = default;
+    virtual void update(const T &item) = 0;
+};
+
+#endif /* OBSERVER_H */
diff --git a/oobe-easy-setup/inc/connectivity/TizenHomeAP.hpp b/oobe-easy-setup/inc/connectivity/TizenHomeAP.hpp
new file mode 100644 (file)
index 0000000..166d85a
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "abstractions/HomeAP.hpp"
+#include <tizen/network/wifi/Manager.hpp>
+#include <tizen/network/softap/Manager.hpp>
+
+#ifndef TIZENHOMEAP_H
+#define TIZENHOMEAP_H
+
+class TizenHomeAP : public HomeAP
+{
+public:
+       TizenHomeAP();
+       bool connect(const std::string &ssid, const std::string& passwd) override;
+       void disconnect() override;
+       bool activated() override;
+private:
+       bool connectNow(const std::string &ssid, const std::string& passwd);
+       tizen::network::wifi::Manager wifi_mgr;
+       tizen::network::softap::Manager softap_mgr;
+};
+
+#endif /* TIZENHOMEAP_H */
diff --git a/oobe-easy-setup/inc/connectivity/TizenSoftAP.hpp b/oobe-easy-setup/inc/connectivity/TizenSoftAP.hpp
new file mode 100644 (file)
index 0000000..ec379ab
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 TIZENSOFTAP_H
+#define TIZENSOFTAP_H
+
+#include <string>
+#include <tizen/network/softap/Manager.hpp>
+#include <tizen/network/wifi/Manager.hpp>
+
+#include "abstractions/SoftAP.hpp"
+
+class TizenSoftAP : public SoftAP
+{
+public:
+       TizenSoftAP();
+       void enable() override;
+       void disable() override;
+private:
+       void enableNow();
+       tizen::network::softap::Manager softap_mgr;
+       tizen::network::wifi::Manager wifi_mgr;
+};
+
+#endif /* TIZENSOFTAP_H */
diff --git a/oobe-easy-setup/inc/logger.h b/oobe-easy-setup/inc/logger.h
new file mode 100644 (file)
index 0000000..a85d159
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "OobeEasySetupMain.hpp"
+#include "dlog.h"
+
+#define LOG_DBG(format, ...) dlog_print(DLOG_DEBUG, LOG_TAG, format, ## __VA_ARGS__)
+#define LOG_WRN(format, ...) dlog_print(DLOG_WARN, LOG_TAG, format, ## __VA_ARGS__) 
+#define LOG_INF(format, ...) dlog_print(DLOG_INFO, LOG_TAG, format, ## __VA_ARGS__) 
+#define LOG_ERR(format, ...) dlog_print(DLOG_ERROR, LOG_TAG, format, ## __VA_ARGS__) 
+#define LOG_FAT(format, ...) dlog_print(DLOG_FATAL, LOG_TAG, format, ## __VA_ARGS__) 
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/popups/PopupSkip.hpp b/oobe-easy-setup/inc/popups/PopupSkip.hpp
new file mode 100644 (file)
index 0000000..f148380
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 POPUP_SKIP_H
+#define POPUP_SKIP_H
+
+#include "View.hpp"
+#include <string>
+
+class PopupSkip : public View
+{
+public:
+    PopupSkip() = default;
+    ~PopupSkip() = default;
+    PopupSkip(const PopupSkip &) = delete;
+    PopupSkip& operator=(const PopupSkip &) = delete;
+    PopupSkip(PopupSkip &&) = default;
+    PopupSkip& operator=(PopupSkip &&) = default;
+    virtual void show() override;
+    virtual void hide() override;
+private:
+    Evas_Object *popup;
+
+    static const std::string POPUP_SKIP_EDJE_FILE;
+    static const std::string POPUP_SKIP_TEXT_KEY;
+    static const std::string POPUP_SKIP_NO;
+    static const std::string POPUP_SKIP_YES;
+};
+
+#endif //POPUP_SKIP_H 
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/smartthings.h b/oobe-easy-setup/inc/smartthings.h
new file mode 100644 (file)
index 0000000..7206479
--- /dev/null
@@ -0,0 +1,1656 @@
+/*****************************************************************
+ *
+ * Copyright (c) 2018 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.
+ *
+ ******************************************************************/
+
+
+#ifndef __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__
+#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__
+
+#include <stdlib.h>
+#include <stdbool.h>
+#include <tizen.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup CAPI_SMARTTHINGS_THING_MASTER_MODULE
+ * @{
+ */
+
+/**
+ * @brief Definition for the max length of SSID for access point.
+ * @since_ses 1
+ */
+#define SMARTTHINGS_SSID_LEN_MAX 32
+
+/**
+ * @brief Definition for the max length of cloud information.
+ * @since_ses 1
+ */
+#define SMARTTHINGS_CLOUD_INFO_LEN_MAX 128
+
+/**
+ * @brief Enumeration for the SmartThings error.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_ERROR_NONE = TIZEN_ERROR_NONE,                                /**< Successful */
+       SMARTTHINGS_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,      /**< Invalid parameter */
+       SMARTTHINGS_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,              /**< Out of memory */
+       SMARTTHINGS_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED,      /**< Permission denied */
+       SMARTTHINGS_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA,                          /**< No data */
+       SMARTTHINGS_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED,              /**< Not supported */
+       SMARTTHINGS_ERROR_OPERATION_FAILED = TIZEN_ERROR_UNKNOWN - 1,             /**< Operation failed */
+       SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE = TIZEN_ERROR_UNKNOWN -2            /**< Service unavailable */
+} smartthings_error_e;
+
+/**
+ * @brief Enumeration for SmartThings status.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_STATUS_NOT_READY = -1,                   /**< Service agent is not ready */
+       SMARTTHINGS_STATUS_INIT = 0,                         /**< Initial state of SmartThings Thing */
+       SMARTTHINGS_STATUS_ES_STARTED,                       /**< Easy-setup is started */
+       SMARTTHINGS_STATUS_ES_DONE,                          /**< Easy-setup is done */
+       SMARTTHINGS_STATUS_ES_FAILED_ON_OWNERSHIP_TRANSFER,  /**< Easy-setup failed due to Ownership-Transfer failure */
+       SMARTTHINGS_STATUS_CONNECTING_TO_AP,                 /**< Connecting to target Wi-Fi access point */
+       SMARTTHINGS_STATUS_CONNECTED_TO_AP,                  /**< Connected to target Wi-Fi access point */
+       SMARTTHINGS_STATUS_CONNECTING_TO_AP_FAILED,          /**< Failed to connect to target Wi-Fi access point */
+       SMARTTHINGS_STATUS_REGISTERING_TO_CLOUD,             /**< Trying to sign up, sign in and publish resources to cloud */
+       SMARTTHINGS_STATUS_REGISTERED_TO_CLOUD,              /**< Publish resources to cloud is complete. Now the thing is ready to be controlled via cloud */
+       SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_SIGN_IN,    /**< Failed to sign in to cloud */
+       SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_PUB_RES     /**< Failed to publish resources to cloud */
+} smartthings_status_e;
+
+/**
+ * @brief Enumeration for RPC connection status.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_CONNECTION_STATUS_CONNECTED = 0,            /**< Connection is connected */
+       SMARTTHINGS_CONNECTION_STATUS_DISCONNECTED,             /**< Connection is disconnected */
+       SMARTTHINGS_CONNECTION_STATUS_REJECTED,                 /**< Connection is rejected */
+} smartthings_connection_status_e;
+
+/**
+ * @brief The Wi-Fi mode.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_WIFI_MODE_11A = (1 << 0),   /**< Wi-Fi 11A */
+       SMARTTHINGS_WIFI_MODE_11B = (1 << 1),   /**< Wi-Fi 11B */
+       SMARTTHINGS_WIFI_MODE_11G = (1 << 2),   /**< Wi-Fi 11G */
+       SMARTTHINGS_WIFI_MODE_11N = (1 << 3),   /**< Wi-Fi 11N */
+       SMARTTHINGS_WIFI_MODE_11AC = (1 << 4)   /**< Wi-Fi 11AC */
+} smartthings_wifi_mode_e;
+
+/**
+ * @brief The Wi-Fi frequency band.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_WIFI_FREQ_24G = (1 << 0),       /**< Wi-Fi 2.4GHz */
+       SMARTTHINGS_WIFI_FREQ_5G = (1 << 1),        /**< Wi-Fi 5GHz */
+} smartthings_wifi_freq_e;
+
+/**
+ * @brief The Wi-Fi authentication type of access point.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_WIFI_AUTHTYPE_NONE = 0, /**< No authentication */
+       SMARTTHINGS_WIFI_AUTHTYPE_WEP,      /**< WEP */
+       SMARTTHINGS_WIFI_AUTHTYPE_WPA_PSK,  /**< WPA-PSK */
+       SMARTTHINGS_WIFI_AUTHTYPE_WPA2_PSK  /**< WPA2-PSK */
+} smartthings_wifi_authtype_e;
+
+/**
+ * @brief The Wi-Fi encryption type of access point.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_WIFI_ENCTYPE_NONE = 0,      /**< No encryption */
+       SMARTTHINGS_WIFI_ENCTYPE_WEP_64,        /**< WEP 64 */
+       SMARTTHINGS_WIFI_ENCTYPE_WEP_128,       /**< WEP 128 */
+       SMARTTHINGS_WIFI_ENCTYPE_TKIP,          /**< TKIP */
+       SMARTTHINGS_WIFI_ENCTYPE_AES,           /**< AES */
+       SMARTTHINGS_WIFI_ENCTYPE_TKIP_AES       /**< TKIP/AES */
+} smartthings_wifi_enctype_e;
+
+/**
+ * @brief The SmartThings handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_s *smartthings_h;
+
+/**
+ * @brief The access point information handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_ap_info_s *smartthings_ap_info_h;
+
+/**
+ * @brief The device provisioning information handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_device_prov_info_s *smartthings_device_prov_info_h;
+
+/**
+ * @brief The cloud information handle for cloud sign-up.
+ * @since_ses 1
+ */
+typedef struct smartthings_cloud_info_s *smartthings_cloud_info_h;
+
+/**
+ * @brief The access point list handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_ap_list_s *smartthings_ap_list_h;
+
+/**
+ * @brief Callback for status of connection to SmartThings Thing agent.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can see connection status as #smartthings_connection_status_e enumeration value.
+ *
+ * @param[in] result The result of connection operation
+ * @param[in] handle The SmartThings handle
+ * @param[in] status The status of connection
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_initialize()
+ */
+typedef void (*smartthings_connection_status_cb)(smartthings_h handle, smartthings_connection_status_e status, void *user_data);
+
+/**
+ * @brief Callback for SmartThings Thing status.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can see SmartThings status as #smartthings_status_e enumeration value.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] status The status of SmartThings
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_status_changed_cb()
+ * @see smartthings_unset_status_changed_cb()
+ */
+typedef void (*smartthings_status_changed_cb)(smartthings_h handle, smartthings_status_e status, void *user_data);
+
+/**
+ * @brief Callback for getting user's input regarding mutual verification.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can send a confirmation for mutual verification as true or false.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_user_confirm_cb()
+ * @see smartthings_unset_user_confirm_cb()
+ */
+typedef void (*smartthings_user_confirm_cb)(smartthings_h handle, void *user_data);
+
+/**
+ * @brief Callback for getting user's opinion regarding device reset.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can sends a confirmation for reset as true or false.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_reset_confirm_cb()
+ * @see smartthings_unset_reset_confirm_cb()
+ */
+typedef void (*smartthings_reset_confirm_cb)(smartthings_h handle, void *user_data);
+
+/**
+ * @brief Callback for result of reset operation.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can check reset operation succeeds or fails.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] result The result of reset
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_reset_result_cb()
+ * @see smartthings_unset_reset_result_cb()
+ */
+typedef void (*smartthings_reset_result_cb)(smartthings_h handle, bool result, void *user_data);
+
+/**
+ * @brief Callback for carrying the randomly generated PIN information.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks The @a pin can be used only in the callback. To use outside, make a copy.
+ * @remarks When callback is called, user can see PIN value and length.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] pin The PIN data in string format
+ * @param[in] size The PIN length of @a pin
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_pin_cb()
+ * @see smartthings_unset_pin_cb()
+ */
+typedef void (*smartthings_pin_generated_cb)(smartthings_h handle, const char* pin, size_t size, void *user_data);
+
+/**
+ * @brief Callback for informing the application to close the PIN display.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can know PIN based ownership transfer is finished.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_pin_cb()
+ * @see smartthings_unset_pin_cb()
+ */
+typedef void (*smartthings_pin_display_close_cb)(smartthings_h handle, void *user_data);
+
+/**
+ * @brief Callback for informing Wi-Fi AP information to connect.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks The @a ap_info_h should not be released.
+ * @remarks The @a ap_info_h will be released when smartthings_unset_wifi_ap_provisioning_cb() is called.
+ * @remarks When callback is called, user can get Wi-Fi provisioning information.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] ap_info_h The AP information handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+typedef void (*smartthings_wifi_ap_provisioning_cb)(smartthings_h handle, smartthings_ap_info_h ap_info_h, void *user_data);
+
+/**
+ * @brief Callback for informing device provisioning information.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks The @a dev_prov_h should not be released.
+ * @remarks The @a dev_prov_h will be released when smartthings_unset_device_provisioning_cb() is called.
+ * @remarks When callback is called, user can get device provisioning information.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] dev_prov_h The device provisioning information handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+typedef void (*smartthings_device_provisioning_cb)(smartthings_h handle, smartthings_device_prov_info_h dev_prov_h, void *user_data);
+
+/**
+ * @brief Callback for informing the scan AP list request.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user scans access points, sets AP list and sends it to agent.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] req_id The request ID
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_scan_ap_cb()
+ * @see smartthings_unset_scan_ap_cb()
+ */
+typedef void (*smartthings_scan_ap_cb)(smartthings_h handle, int req_id, void *user_data);
+
+/**
+ * @brief Callback for informing the stop soft AP request.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user stops soft AP.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_stop_soft_ap_cb()
+ * @see smartthings_unset_stop_soft_ap_cb()
+ */
+typedef void (*smartthings_stop_soft_ap_cb)(smartthings_h handle, void *user_data);
+
+/**
+ * @brief Creates a handle and connects to agent.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks The @a handle must be released using smartthings_deinitialize().
+ * @remarks Ths function returns #SMARTTHINGS_ERROR_PERMISSION_DENIED\n
+ *          if the application has no app-defined privilege for 'http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master'.
+ *
+ * @param[out] handle The SmartThings handle to be newly created on success
+ * @param[in] connection_status_cb The RPC connection status callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_NOT_SUPPORTED Not supported
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_deinitialize()
+ */
+int smartthings_initialize(smartthings_h *handle,
+                                               smartthings_connection_status_cb connection_status_cb,
+                                               void *user_data);
+
+/**
+ * @brief Deinitializes a handle and disconnects from the agent.
+ * @since_ses 1
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_initialize()
+ */
+int smartthings_deinitialize(smartthings_h handle);
+
+/**
+ * @brief Starts SmartThings Thing operation.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_stop()
+ */
+int smartthings_start(smartthings_h handle);
+
+/**
+ * @brief Stops SmartThings Thing operation.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_start()
+ */
+int smartthings_stop(smartthings_h handle);
+
+/**
+ * @brief Sets thing status changed callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when SmartThings status is changed.
+ * @remarks When callback is called, user can get SmartThings status as #smartthings_status_e enumeration value.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] status_cb The status changed callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_status_changed_cb()
+ */
+int smartthings_set_status_changed_cb(smartthings_h handle,
+                                                               smartthings_status_changed_cb status_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets thing status changed callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_status_changed_cb()
+ */
+int smartthings_unset_status_changed_cb(smartthings_h handle);
+
+/**
+ * @brief Sets test certificate files.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks These files should be placed in 'res' directory of application.
+ * @remarks This function is needed only for using test certificate.
+ * @remarks This function can be used before smartthings_start()
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] certificate The certificate file
+ * @param[in] private_key The private key file
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_set_certificate_file(smartthings_h handle, const char *certificate, const char *private_key);
+
+/**
+ * @brief Sets device property for Easy-setup.
+ * @since_ses 1
+ *
+ * @remarks This function can be used before smartthings_start()
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] dev_name The device name
+ * @param[in] wifi_mode The supported Wi-Fi mode (bit masked value for #smartthings_wifi_mode_e)
+ * @param[in] wifi_freq The supported Wi-Fi frequency (bit masked value for #smartthings_wifi_freq_e)
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_set_device_property(smartthings_h handle, const char* dev_name, int wifi_mode, int wifi_freq);
+
+/**
+ * @brief Gets a device ID.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks The @a device_id should be released using free().
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[out] device_id The device ID
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_get_device_id(smartthings_h handle, char **device_id);
+
+/**
+ * @brief Gets a Easy-setup status.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[out] is_completed The status of Easy-setup whether it is completed or not
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_get_easysetup_status(smartthings_h handle, bool *is_completed);
+
+/**
+ * @brief Starts Easy-setup mode.
+ *
+ * @details This function requests for turning on soft AP to SmartThings Thing agent.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/softap
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_stop_easysetup()
+ */
+int smartthings_start_easysetup(smartthings_h handle);
+
+/**
+ * @brief Stops Easy-setup mode.
+ *
+ * @details This function requests for turning off soft AP to SmartThings Thing agent.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/softap
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_start_easysetup()
+ */
+int smartthings_stop_easysetup(smartthings_h handle);
+
+/**
+ * @brief Sets callback for getting user confirmation for mutual verification based just work ownership transfer.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when it needs user's confirm for mutual verification based just work ownership transfer.
+ * @remarks When callback is called, user can send a confirmation for mutual verification based just work ownership transfer as true or false.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] confirm_cb The user confirm callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_user_confirm_cb()
+ */
+int smartthings_set_user_confirm_cb(smartthings_h handle,
+                                                               smartthings_user_confirm_cb confirm_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets user confirmation callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_user_confirm_cb()
+ */
+int smartthings_unset_user_confirm_cb(smartthings_h handle);
+
+/**
+ * @brief Sets reset confirmation callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when it needs user's confirm for reset.
+ * @remarks When callback is called, user can send a confirmation for reset as true or false.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] confirm_cb The reset confirm callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_reset_confirm_cb()
+ */
+int smartthings_set_reset_confirm_cb(smartthings_h handle,
+                                                               smartthings_reset_confirm_cb confirm_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets reset confirmation callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_reset_confirm_cb()
+ */
+int smartthings_unset_reset_confirm_cb(smartthings_h handle);
+
+/**
+ * @brief Sets reset result callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when reset operation returns its result.
+ * @remarks When callback is called, user can check reset operation succeeds or fails.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] reset_result_cb The reset result callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_reset_result_cb()
+ */
+int smartthings_set_reset_result_cb(smartthings_h handle,
+                                                               smartthings_reset_result_cb reset_result_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets reset result callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_reset_result_cb()
+ */
+int smartthings_unset_reset_result_cb(smartthings_h handle);
+
+
+/**
+ * @brief Sets callback for getting randomly generated PIN for the PIN-based ownership transfer request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks @a generated_cb callback is called when PIN is generated.
+ * @remarks @a close_cb callback is called when PIN based ownership transfer is finished.
+ * @remarks When @a generated_cb callback is called, user can see PIN value and length.
+ * @remarks When @a close_cb callback is called, user can know PIN based ownership transfer is finished.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] generated_cb The PIN generation callback to register
+ * @param[in] close_cb The PIN display close callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_pin_cb()
+ */
+int smartthings_set_pin_cb(smartthings_h handle,
+                                                               smartthings_pin_generated_cb generated_cb,
+                                                               smartthings_pin_display_close_cb close_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets PIN callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_pin_cb()
+ */
+int smartthings_unset_pin_cb(smartthings_h handle);
+
+/**
+ * @brief Sets callback for getting Wi-Fi AP information during Easy-setup.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when Wi-Fi provisioning event occurs.
+ * @remarks When callback is called, user can get Wi-Fi provisioning information.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] wifi_ap_cb The Wi-Fi AP callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_set_wifi_ap_provisioning_cb(smartthings_h handle,
+                                                               smartthings_wifi_ap_provisioning_cb wifi_ap_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets callback for getting Wi-Fi AP information during Easy-setup.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ */
+int smartthings_unset_wifi_ap_provisioning_cb(smartthings_h handle);
+
+/**
+ * @brief Sets callback for getting device provisioning information.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when device provisioning event occurs.
+ * @remarks When callback is called, user can get device provisioning information.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] dev_prov_cb The device provisioning callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+int smartthings_set_device_provisioning_cb(smartthings_h handle,
+                                                               smartthings_device_provisioning_cb dev_prov_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets callback for getting device provisioning information.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ */
+int smartthings_unset_device_provisioning_cb(smartthings_h handle);
+
+/**
+ * @brief Sets callback for informing the scan AP list request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when GET request for access point list.
+ * @remarks When callback is called, user scans access points, sets AP list and sends it to agent.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] scan_ap_cb The callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_scan_ap_cb()
+ * @see smartthings_send_ap_list()
+ */
+int smartthings_set_scan_ap_cb(smartthings_h handle,
+                                                               smartthings_scan_ap_cb scan_ap_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets callback for informing the scan AP list request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_scan_ap_cb()
+ */
+int smartthings_unset_scan_ap_cb(smartthings_h handle);
+
+/**
+ * @brief Sets callback for informing the stop soft AP request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when POST request for stopping soft AP.
+ * @remarks When callback is called, user stops soft AP.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] stop_soft_ap_cb The callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_stop_soft_ap_cb()
+ */
+int smartthings_set_stop_soft_ap_cb(smartthings_h handle,
+                                                               smartthings_stop_soft_ap_cb stop_soft_ap_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets callback for informing the stop soft AP request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_stop_soft_ap_cb()
+ */
+int smartthings_unset_stop_soft_ap_cb(smartthings_h handle);
+
+/**
+ * @brief Sends a user confirmation for MUTUAL VERIFICATION BASED JUST WORK Ownership transfer.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] confirm The user confirmation for OTM(ownership transfer method)
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_user_confirm_cb()
+ * @see smartthings_unset_user_confirm_cb()
+ */
+int smartthings_send_user_confirm(smartthings_h handle, bool confirm);
+
+
+/**
+ * @brief Sends a reset confirmation.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] confirm The reset confirmation
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_reset_confirm_cb()
+ * @see smartthings_unset_reset_confirm_cb()
+ */
+int smartthings_send_reset_confirm(smartthings_h handle, bool confirm);
+
+/**
+ * @brief Sends a reset command for resetting the device's Cloud signup and Easy-setup.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_reset_result_cb()
+ * @see smartthings_unset_reset_result_cb()
+ */
+int smartthings_reset(smartthings_h handle);
+
+/**
+ * @brief Gets SSID of access point.
+ * @since_ses 1
+ *
+ * @remarks The @a ssid should be released using free().
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] ssid The SSID name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_ssid(smartthings_ap_info_h ap_info_h, char **ssid);
+
+/**
+ * @brief Gets password of access point.
+ * @since_ses 1
+ *
+ * @remarks The @a pwd should be released using free().
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] pwd The password
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_password(smartthings_ap_info_h ap_info_h, char **pwd);
+
+/**
+ * @brief Gets authentification type of access point.
+ * @since_ses 1
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] authtype The authentification type
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_authtype(smartthings_ap_info_h ap_info_h, smartthings_wifi_authtype_e *authtype);
+
+/**
+ * @brief Gets encryption type of access point.
+ * @since_ses 1
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] enctype The encryption type
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_enctype(smartthings_ap_info_h ap_info_h, smartthings_wifi_enctype_e *enctype);
+
+/**
+ * @brief Gets channel information of access point.
+ * @since_ses 1
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] channel The frequency channel
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_channel(smartthings_ap_info_h ap_info_h, int *channel);
+
+/**
+ * @brief Gets language of device provisioing information.
+ * @since_ses 1
+ *
+ * @remarks The @a language should be released using free().
+ *
+ * @param[in] dev_prov_h The SmartThings device provisioning information handle
+ * @param[out] language The IETF language tag using ISO 639X
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+int smartthings_devinfo_get_language(smartthings_device_prov_info_h dev_prov_h, char **language);
+
+/**
+ * @brief Gets country of device provisioing information.
+ * @since_ses 1
+ *
+ * @remarks The @a country should be released using free().
+ *
+ * @param[in] dev_prov_h The SmartThings device provisioning information handle
+ * @param[out] country The ISO Country Code (ISO 3166-1 Alpha-2)
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+int smartthings_devinfo_get_country(smartthings_device_prov_info_h dev_prov_h, char **country);
+
+/**
+ * @brief Gets datetime of device provisioing information.
+ * @since_ses 1
+ *
+ * @remarks The @a datetime should be released using free().
+ *
+ * @param[in] dev_prov_h The SmartThings device provisioning information handle
+ * @param[out] datetime The date and time
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+int smartthings_devinfo_get_datetime(smartthings_device_prov_info_h dev_prov_h, char **datetime);
+
+/**
+ * @brief Creates a SmartThings AP list handle.
+ * @since_ses 1
+ *
+ * @remarks The @a ap_list_h must be released using smartthings_aplist_destroy().
+ *
+ * @param[out] ap_list_h The SmartThings AP list handle to be newly created on success
+ * @param[in] count The count of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory
+ *
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_create(smartthings_ap_list_h *ap_list_h, unsigned int count);
+
+/**
+ * @brief Destroys a SmartThings AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ */
+int smartthings_aplist_destroy(smartthings_ap_list_h ap_list_h);
+
+/**
+ * @brief Sets SSID at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] ssid The SSID of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_ssid(smartthings_ap_list_h ap_list_h, int idx, const char *ssid);
+
+/**
+ * @brief Sets BSSID at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] bssid The BSSID of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_bssid(smartthings_ap_list_h ap_list_h, int idx, const char *bssid);
+
+/**
+ * @brief Sets authentification type at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] authtype The authentification type of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_authtype(smartthings_ap_list_h ap_list_h, int idx, smartthings_wifi_authtype_e authtype);
+
+/**
+ * @brief Sets encryption type at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] enctype The encryption type of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_enctype(smartthings_ap_list_h ap_list_h, int idx, smartthings_wifi_enctype_e enctype);
+
+/**
+ * @brief Sets frequency channel at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] channel The frequency channel of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_channel(smartthings_ap_list_h ap_list_h, int idx, int channel);
+
+/**
+ * @brief Sets signal level at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] signal_level The signal level of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_signal_level(smartthings_ap_list_h ap_list_h, int idx, int signal_level);
+
+/**
+ * @brief Sets max speed rate at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] max_rate The max speed rate of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_max_rate(smartthings_ap_list_h ap_list_h, int idx, int max_rate);
+
+/**
+ * @brief Sends the scanned AP list.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] req_id The request ID
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ * @see smartthings_set_scan_ap_cb()
+ */
+int smartthings_send_ap_list(smartthings_h handle, smartthings_ap_list_h ap_list_h, int req_id);
+
+/**
+ * @brief Creates a SmartThings cloud information handle.
+ * @since_ses 1
+ *
+ * @remarks The @a cloud_info_h must be released using smartthings_cloudinfo_destroy().
+ *
+ * @param[out] cloud_info_h The SmartThings cloud information handle to be newly created on success
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory
+ *
+ * @see smartthings_cloudinfo_destroy()
+ */
+int smartthings_cloudinfo_create(smartthings_cloud_info_h *cloud_info_h);
+
+/**
+ * @brief Destroys a SmartThings cloud information handle.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_cloudinfo_create()
+ */
+int smartthings_cloudinfo_destroy(smartthings_cloud_info_h cloud_info_h);
+
+/**
+ * @brief Sets region of cloud information.
+ * @since_ses 1
+ *
+ * @remarks The @a region can be set to one of "global" or "china".
+ * @remarks If it doesn't use this function, the @a region will be set to "global" internally.
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] region The region name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_region(smartthings_cloud_info_h cloud_info_h, const char *region);
+
+/**
+ * @brief Sets authentification provider of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] auth_provider The authentification provider
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_auth_provider(smartthings_cloud_info_h cloud_info_h, const char *auth_provider);
+
+/**
+ * @brief Sets access token of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] access_token The access token
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_access_token(smartthings_cloud_info_h cloud_info_h, const char *access_token);
+
+/**
+ * @brief Sets refresh token of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] refresh_token The refresh token
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_refresh_token(smartthings_cloud_info_h cloud_info_h, const char *refresh_token);
+
+/**
+ * @brief Sets user ID of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] user_id The user ID
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_user_id(smartthings_cloud_info_h cloud_info_h, const char *user_id);
+
+/**
+ * @brief Sets client ID of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] client_id The client ID
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_client_id(smartthings_cloud_info_h cloud_info_h, const char *client_id);
+
+/**
+ * @brief Requests to sign up to cloud.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] cloud_info_h The handle for cloud signup
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_sign_up_cloud(smartthings_h handle, smartthings_cloud_info_h cloud_info_h);
+
+/**
+ * @brief Sets preconfigured PIN.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] pin The PIN code to preconfigure
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_set_preconfigured_pin(smartthings_h handle, const char* pin);
+
+/**
+ * @brief Sets MOT(multiple ownership transfer) status.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] enable The MOT(multiple ownership transfer) status
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_set_mot_status(smartthings_h handle, bool enable);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__ */
diff --git a/oobe-easy-setup/inc/views/ViewAdvertisement.hpp b/oobe-easy-setup/inc/views/ViewAdvertisement.hpp
new file mode 100644 (file)
index 0000000..563e7bd
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_ADVERTISEMENT_H
+#define VIEW_ADVERTISEMENT_H
+
+#include "View.hpp"
+#include <string>
+
+class ViewAdvertisement : public View
+{
+public:
+    ViewAdvertisement() = default;
+    ~ViewAdvertisement() = default;
+    ViewAdvertisement(const ViewAdvertisement &) = delete;
+    ViewAdvertisement& operator=(const ViewAdvertisement &) = delete;
+    ViewAdvertisement(ViewAdvertisement &&) = default;
+    ViewAdvertisement& operator=(ViewAdvertisement &&) = default;
+    virtual void show() override;
+    virtual void hide() override;
+private:
+    static const std::string VIEW_ADVERTISEMENT_EDJE_FILE;
+
+    static const std::string VIEW_ADVERTISEMENT_TEXT_KEY;
+    static const std::string VIEW_ADVERTISEMENT_SKIP_TEXT_KEY;
+};
+
+#endif //VIEW_ADVERTISEMENT_H 
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/views/ViewAutoConfiguration.hpp b/oobe-easy-setup/inc/views/ViewAutoConfiguration.hpp
new file mode 100644 (file)
index 0000000..f80e20a
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_AUTO_CONFIGURATION_H
+#define VIEW_AUTO_CONFIGURATION_H
+
+#include "View.hpp"
+#include <string>
+
+class ViewAutoConfiguration : public View
+{
+public:
+    ViewAutoConfiguration() = default;
+    ~ViewAutoConfiguration() = default;
+    ViewAutoConfiguration(const ViewAutoConfiguration &) = delete;
+    ViewAutoConfiguration& operator=(const ViewAutoConfiguration &) = delete;
+    ViewAutoConfiguration(ViewAutoConfiguration &&) = default;
+    ViewAutoConfiguration& operator=(ViewAutoConfiguration &&) = default;
+    virtual void show() override;
+    virtual void hide() override;
+private:
+    static const std::string VIEW_AUTO_CONFIGURATION_EDJE_FILE;
+
+    static const std::string VIEW_AUTO_CONFIGURATION_TEXT_KEY;
+    static const std::string VIEW_AUTO_CONFIGURATION_SKIP_TEXT_KEY;
+};
+
+#endif //VIEW_AUTO_CONFIGURATION_H 
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/views/ViewConnectedToSoftAP.hpp b/oobe-easy-setup/inc/views/ViewConnectedToSoftAP.hpp
new file mode 100644 (file)
index 0000000..b2f0279
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_CONNECTED_TO_SOFTAP_H
+#define VIEW_CONNECTED_TO_SOFTAP_H
+
+#include "View.hpp"
+#include <string>
+
+class ViewConnectedToSoftAP : public View
+{
+public:
+    ViewConnectedToSoftAP() = default;
+    ~ViewConnectedToSoftAP() = default;
+    ViewConnectedToSoftAP(const ViewConnectedToSoftAP &) = delete;
+    ViewConnectedToSoftAP& operator=(const ViewConnectedToSoftAP &) = delete;
+    ViewConnectedToSoftAP(ViewConnectedToSoftAP &&) = default;
+    ViewConnectedToSoftAP& operator=(ViewConnectedToSoftAP &&) = default;
+    virtual void show() override;
+    virtual void hide() override;
+private:
+    static const std::string VIEW_CONNECTED_TO_SOFTAP_EDJE_FILE;
+
+    static const std::string VIEW_CONNECTED_TO_SOFTAP_TEXT_KEY;
+    static const std::string VIEW_CONNECTED_TO_SOFTPA_SKIP_TEXT_KEY;
+};
+
+#endif //VIEW_CONNECTED_TO_SOFTAP_H 
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/views/ViewError.hpp b/oobe-easy-setup/inc/views/ViewError.hpp
new file mode 100644 (file)
index 0000000..e396abc
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_ERROR_H
+#define VIEW_ERROR_H
+
+#include "View.hpp"
+#include "ErrorType.hpp"
+#include <string>
+
+class ViewError : public View
+{
+public:
+    ViewError(ErrorType errorType = ErrorType::RESETABLE);
+    ~ViewError() = default;
+    ViewError(const ViewError &) = delete;
+    ViewError& operator=(const ViewError &) = delete;
+    ViewError(ViewError &&) = default;
+    ViewError& operator=(ViewError &&) = default;
+    
+    virtual void show() override;
+    virtual void hide() override;
+private:
+    ErrorType _errorType;
+    
+    static const std::string VIEW_ERROR_EDJE_FILE;
+    
+    static const std::string VIEW_ERROR_SKIP_TEXT_KEY;
+    static const std::string VIEW_ERROR_RESETABLE_MAIN_TEXT_KEY;
+    static const std::string VIEW_ERROR_UNRECOVERABLE_MAIN_TEXT_KEY;
+    static const std::string VIEW_ERROR_RESETABLE_TEXT_KEY;
+    static const std::string VIEW_ERROR_UNRECOVERABLE_TEXT_KEY;
+};
+
+#endif //VIEW_SUCCESS_H 
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/views/ViewPin.hpp b/oobe-easy-setup/inc/views/ViewPin.hpp
new file mode 100644 (file)
index 0000000..1cc913d
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_PIN_H
+#define VIEW_PIN_H
+
+#include "View.hpp"
+#include <string>
+
+class ViewPin : public View
+{
+public:
+    ViewPin(const std::string &pin = "");
+    ~ViewPin() = default;
+    ViewPin(const ViewPin &) = delete;
+    ViewPin& operator=(const ViewPin &) = delete;
+    ViewPin(ViewPin &&) = default;
+    ViewPin& operator=(ViewPin &&) = default;
+    virtual void show() override;
+    virtual void hide() override;
+private:
+    std::string _pin;
+    static const std::string VIEW_PIN_EDJE_FILE;
+    void _setPinOnView();
+    void _setPinOnView(const std::string & pin);
+    Evas_Object *_layout;
+
+    static const std::string VIEW_PIN_TEXT_KEY;
+    static const std::string VIEW_PIN_SKIP_TEXT_KEY;
+};
+
+#endif //VIEW_PIN_H 
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/views/ViewStart.hpp b/oobe-easy-setup/inc/views/ViewStart.hpp
new file mode 100644 (file)
index 0000000..95f8ec0
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_START_H
+#define VIEW_START_H
+
+#include "View.hpp"
+#include <string>
+
+class ViewStart : public View
+{
+public:
+    ViewStart() = default;
+    ~ViewStart() = default;
+    ViewStart(const ViewStart &) = delete;
+    ViewStart& operator=(const ViewStart &) = delete;
+    ViewStart(ViewStart &&) = default;
+    ViewStart& operator=(ViewStart &&) = default;
+    virtual void show() override;
+    virtual void hide() override;
+private:
+    static const std::string VIEW_START_EDJE_FILE;
+
+    static const std::string VIEW_START_SKIP_TEXT_KEY;
+    static const std::string VIEW_START_START_TEXT_KEY;
+    static const std::string VIEW_START_TEXT_KEY;
+};
+
+#endif //VIEW_START_H 
\ No newline at end of file
diff --git a/oobe-easy-setup/inc/views/ViewSuccess.hpp b/oobe-easy-setup/inc/views/ViewSuccess.hpp
new file mode 100644 (file)
index 0000000..d7a5d89
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 VIEW_SUCCESS_H
+#define VIEW_SUCCESS_H
+
+#include "View.hpp"
+#include <string>
+
+class ViewSuccess : public View
+{
+public:
+    ViewSuccess(bool fullDone = false);
+    ~ViewSuccess() = default;
+    ViewSuccess(const ViewSuccess &) = delete;
+    ViewSuccess& operator=(const ViewSuccess &) = delete;
+    ViewSuccess(ViewSuccess &&) = default;
+    ViewSuccess& operator=(ViewSuccess &&) = default;
+    
+    virtual void show() override;
+    virtual void hide() override;
+private:
+    bool _fullDone;
+    static const std::string VIEW_SUCCESS_EDJE_FILE;
+
+    static const std::string VIEW_SUCCESS_DONE_TEXT_KEY;
+    static const std::string VIEW_SUCCESS_MAIN_LOGGED_TEXT_KEY;
+    static const std::string VIEW_SUCCESS_MAIN_NOT_LOGGED_TEXT_KEY;
+};
+
+#endif //VIEW_SUCCESS_H 
\ No newline at end of file
diff --git a/oobe-easy-setup/lib/libst_thing_master_api.so b/oobe-easy-setup/lib/libst_thing_master_api.so
new file mode 100644 (file)
index 0000000..aef594a
Binary files /dev/null and b/oobe-easy-setup/lib/libst_thing_master_api.so differ
diff --git a/oobe-easy-setup/project_def.prop b/oobe-easy-setup/project_def.prop
new file mode 100644 (file)
index 0000000..223ce48
--- /dev/null
@@ -0,0 +1,11 @@
+APPNAME = oobe-easy-setup
+
+type = app
+profile = iot-headed-5.0
+
+USER_SRCS = src/**.cpp ses-cpp/src/**.cpp api-cpp/src/**.cpp
+USER_DEFS =
+USER_INC_DIRS = inc api-cpp/src ses-cpp/src
+USER_OBJS =
+USER_LIBS = st_thing_master_api samsung_account
+USER_EDCS = res/edje/*.edc
\ No newline at end of file
diff --git a/oobe-easy-setup/res/edje/advertisement.edc b/oobe-easy-setup/res/edje/advertisement.edc
new file mode 100644 (file)
index 0000000..76d02cd
--- /dev/null
@@ -0,0 +1,51 @@
+#include "common_definitions.h"
+
+#define ANIMATION_DURATION 3.0
+
+collections {
+   base_scale: 1.8;
+   images {
+      image: RECT_IMAGE COMP;
+      image: BG_IMAGE COMP;
+      image: TRIANGLE_IMAGE COMP;
+      image: PHONE_IMAGE_LEFT COMP;
+         image: APP_STORES_IMAGE COMP;
+         image: SMARTTHINGS_LOGO_IMAGE COMP;
+   }
+
+   fonts {
+      font: SAMSUNG_ONE_400_PATH SAMSUNG_ONE_400;
+   }
+
+   styles { 
+          MAIN_STYLE("main_style")
+   }
+
+       group { GRP_MAIN;
+               parts {
+                       PART_BG
+                       PART_PHONE_LEFT
+                       PART_SMARTTHINGS
+                       PART_BUBBLE(ADVERTISEMENT_TEXT, ADVERTISEMENT_BUBBLE_RECT, ADVERTISEMENT_BUBBLE_TRIANGLE)
+                       PART_BUBBLE_TEXT(ADVERTISEMENT_TEXT, ADVERTISEMENT_BUBBLE_RECT, "main_style", 596, 400, 550) 
+
+                       PART_BUTTON_SKIP(ADVERTISEMENT_SKIP_PLACEHOLDER)
+               }
+
+               programs {
+                       program {
+               name: "load";
+               signal: "load";
+               source: "";
+                               sequence {
+                                       action: STATE_SET "upper";
+                                       target: "phone";
+
+                                       action: STATE_SET "default";
+                                       target: "phone";
+                                       transition: LINEAR ANIMATION_DURATION;
+                               }
+                       }
+               }
+       }
+}
diff --git a/oobe-easy-setup/res/edje/auto_configuration.edc b/oobe-easy-setup/res/edje/auto_configuration.edc
new file mode 100644 (file)
index 0000000..809088b
--- /dev/null
@@ -0,0 +1,37 @@
+#include "common_definitions.h"
+
+collections {
+   base_scale: 1.8;
+   images {
+      image: RECT_IMAGE COMP;
+      image: BG_IMAGE COMP;
+      image: TRIANGLE_IMAGE COMP;
+      image: PHONE_IMAGE_RIGHT COMP;
+      image: APP_STORES_IMAGE COMP;
+      image: SMARTTHINGS_LOGO_IMAGE COMP;
+   }
+
+   fonts {
+      font: SAMSUNG_ONE_400_PATH SAMSUNG_ONE_400;
+   }
+
+   styles { 
+      style { 
+         name: "main_style";
+         base: "font="SAMSUNG_ONE_400" font_size=35 color=#F3F9EF wrap=mixed align=left valign=center linegap=0";
+         tag: "b" "+ font_weight=Bold";
+      }
+   }
+
+       group { GRP_MAIN;
+               parts {
+                       PART_BG
+                       PART_PHONE_RIGHT
+                       PART_SMARTTHINGS
+                       PART_BUBBLE(AUTO_CONFIGURATION_TEXT, AUTO_CONFIGURATION_BUBBLE_RECT, AUTO_CONFIGURATION_BUBBLE_TRIANGLE)
+                       PART_BUBBLE_TEXT(AUTO_CONFIGURATION_TEXT, AUTO_CONFIGURATION_BUBBLE_RECT, "main_style", 596, 400, 550)
+
+                       PART_BUTTON_SKIP(AUTO_CONFIGURATION_SKIP_PLACEHOLDER)
+               }
+       }
+}
diff --git a/oobe-easy-setup/res/edje/common_definitions.h b/oobe-easy-setup/res/edje/common_definitions.h
new file mode 100644 (file)
index 0000000..def9e5d
--- /dev/null
@@ -0,0 +1,187 @@
+#define START_START_PLACEHOLDER "btn.start.placeholder"
+#define START_SKIP_PLACEHOLDER "btn.skip.placeholder"
+#define START_TEXT "bubble_text"
+#define START_BUBBLE_RECT "bubble_rect"
+#define START_BUBBLE_TRIANGLE "bubble_triangle"
+#define ADVERTISEMENT_SKIP_PLACEHOLDER "btn.skip.placeholder"
+#define ADVERTISEMENT_TEXT "bubble_text"
+#define ADVERTISEMENT_BUBBLE_RECT "bubble_rect"
+#define ADVERTISEMENT_BUBBLE_TRIANGLE "bubble_traingle"
+#define CONNECTED_TO_SOFTAP_SKIP_PLACEHOLDER "btn.skip.placeholder"
+#define CONNECTED_TO_SOFTAP_TEXT "bubble_text"
+#define CONNECTED_TO_SOFTAP_TEXT_IND "text_anim_ind"
+#define CONNECTED_TO_SOFTAP_TEXT0 "text_anim0"
+#define CONNECTED_TO_SOFTAP_TEXT1 "text_anim1"
+#define CONNECTED_TO_SOFTAP_TEXT2 "text_anim2"
+#define CONNECTED_TO_SOFTAP_TEXT3 "text_anim3"
+#define CONNECTED_TO_SOFTAP_BUBBLE_RECT "bubble_rect"
+#define CONNECTED_TO_SOFTAP_BUBBLE_TRIANGLE "bubble_triangle"
+#define PIN_SKIP_PLACEHOLDER "btn.skip.placeholder"
+#define PIN_PIN_TEXT1 "text.pin.1"
+#define PIN_PIN_TEXT2 "text.pin.2"
+#define PIN_PIN_TEXT3 "text.pin.3"
+#define PIN_PIN_TEXT4 "text.pin.4"
+#define PIN_PIN_TEXT5 "text.pin.5"
+#define PIN_PIN_TEXT6 "text.pin.6"
+#define PIN_PIN_TEXT7 "text.pin.7"
+#define PIN_PIN_TEXT8 "text.pin.8"
+#define PIN_TEXT "bubble_text"
+#define PIN_BUBBLE_RECT "bubble_rect"
+#define PIN_BUBBLE_TRIANGLE "bubble_triangle"
+#define AUTO_CONFIGURATION_SKIP_PLACEHOLDER "btn.skip.placeholder"
+#define AUTO_CONFIGURATION_TEXT "bubble_text"
+#define AUTO_CONFIGURATION_BUBBLE_RECT "bubble_rect"
+#define AUTO_CONFIGURATION_BUBBLE_TRIANGLE "bubble_triangle"
+#define ERROR_MAIN_BUTTON_PLACEHOLDER "btn.main.placeholder"
+#define ERROR_EXTRA_BUTTON_PLACEHOLDER "btn.extra.placeholder"
+#define ERROR_TEXT "text"
+#define SKIP_POPUP_YES_PLACEHOLDER "btn.yes.placeholder"
+#define SKIP_POPUP_NO_PLACEHOLDER "btn.no.placeholder"
+
+#define SAMSUNG_ONE_300_PATH "SamsungOneUI-300_v1.0.ttf"
+#define SAMSUNG_ONE_300 "samsung-one-300"
+#define SAMSUNG_ONE_400_PATH "SamsungOneUI-400_v3.0.ttf"
+#define SAMSUNG_ONE_400 "samsung-one-400"
+#define SAMSUNG_ONE_400C_PATH "SamsungOneUI-400C_v1.0.ttf"
+#define SAMSUNG_ONE_400C "samsung-one-400c"
+#define SAMSUNG_ONE_600_PATH "SamsungOneUI-600_v3.0.ttf"
+#define SAMSUNG_ONE_600 "samsung-one-600"
+#define SAMSUNG_ONE_800_PATH "SamsungOneUI-800_v1.0.ttf"
+#define SAMSUNG_ONE_800 "samsung-one-800"
+
+#define BG_IMAGE "bg.png"
+#define PHONE_IMAGE_LEFT "es/phone_image_left.png"
+#define PHONE_IMAGE_RIGHT "es/phone_image_right.png"
+#define SMARTTHINGS_LOGO_IMAGE "es/smartthings_logo.png"
+#define TRIANGLE_IMAGE "es/bubble_triangle.png"
+#define RECT_IMAGE "es/rect100x100.png"
+#define CIRCLE_IMAGE "es/puls_circle.png"
+#define ICON_IMAGE "es/icon_phone.png"
+
+#define GRP_MAIN "main"
+
+#define COLOR_DARK_GREY 19 64 54 255
+#define COLOR_GREEN 16 27 2 255
+#define COLOR_QUASI_WHITE 243 249 239 255
+#define COLOR_WHITE 255 255 255 255
+
+#define MAX_TEXTBLOCK_HEIGHT 500
+#define CALC_Y_TEXTBLOCK_START(Y_CENTER) (Y_CENTER - MAX_TEXTBLOCK_HEIGHT/2)
+#define CALC_Y_TEXTBLOCK_END(Y_CENTER) (Y_CENTER + MAX_TEXTBLOCK_HEIGHT/2)
+
+#define TEXT_COLOR COLOR_QUASI_WHITE
+#define TEXT_SIZE 35
+
+#define BUBBLE_COLOR COLOR_DARK_GREY
+
+#define MAIN_STYLE(NAME)                                                                       \
+       style {                                                                                                 \
+        name: NAME;                                                                                    \
+        base: "font=samsung-one-400 font_size=35 color=#F3F9EF wrap=mixed align=left valign=0 linegap=0";\
+        tag: "b" "+ font_weight=Bold";                                         \
+    }
+
+#define PART_BG                                                                                                \
+       image { "bg";                                                                                   \
+               description { "default";                                                        \
+                       rel1.relative: 0/1280 0/720;                                    \
+                       rel2.relative: (1280-254)/1280 720/720;                 \
+                       image.normal: BG_IMAGE;                                                 \
+                       image.middle: DEFAULT;                                                  \
+               }                                                                                                       \
+       }
+
+#define PART_PHONE_LEFT                                                                                \
+       image { "phone";                                                                                \
+               description { "default";                                                        \
+                       rel1.relative: 84/1280 130/720;                                 \
+                       rel2.relative: (84+468)/1280 (130+479)/720;             \
+                       image.normal: PHONE_IMAGE_LEFT;                                 \
+                       image.middle: DEFAULT;                                                  \
+               }                                                                                                       \
+               description { "upper"                                                           \
+                       inherit: "default";                                                             \
+                       rel1.relative: 84/1280 87/720;                                  \
+                       rel2.relative: (84+468)/1280 (87+479)/720;              \
+               }                                                                                                       \
+       }                                                                                                               \
+       
+
+#define PART_PHONE_RIGHT                                                                       \
+       image { "phone";                                                                                \
+               description { "default";                                                        \
+                       rel1.relative: 84/1280 130/720;                                 \
+                       rel2.relative: (84+468)/1280 (130+479)/720;             \
+                       image.normal: PHONE_IMAGE_RIGHT;                                \
+                       image.middle: DEFAULT;                                                  \
+               }                                                                                                       \
+               description { "upper"                                                           \
+                       inherit: "default";                                                             \
+                       rel1.relative: 84/1280 87/720;                                  \
+                       rel2.relative: (84+468)/1280 (87+479)/720;              \
+               }                                                                                                       \
+       }
+
+#define PART_SMARTTHINGS                                                                       \
+       image { "smartthings_logo";                                                     \
+               description { "default";                                                        \
+                       rel.to: "phone";                                                                \
+                       rel1.relative: 206/468 66/479;                                  \
+                       rel2.relative: (206+140)/468 (66+309)/479;              \
+                       image.normal: SMARTTHINGS_LOGO_IMAGE;                   \
+                       image.middle: DEFAULT;                                                  \
+               }                                                                                                       \
+       }
+
+#define PART_BUBBLE_TEXT(TEXT_PART, BUBBLE_RECT_PART, STYLE, X, Y_CENTER, WIDTH)\
+       textblock { TEXT_PART;                                                                  \
+               mouse_events: 0;                                                                        \
+               multiline: 1;                                                                           \
+               description { "default";                                                        \
+                       rel1.relative: X/1280 CALC_Y_TEXTBLOCK_START(Y_CENTER)/720;     \
+                       rel2.relative: (X+WIDTH)/1280 CALC_Y_TEXTBLOCK_END(Y_CENTER)/720; \
+                       align: 0.0 0.5;                                                                 \
+                       color: TEXT_COLOR;                                                              \
+                       text {                                                                                  \
+                               text: "?";                                                                      \
+                               elipsis: -1;                                                            \
+                               align: 0.0 0.5;                                                         \
+                               max: 1 1;                                                                       \
+                               style: STYLE;                                                           \
+                       }                                                                                               \
+               }                                                                                                       \
+       }
+
+#define PART_BUBBLE(TEXT_PART, BUBBLE_RECT_PART, BUBBLE_TRIANGLE_PART)\
+       image { BUBBLE_RECT_PART;                                                               \
+               description { "default";                                                        \
+                       rel.to: TEXT_PART;                                                              \
+                       rel1.offset: -20 -10;                                                   \
+                       rel2.offset: 20 10;                                                             \
+                       image.normal: RECT_IMAGE;                                               \
+                       image.middle: DEFAULT;                                                  \
+                       image.border: 3 3 3 3;                                                  \
+                       color: BUBBLE_COLOR;                                                    \
+               }                                                                                                       \
+       }                                                                                                               \
+       image { BUBBLE_TRIANGLE_PART;                                                   \
+               description { "default";                                                        \
+                       rel.to: BUBBLE_RECT_PART;                                               \
+                       rel1.offset: -26 0;                                                             \
+                       min: 27 27;                                                                             \
+                       max: 27 27;                                                                             \
+                       align: 0 0.5;                                                                   \
+                       image.normal: TRIANGLE_IMAGE;                                   \
+                       image.middle: DEFAULT;                                                  \
+                       color: BUBBLE_COLOR;                                                    \
+               }                                                                                                       \
+       }
+
+#define PART_BUTTON_SKIP(NAME)                                                         \
+       swallow { NAME;                                                                                 \
+               mouse_events: 1;                                                                        \
+               description { "default";                                                        \
+                       rel1.relative: 1072/1280 38/720;                                \
+                       rel2.relative: (1280-35)/1280 (720-622)/720;    \
+               }                                                                                                       \
+       }
diff --git a/oobe-easy-setup/res/edje/connected_to_softap.edc b/oobe-easy-setup/res/edje/connected_to_softap.edc
new file mode 100644 (file)
index 0000000..e890ee1
--- /dev/null
@@ -0,0 +1,124 @@
+#include "common_definitions.h"
+
+#define TEXT_TEXT0 "Connecting   "
+#define TEXT_TEXT1 "Connecting.  "
+#define TEXT_TEXT2 "Connecting.. "
+#define TEXT_TEXT3 "Connecting..."
+
+#define TEXT_ANIMATION_TIME 1.0
+#define TEXT_ANIMATION_FRAME_TIME (TEXT_ANIMATION_TIME/4)
+
+#define PULSAR_ANIMATION_TIME 1.0
+#define PULSAR_ANIMATION_FRAME_TIME (PULSAR_ANIMATION_TIME/2)
+
+#define TEXT_BUF_SIZE 1024
+
+collections {
+   base_scale: 1.8;
+   images {
+      image: RECT_IMAGE COMP;
+      image: BG_IMAGE COMP;
+      image: TRIANGLE_IMAGE COMP;
+               image: PHONE_IMAGE_LEFT COMP;
+               image: APP_STORES_IMAGE COMP;
+               image: SMARTTHINGS_LOGO_IMAGE COMP;
+      image: CIRCLE_IMAGE COMP;
+      image: ICON_IMAGE COMP;
+   }
+
+   fonts {
+      font: SAMSUNG_ONE_400_PATH SAMSUNG_ONE_400;
+   }
+
+   styles { 
+          MAIN_STYLE("main_style")
+   }
+
+       group { GRP_MAIN;
+               parts {
+                       PART_BG
+                       PART_PHONE_LEFT
+
+                       image { "pulsar";
+                               description { "default";
+                                       rel.to: "icon";
+                                       image.normal: CIRCLE_IMAGE;
+                                       image.middle: DEFAULT;
+                               }
+                               description { "clutched";
+                                       inherit: "default";
+                                       rel1.offset: -19 -19;
+                                       rel2.offset: 19 19;
+                               }
+                       }
+
+                       image { "icon";
+                               description { "default";
+                                       rel1.relative: 337/1280 253/720;
+                                       rel2.relative: (337+50)/1280 (253+50)/720;
+                                       image.normal: ICON_IMAGE;
+                                       image.middle: DEFAULT;
+                               }
+                       }
+
+                       PART_BUBBLE(CONNECTED_TO_SOFTAP_TEXT, CONNECTED_TO_SOFTAP_BUBBLE_RECT, CONNECTED_TO_SOFTAP_BUBBLE_TRIANGLE)
+                       PART_BUBBLE_TEXT(CONNECTED_TO_SOFTAP_TEXT, CONNECTED_TO_SOFTAP_BUBBLE_RECT, "main_style", 596, 400, 550) 
+
+                       PART_BUTTON_SKIP(CONNECTED_TO_SOFTAP_SKIP_PLACEHOLDER)
+               }
+
+      programs {
+         program {
+            name: "load";
+            signal: "load";
+            source: "";
+            sequence {
+               action: SIGNAL_EMIT "text_anim" "";
+               action: SIGNAL_EMIT "pulsar_anim" "";
+            }
+         }
+
+         /*program { "text_animator";
+            signal: "text_anim";
+            source: "";
+
+            sequence {
+               action: TEXT_SET ;
+               target: CONNECTED_TO_SOFTAP_TEXT;
+               transition: LINEAR TEXT_ANIMATION_FRAME_TIME;
+
+               action: TEXT_SET "text1";
+               target: CONNECTED_TO_SOFTAP_TEXT;
+               transition: LINEAR TEXT_ANIMATION_FRAME_TIME;
+
+               action: TEXT_SET "text2";
+               target: CONNECTED_TO_SOFTAP_TEXT;
+               transition: LINEAR TEXT_ANIMATION_FRAME_TIME;
+
+               action: TEXT_SET "text3";
+               target: CONNECTED_TO_SOFTAP_TEXT;
+               transition: LINEAR TEXT_ANIMATION_FRAME_TIME;
+
+               action: SIGNAL_EMIT "text_anim" "";
+            }
+         }*/
+
+         program { "pulsar_animator";
+            signal: "pulsar_anim";
+            source: "";
+
+            sequence {
+               action: STATE_SET "default";
+               target: "pulsar";
+               transition: LINEAR PULSAR_ANIMATION_FRAME_TIME;
+
+               action: STATE_SET "clutched";
+               target: "pulsar";
+               transition: LINEAR PULSAR_ANIMATION_FRAME_TIME;
+
+               action: SIGNAL_EMIT "pulsar_anim" "";
+            }
+         }
+      }
+   }
+}
diff --git a/oobe-easy-setup/res/edje/error.edc b/oobe-easy-setup/res/edje/error.edc
new file mode 100644 (file)
index 0000000..9a47b8e
--- /dev/null
@@ -0,0 +1,59 @@
+#include "common_definitions.h"
+
+#define GEARS_IMAGE "es/gears.png"
+
+collections {
+    base_scale: 1.8;
+    
+    images {
+        image: BG_IMAGE COMP;
+               image: GEARS_IMAGE COMP;
+    }
+
+    styles { 
+               style {
+                   name: "error_style";
+                       base: "font=samsung-one-400 font_size=36 color=#102502 wrap=mixed align=center valign=0 linegap=0";
+                   tag: "b" "+ font_weight=Bold";
+               }
+    }
+
+       group { GRP_MAIN;
+               parts {
+                       PART_BG
+
+                       image { "gears";
+                               description {
+                                       rel1.relative: 280/1280 76/720;
+                                       rel2.relative: (280+325)/1280 (76+295)/720;
+                                       image.normal: GEARS_IMAGE;
+                               }
+                       }
+
+                       textblock { ERROR_TEXT;
+                               multiline: 1;
+                               description { "default";
+                                       rel1.relative: 154/1280 400/720;
+                                       rel2.relative: (154+610)/1280 (400+100)/720;
+                                       align: 0.5 0.5;
+                                       text {
+                                               text: "?";
+                                               style: "error_style";
+                                               elipsis: -1;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+                       }
+
+                       swallow { ERROR_MAIN_BUTTON_PLACEHOLDER; 
+                               mouse_events: 1;
+                               description { "default";
+                                       rel1.relative: 169/1280 552/720;
+                                       rel2.relative: (1280-538)/1280 (720-108)/720;
+                               }
+                       }
+
+                       PART_BUTTON_SKIP(ERROR_EXTRA_BUTTON_PLACEHOLDER)
+        }
+    }
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/res/edje/oobe_button.edc b/oobe-easy-setup/res/edje/oobe_button.edc
new file mode 100644 (file)
index 0000000..1b7225f
--- /dev/null
@@ -0,0 +1 @@
+#include "../../../edje-common/oobe_button_definition.edc"
diff --git a/oobe-easy-setup/res/edje/pin.edc b/oobe-easy-setup/res/edje/pin.edc
new file mode 100644 (file)
index 0000000..f8454dc
--- /dev/null
@@ -0,0 +1,80 @@
+#include "common_definitions.h"
+
+#define PIN_SIZE 25
+
+#define PIN_COLOR COLOR_DARK_GREY
+
+#define PIN_DIGIT_WIDTH 15
+#define PIN_DIGIT_HEIGHT 30
+
+#define PIN_DIGIT_X 285
+#define PIN_DIGIT_Y 282
+#define PIN_DIGIT_SPACE 18
+
+#define PART_PIN(NAME, X, Y)           \
+       text { NAME;                                    \
+               description { "default";        \
+                       rel1.relative: X/1280 Y/720;                                                                                    \
+                       rel2.relative: (X+PIN_DIGIT_WIDTH)/1280 (Y+PIN_DIGIT_HEIGHT)/720;               \
+                       color: PIN_COLOR;                                                                                                               \
+                       align: 0.5 0.5;                                                                                                                 \
+                       text {\
+                               text: "?";\
+                               font: SAMSUNG_ONE_400;\
+                               size: PIN_SIZE;\
+                               align: 0.5 0.5;\
+                               ellipsis: -1;\
+                       }\
+               }\
+       }\
+       rect {\
+               description { "default";\
+                       rel.to: NAME;\
+                       rel1.relative: 0 1;\
+                       rel2.relative: 1 1;\
+                       min: PIN_DIGIT_WIDTH 2;\
+                       max: PIN_DIGIT_WIDTH 2;\
+                       color: 0 0 0 64;\
+               }\
+       }
+
+
+collections {
+       base_scale: 1.8;
+       images {
+               image: RECT_IMAGE COMP;
+               image: BG_IMAGE COMP;
+               image: TRIANGLE_IMAGE COMP;
+               image: PHONE_IMAGE_LEFT COMP;
+               image: APP_STORES_IMAGE COMP;
+               image: SMARTTHINGS_LOGO_IMAGE COMP;
+       }
+
+       fonts {
+               font: SAMSUNG_ONE_400_PATH SAMSUNG_ONE_400;
+       }
+
+       styles { 
+          MAIN_STYLE("main_style")
+       }
+
+       group { GRP_MAIN;
+               parts {
+                       PART_BG
+                       PART_PHONE_LEFT
+                       PART_BUBBLE(PIN_TEXT, PIN_BUBBLE_RECT, PIN_BUBBLE_TRIANGLE)
+                       PART_BUBBLE_TEXT(PIN_TEXT, PIN_BUBBLE_RECT, "main_style", 596, 400, 550) 
+
+                       PART_BUTTON_SKIP(PIN_SKIP_PLACEHOLDER)
+
+                       PART_PIN(PIN_PIN_TEXT1, PIN_DIGIT_X, PIN_DIGIT_Y)
+                       PART_PIN(PIN_PIN_TEXT2, (PIN_DIGIT_X + PIN_DIGIT_SPACE), PIN_DIGIT_Y)        
+                       PART_PIN(PIN_PIN_TEXT3, (PIN_DIGIT_X + 2*PIN_DIGIT_SPACE), PIN_DIGIT_Y)        
+                       PART_PIN(PIN_PIN_TEXT4, (PIN_DIGIT_X + 3*PIN_DIGIT_SPACE), PIN_DIGIT_Y)        
+                       PART_PIN(PIN_PIN_TEXT5, (PIN_DIGIT_X + 4*PIN_DIGIT_SPACE), PIN_DIGIT_Y)        
+                       PART_PIN(PIN_PIN_TEXT6, (PIN_DIGIT_X + 5*PIN_DIGIT_SPACE), PIN_DIGIT_Y)        
+                       PART_PIN(PIN_PIN_TEXT7, (PIN_DIGIT_X + 6*PIN_DIGIT_SPACE), PIN_DIGIT_Y)        
+                       PART_PIN(PIN_PIN_TEXT8, (PIN_DIGIT_X + 7*PIN_DIGIT_SPACE), PIN_DIGIT_Y)
+               }
+       }
+}
diff --git a/oobe-easy-setup/res/edje/start.edc b/oobe-easy-setup/res/edje/start.edc
new file mode 100644 (file)
index 0000000..239f600
--- /dev/null
@@ -0,0 +1,54 @@
+#include "common_definitions.h"
+
+collections {
+   base_scale: 1.8;
+   images {
+      image: RECT_IMAGE COMP;
+      image: BG_IMAGE COMP;
+      image: TRIANGLE_IMAGE COMP;
+      image: PHONE_IMAGE_LEFT COMP;
+      image: APP_STORES_IMAGE COMP;
+      image: SMARTTHINGS_LOGO_IMAGE COMP;
+   }
+
+   fonts {
+      font: SAMSUNG_ONE_400_PATH SAMSUNG_ONE_400;
+   }
+
+   styles { 
+          MAIN_STYLE("main_style")
+   }
+
+       group { GRP_MAIN;
+               parts {
+                       PART_BG
+                       PART_PHONE_LEFT
+                       PART_SMARTTHINGS
+                       PART_BUBBLE(START_TEXT, START_BUBBLE_RECT, START_BUBBLE_TRIANGLE)
+                       PART_BUBBLE_TEXT(START_TEXT, START_BUBBLE_RECT, "main_style", 596, 400, 550)
+
+                       swallow { START_START_PLACEHOLDER; 
+                               mouse_events: 1;
+                               description { "default";
+                                       min: 500 60;
+                                       max: 500 60;
+                                       align: 0 1;
+                                       rel1.offset: 100 0;
+                                       rel2.offset: 0 -48;
+                               }
+                       }
+
+                       PART_BUTTON_SKIP(START_SKIP_PLACEHOLDER)
+               }
+
+               programs {
+                       program {
+               name: "load";
+               signal: "load";
+               source: "";
+                               action: STATE_SET "upper";
+                               target: "phone";
+                       }
+               }
+       }
+}
diff --git a/oobe-easy-setup/res/po/en_US.po b/oobe-easy-setup/res/po/en_US.po
new file mode 100644 (file)
index 0000000..0226132
--- /dev/null
@@ -0,0 +1,57 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "ERROR_CONTENT_UNRECOVERABLE"
+msgstr "Error occured during EasySetup."
+
+msgid "ACTION_APPENDIX"
+msgstr "..."
+
+msgid "SKIP_CONTENT"
+msgstr "<font_size=24 color=#102502 font=SamsungOne align=center valign=center>Are You sure You want to leave EasySetup?</font>"
+
+msgid "ERROR_CONTENT_RESETABLE"
+msgstr "Something went wrong - do You want to restart EasySetup?"
+
+msgid "AUTO_CONFIGURATION_CONTENT"
+msgstr "Follow instructions on Your mobile."
+
+msgid "PIN_CONTENT"
+msgstr "Enter following PIN on Your mobile app."
+
+msgid "CONNECTED_TO_SOFTAP_CONTENT"
+msgstr "Connecting..."
+
+msgid "ADVERTISEMENT_CONTENT"
+msgstr "Find Your device on ST app."
+
+msgid "START_CONTENT"
+msgstr "Download the <b>SmartThings app</b> on Your mobile and press start (or skip to manual setup). "
+
+msgid "LOGIN_TO_SAMSUNG_ACCOUNT"
+msgstr "Login to Samsung Account"
+
+msgid "CONNECTING"
+msgstr "Connecting"
+
+msgid "DONE"
+msgstr "DONE"
+
+msgid "START"
+msgstr "START"
+
+msgid "RETRY"
+msgstr "RETRY"
+
+msgid "SKIP"
+msgstr "SKIP"
+
+msgid "NO"
+msgstr "NO"
+
+msgid "YES"
+msgstr "YES"
+
+msgid "OK"
+msgstr "OK"
+
diff --git a/oobe-easy-setup/res/po/pl_PL.po b/oobe-easy-setup/res/po/pl_PL.po
new file mode 100644 (file)
index 0000000..cf25b7f
--- /dev/null
@@ -0,0 +1,54 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "ERROR_CONTENT_UNRECOVERABLE"
+msgstr "Wystąpił bład podczas działania EasySetupu."
+
+msgid "ACTION_APPENDIX"
+msgstr "..."
+
+msgid "SKIP_CONTENT"
+msgstr "<font_size=24 color=#102502 font=SamsungOne align=center valign=center>Jesteś pewien, że chcesz opuścić EasySetup?</font>"
+
+msgid "ERROR_CONTENT_RESETABLE"
+msgstr "Coś poszło nie tak - czy chcesz zrestartować EasySetup?"
+
+msgid "AUTO_CONFIGURATION_CONTENT"
+msgstr "Postępuj zgodnie z instrukcjami na urządzeniu mobilnym."
+
+msgid "PIN_CONTENT"
+msgstr "Wprowadź PIN na Twoim urządzeniu mobilnym."
+
+msgid "CONNECTED_TO_SOFTAP_CONTENT"
+msgstr "Łączenie..."
+
+msgid "ADVERTISEMENT_CONTENT"
+msgstr "Znajdź swoje urządzenie w aplikacji ST."
+
+msgid "START_CONTENT"
+msgstr "Pobierz <b>aplikację SmartThings</b> na Twoje urządzenie mobilne i naciśnij start (lub pomiń, by skonfigurować ręcznie)."
+
+msgid "LOGIN_TO_SAMSUNG_ACCOUNT"
+msgstr "Zaloguj do konta Samsung"
+
+msgid "DONE"
+msgstr "ZAKOŃCZ"
+
+msgid "START"
+msgstr "START"
+
+msgid "RETRY"
+msgstr "PONÓW"
+
+msgid "SKIP"
+msgstr "POMIŃ"
+
+msgid "NO"
+msgstr "NIE"
+
+msgid "YES"
+msgstr "TAK"
+
+msgid "OK"
+msgstr "OK"
+
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApInfo.cpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApInfo.cpp
new file mode 100644 (file)
index 0000000..80093f6
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "ses/smartthings/thing/ApInfo.hpp"
+#include "tizen/Strings.hpp"
+#include "tizen/Logger.hpp"
+#include "tizen/Error.hpp"
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+    ApInfo::ApInfo(smartthings_ap_info_h handle) : _handle(handle)
+    {
+    }
+
+    tizen::ApiResult<std::string> ApInfo::getSsid()
+    {
+        char *ssid;
+        int res = smartthings_apinfo_get_ssid(_handle, &ssid);
+        if(res != SMARTTHINGS_ERROR_NONE)
+        {
+            return tizen::ApiResult<std::string>::Error(res);
+        }
+        return tizen::ApiResult<std::string>::Ok(tizen::wrapMallocString(ssid));
+    }
+
+    tizen::ApiResult<std::string> ApInfo::getPassword()
+    {
+        char *ssid;
+        int res = smartthings_apinfo_get_ssid(_handle, &ssid);
+        if(res != SMARTTHINGS_ERROR_NONE)
+        {
+            return tizen::ApiResult<std::string>::Error(res);
+        }
+        return tizen::ApiResult<std::string>::Ok(tizen::wrapMallocString(ssid));
+    }
+
+    tizen::ApiResult<smartthings_wifi_authtype_e> ApInfo::getAuthtype()
+    {
+        smartthings_wifi_authtype_e authtype;
+        int res = smartthings_apinfo_get_authtype(_handle, &authtype);
+        if(res != SMARTTHINGS_ERROR_NONE)
+        {
+            return tizen::ApiResult<smartthings_wifi_authtype_e>::Error(res);
+        }
+        return tizen::ApiResult<smartthings_wifi_authtype_e>::Ok(authtype);
+    }
+
+    tizen::ApiResult<smartthings_wifi_enctype_e> ApInfo::getEnctype()
+    {
+        smartthings_wifi_enctype_e enctype;
+        int res = smartthings_apinfo_get_enctype(_handle, &enctype);
+        if(res != SMARTTHINGS_ERROR_NONE)
+        {
+            return tizen::ApiResult<smartthings_wifi_enctype_e>::Error(res);
+        }
+        return tizen::ApiResult<smartthings_wifi_enctype_e>::Ok(enctype);
+    }
+
+    tizen::ApiResult<int> ApInfo::getChannel()
+    {
+        int channel;
+        int res = smartthings_apinfo_get_channel(_handle, &channel);
+        if(res != SMARTTHINGS_ERROR_NONE)
+        {
+            return tizen::ApiResult<int>::Error(res);
+        }
+        return tizen::ApiResult<int>::Ok(channel);
+    }
+
+} // thing
+} // smartthings
+} // ses
\ No newline at end of file
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApInfo.hpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApInfo.hpp
new file mode 100644 (file)
index 0000000..9aba6c2
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SMARTTHINGS_AP_INFO_H
+#define SMARTTHINGS_AP_INFO_H
+
+#include "tizen/ApiResult.hpp"
+#include "smartthings.h"
+#include <string>
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+class ApInfo
+{
+friend class Master;
+public:
+    ApInfo() = delete;
+    ApInfo(const ApInfo&) = delete;
+    ApInfo& operator=(const ApInfo&) = delete;
+
+    ApInfo(const ApInfo&&) = delete;
+    ApInfo& operator=(const ApInfo&&) = delete;
+
+    tizen::ApiResult<std::string> getSsid();
+    tizen::ApiResult<std::string> getPassword();
+    tizen::ApiResult<smartthings_wifi_authtype_e> getAuthtype();
+    tizen::ApiResult<smartthings_wifi_enctype_e> getEnctype();
+    tizen::ApiResult<int> getChannel();
+private:
+    ApInfo(smartthings_ap_info_h handle);
+    smartthings_ap_info_h _handle;
+};
+
+} // thing
+} // smartthings
+} // ses
+
+#endif //SMARTTHINGS_AP_INFO_H
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApList.cpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApList.cpp
new file mode 100644 (file)
index 0000000..d88d7be
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "ses/smartthings/thing/ApList.hpp"
+#include "ses/smartthings/thing/SmartThingsThingExceptions.hpp"
+#include "tizen/Logger.hpp"
+#include "tizen/Error.hpp"
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+ApList::ApList(unsigned int count)
+{
+    int res = smartthings_aplist_create(&_handle, count);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        throw SmartThingsThingException(res);
+    }
+}
+
+ApList::~ApList()
+{
+    int res = smartthings_aplist_destroy(_handle);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        tizen::logger::Err("Failed to destroy aplist: %s", tizen::Error(res).message());
+    }
+}
+
+tizen::ApiResult<void> ApList::setSsid(int idx, const std::string & ssid)
+{
+    int res = smartthings_aplist_set_ssid(_handle, idx, ssid.c_str());
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> ApList::setBssid(int idx, const std::string & bssid)
+{
+    int res = smartthings_aplist_set_bssid(_handle, idx, bssid.c_str());
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> ApList::setAuthType(int idx, smartthings_wifi_authtype_e authtype)
+{
+    int res = smartthings_aplist_set_authtype(_handle, idx, authtype);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> ApList::setEncType(int idx, smartthings_wifi_enctype_e enctype)
+{
+    int res = smartthings_aplist_set_enctype(_handle, idx, enctype);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> ApList::setChannel(int idx, int channel)
+{
+    int res = smartthings_aplist_set_channel(_handle, idx, channel);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> ApList::setMaxRate(int idx, int maxRate)
+{
+    int res = smartthings_aplist_set_signal_level(_handle, idx, maxRate);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+} // thing
+} // smartthings
+} // ses
\ No newline at end of file
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApList.hpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/ApList.hpp
new file mode 100644 (file)
index 0000000..d7fefc8
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SMARTTHINGS_AP_LIST_H
+#define SMARTTHINGS_AP_LIST_H
+
+#include "tizen/ApiResult.hpp"
+#include "smartthings.h"
+#include <string>
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+class ApList
+{
+friend class Master;
+public:
+    ApList(unsigned int count);
+    ~ApList();
+
+    ApList() = delete;
+    ApList(const ApList&) = delete;
+    ApList& operator=(const ApList&) = delete;
+
+    ApList(const ApList&&) = delete;
+    ApList& operator=(const ApList&&) = delete;
+
+    tizen::ApiResult<void> setSsid(int idx, const std::string & ssid);
+    tizen::ApiResult<void> setBssid(int idx, const std::string & bssid);
+    tizen::ApiResult<void> setAuthType(int idx, smartthings_wifi_authtype_e authtype);
+    tizen::ApiResult<void> setEncType(int idx, smartthings_wifi_enctype_e enctype);
+    tizen::ApiResult<void> setChannel(int idx, int channel);
+    tizen::ApiResult<void> setSignalLevel(int idx, int signalLevel);
+    tizen::ApiResult<void> setMaxRate(int idx, int maxRate);
+private:
+    smartthings_ap_list_h _handle;
+};
+
+} // thing
+} // smartthings
+} // ses
+
+#endif //SMARTTHING_AP_LIST_H
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/CloudInfo.cpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/CloudInfo.cpp
new file mode 100644 (file)
index 0000000..72e490f
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "ses/smartthings/thing/CloudInfo.hpp"
+#include "ses/smartthings/thing/SmartThingsThingExceptions.hpp"
+#include "tizen/Logger.hpp"
+#include "tizen/Error.hpp"
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+CloudInfo::CloudInfo()
+{
+    int res = smartthings_cloudinfo_create(&_handle);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        throw SmartThingsThingException(res);
+    }
+}
+
+CloudInfo::~CloudInfo()
+{
+    smartthings_cloudinfo_destroy(_handle);
+}
+
+tizen::ApiResult<void> CloudInfo::setRegion(const std::string & region)
+{
+    int res = smartthings_cloudinfo_set_region(_handle, region.c_str());
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> CloudInfo::setAuthProvider(const std::string & authProvider)
+{
+    int res = smartthings_cloudinfo_set_region(_handle, authProvider.c_str());
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> CloudInfo::setAccessToken(const std::string & accessToken)
+{
+    int res = smartthings_cloudinfo_set_region(_handle, accessToken.c_str());
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> CloudInfo::setRefreshToken(const std::string & refreshToken)
+{
+    int res = smartthings_cloudinfo_set_refresh_token(_handle, refreshToken.c_str());
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> CloudInfo::setUserId(const std::string & userId)
+{
+    int res = smartthings_cloudinfo_set_user_id(_handle, userId.c_str());
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> CloudInfo::setClientId(const std::string & clientId)
+{
+    int res = smartthings_cloudinfo_set_client_id(_handle, clientId.c_str());
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+} // thing
+} // smartthings
+} // ses
\ No newline at end of file
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/CloudInfo.hpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/CloudInfo.hpp
new file mode 100644 (file)
index 0000000..8ce9f0c
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SMARTTHING_CLOUD_INFO_H
+#define SMARTTHING_CLOUD_INFO_H
+
+#include "tizen/ApiResult.hpp"
+#include "smartthings.h"
+#include <string>
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+class CloudInfo
+{
+friend class Master;
+public:
+    CloudInfo();
+    ~CloudInfo();
+
+    CloudInfo(const CloudInfo&) = delete;
+    CloudInfo& operator=(const CloudInfo&) = delete;
+
+    CloudInfo(const CloudInfo&&) = delete;
+    CloudInfo& operator=(const CloudInfo&&) = delete;
+
+    tizen::ApiResult<void> setRegion(const std::string & region);
+    tizen::ApiResult<void> setAuthProvider(const std::string & authProvider);
+    tizen::ApiResult<void> setAccessToken(const std::string & accessToken);
+    tizen::ApiResult<void> setRefreshToken(const std::string & refreshToken);
+    tizen::ApiResult<void> setUserId(const std::string & userId);
+    tizen::ApiResult<void> setClientId(const std::string & clientId);
+private:
+    smartthings_cloud_info_h _handle;
+};
+
+} // thing
+} // smartthings
+} // ses
+
+#endif // SMARTTHING_CLOUD_INFO_H
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/DeviceProvInfo.cpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/DeviceProvInfo.cpp
new file mode 100644 (file)
index 0000000..68ab6d8
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "ses/smartthings/thing/DeviceProvInfo.hpp"
+#include "tizen/Strings.hpp"
+#include "ses/smartthings/thing/SmartThingsThingExceptions.hpp"
+#include "tizen/Logger.hpp"
+#include "tizen/Error.hpp"
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+DeviceProvInfo::DeviceProvInfo(smartthings_device_prov_info_h handle) : _handle(handle)
+{
+
+}
+
+tizen::ApiResult<std::string> DeviceProvInfo::getLanguage()
+{
+    char *lang;
+    int res = smartthings_devinfo_get_language(_handle, &lang);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<std::string>::Error(res);
+    }
+    return tizen::ApiResult<std::string>::Ok(tizen::wrapMallocString(lang));
+}
+
+tizen::ApiResult<std::string> DeviceProvInfo::getCountry()
+{
+    char *country;
+    int res = smartthings_devinfo_get_country(_handle, &country);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<std::string>::Error(res);
+    }
+    return tizen::ApiResult<std::string>::Ok(tizen::wrapMallocString(country));
+}
+
+tizen::ApiResult<std::string> DeviceProvInfo::getDatetime()
+{
+    char *datetime;
+    int res = smartthings_devinfo_get_datetime(_handle, &datetime);
+    if(res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<std::string>::Error(res);
+    }
+    return tizen::ApiResult<std::string>::Ok(tizen::wrapMallocString(datetime));
+}
+
+} // thing
+} // smartthings
+} // ses
\ No newline at end of file
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/DeviceProvInfo.hpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/DeviceProvInfo.hpp
new file mode 100644 (file)
index 0000000..22fc737
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SMARTTHING_DEVICE_PROVISING_INFO_H
+#define SMARTTHING_DEVICE_PROVISING_INFO_H
+
+#include "tizen/ApiResult.hpp"
+#include "smartthings.h"
+#include <string>
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+class DeviceProvInfo
+{
+friend class Master;
+public:
+    DeviceProvInfo() = delete;
+    DeviceProvInfo(const DeviceProvInfo&) = delete;
+    DeviceProvInfo& operator=(const DeviceProvInfo&) = delete;
+
+    DeviceProvInfo(const DeviceProvInfo&&) = delete;
+    DeviceProvInfo& operator=(const DeviceProvInfo&&) = delete;
+
+    tizen::ApiResult<std::string> getLanguage();
+    tizen::ApiResult<std::string> getCountry();
+    tizen::ApiResult<std::string> getDatetime();
+private:
+    DeviceProvInfo(smartthings_device_prov_info_h handle);
+    smartthings_device_prov_info_h _handle;
+};
+
+} // thing
+} // smartthings
+} // ses
+
+#endif // SMARTTHING_DEVICE_PROVISING_INFO_H
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/Master.cpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/Master.cpp
new file mode 100644 (file)
index 0000000..d52642a
--- /dev/null
@@ -0,0 +1,509 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "ses/smartthings/thing/Master.hpp"
+#include "ses/smartthings/thing/SmartThingsThingExceptions.hpp"
+#include "tizen/Strings.hpp"
+#include "tizen/Logger.hpp"
+#include "tizen/Error.hpp"
+#include <string>
+
+namespace ses
+{
+namespace smartthings
+{
+namespace thing
+{
+
+Master::Master(std::function<void(smartthings_connection_status_e)> connectionStatusCb)
+{
+    _connectionStatusCb = connectionStatusCb;
+    auto static_cb = [](smartthings_h, smartthings_connection_status_e connection_status, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_connectionStatusCb)
+            master->_connectionStatusCb(connection_status);
+    };
+    int res = smartthings_initialize(&_handle, static_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        tizen::logger::Err("Failed to initialize smartthings (%d)", res);
+        throw SmartThingsThingException(res);
+    }
+}
+
+Master::~Master()
+{
+    int res = smartthings_deinitialize(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        tizen::logger::Err("Failed to deinitialize smartthings handle: %s", tizen::Error(res).message());
+    }
+}
+
+tizen::ApiResult<void> Master::start()
+{
+    int res = smartthings_start(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::stop()
+{
+    int res = smartthings_stop(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setStatusChangedCb(std::function<void(smartthings_status_e)> statusCb)
+{
+    auto oldCb = _statusCb;
+    _statusCb = statusCb;
+    auto static_cb = [](smartthings_h, smartthings_status_e status, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_statusCb)
+            master->_statusCb(status);
+    };
+    int res = smartthings_set_status_changed_cb(_handle, static_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        _statusCb = oldCb;
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetStatusChangedCb()
+{
+    int res = smartthings_unset_status_changed_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _statusCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setCertificateFile(const std::string &certificate, const std::string &privateKey)
+{
+    int res = smartthings_set_certificate_file(_handle, certificate.c_str(), privateKey.c_str());
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setDeviceProperty(const std::string &devName, int wifiMode, int wifiFreq)
+{
+    int res = smartthings_set_device_property(_handle, devName.c_str(), wifiMode, wifiFreq);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<std::string> Master::getDeviceId()
+{
+    char *device_id;
+    int res = smartthings_get_device_id(_handle, &device_id);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<std::string>::Error(res);
+    }
+    return tizen::ApiResult<std::string>::Ok(tizen::wrapMallocString(device_id));
+}
+
+tizen::ApiResult<bool> Master::getEasysetupStatus()
+{
+    bool easy_setup_status;
+    int res = smartthings_get_easysetup_status(_handle, &easy_setup_status);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<bool>::Error(res);
+    }
+    return tizen::ApiResult<bool>::Ok(easy_setup_status);
+}
+
+tizen::ApiResult<void> Master::startEasysetup()
+{
+    int res = smartthings_start_easysetup(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::stopEasysetup()
+{
+    int res = smartthings_stop_easysetup(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setUserConfirmCb(std::function<void()> confirmCb)
+{
+    auto oldCb = _confirmCb;
+    _confirmCb = confirmCb;
+    auto static_cb = [](smartthings_h, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_confirmCb)
+            master->_confirmCb();
+    };
+    int res = smartthings_set_user_confirm_cb(_handle, static_cb, this);
+    tizen::logger::Dbg("set user in progress");
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        switch (res)
+        {
+        case SMARTTHINGS_ERROR_NONE:
+            tizen::logger::Dbg("set user Successful");
+            break;
+        case SMARTTHINGS_ERROR_NOT_SUPPORTED:
+            tizen::logger::Dbg("set user Not supported");
+            break;
+        case SMARTTHINGS_ERROR_INVALID_PARAMETER:
+            tizen::logger::Dbg("set user Invalid parameter");
+            break;
+        case SMARTTHINGS_ERROR_PERMISSION_DENIED:
+            tizen::logger::Dbg("set user Permission denied");
+            break;
+        case SMARTTHINGS_ERROR_OPERATION_FAILED:
+            tizen::logger::Dbg("set user Operation failed");
+            break;
+        case SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE:
+            tizen::logger::Dbg("set user Service Unavailable");
+            break;
+        default:
+            tizen::logger::Dbg("set user unkown error");
+        }
+        _confirmCb = oldCb;
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetUserConfirmCb()
+{
+    int res = smartthings_unset_user_confirm_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _confirmCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setResetConfirmCb(std::function<void()> resetConfirmCb)
+{
+    auto oldCb = _resetConfirmCb;
+    _resetConfirmCb = resetConfirmCb;
+    auto static_cb = [](smartthings_h, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_resetConfirmCb)
+            master->_resetConfirmCb();
+    };
+    int res = smartthings_set_reset_confirm_cb(_handle, static_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        _resetConfirmCb = oldCb;
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetResetConfirmCb()
+{
+    int res = smartthings_unset_reset_confirm_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _resetConfirmCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setResetResultCb(std::function<void(bool)> resetResultCb)
+{
+    auto oldCb = _resetResultCb;
+    _resetResultCb = resetResultCb;
+    auto static_cb = [](smartthings_h, bool result, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_resetResultCb)
+            master->_resetResultCb(result);
+    };
+    int res = smartthings_set_reset_result_cb(_handle, static_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        _resetResultCb = oldCb;
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetResetResultCb()
+{
+    int res = smartthings_unset_reset_result_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _resetResultCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setPinCb(std::function<void(const std::string &)> generatedCb, std::function<void()> closeCb)
+{
+    auto oldgeneratedCb = _pinGeneratedCb;
+    auto oldCloseCb = _pinCloseCb;
+    _pinGeneratedCb = generatedCb;
+    _pinCloseCb = closeCb;
+
+    auto static_generated_cb = [](smartthings_h, const char *pin, size_t size, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_pinGeneratedCb)
+            master->_pinGeneratedCb(std::string(pin, size));
+    };
+
+    auto static_close_cb = [](smartthings_h, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_pinCloseCb)
+            master->_pinCloseCb();
+    };
+    int res = smartthings_set_pin_cb(_handle, static_generated_cb, static_close_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        _pinGeneratedCb = oldgeneratedCb;
+        _pinCloseCb = oldCloseCb;
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetPinCb()
+{
+    int res = smartthings_unset_pin_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _pinGeneratedCb = nullptr;
+    _pinCloseCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setWifiApProvisioningCb(std::function<void(ApInfo &)> wifiApCb)
+{
+    auto oldCb = _wifiApCb;
+    _wifiApCb = wifiApCb;
+    auto static_cb = [](smartthings_h, smartthings_ap_info_h apInfo, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_wifiApCb)
+        {
+            ApInfo info(apInfo);
+            master->_wifiApCb(info);
+        }
+    };
+    int res = smartthings_set_wifi_ap_provisioning_cb(_handle, static_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetWifiApProvisioningCb()
+{
+    int res = smartthings_unset_wifi_ap_provisioning_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _wifiApCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setDeviceProvisioningCb(std::function<void(DeviceProvInfo &)> devProvCb)
+{
+    auto oldCb = _devProvCb;
+    _devProvCb = devProvCb;
+    auto static_cb = [](smartthings_h, smartthings_device_prov_info_h deviceProvInfo, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_devProvCb)
+        {
+            DeviceProvInfo info(deviceProvInfo);
+            master->_devProvCb(info);
+        }
+    };
+    int res = smartthings_set_device_provisioning_cb(_handle, static_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetDeviceProvisioningCb()
+{
+    int res = smartthings_unset_device_provisioning_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _devProvCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setScanApCb(std::function<void(int)> scanApCb)
+{
+    auto oldCb = _scanApCb;
+    _scanApCb = scanApCb;
+    auto static_cb = [](smartthings_h, int reqId, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_scanApCb)
+            master->_scanApCb(reqId);
+    };
+    int res = smartthings_set_scan_ap_cb(_handle, static_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        _scanApCb = oldCb;
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetScanApCb()
+{
+    int res = smartthings_unset_scan_ap_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _scanApCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setStopSoftApCb(std::function<void()> stopSoftApCb)
+{
+    auto oldCb = _stopSoftApCb;
+    _stopSoftApCb = stopSoftApCb;
+    auto static_cb = [](smartthings_h, void *data) {
+        Master *master = static_cast<Master *>(data);
+        if (master->_stopSoftApCb)
+            master->_stopSoftApCb();
+    };
+    int res = smartthings_set_stop_soft_ap_cb(_handle, static_cb, this);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        _stopSoftApCb = oldCb;
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::unsetStopSoftApCb()
+{
+    int res = smartthings_unset_stop_soft_ap_cb(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    _stopSoftApCb = nullptr;
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::sendUserConfirm(bool confirm)
+{
+    int res = smartthings_send_user_confirm(_handle, confirm);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+tizen::ApiResult<void> Master::sendResetConfirm(bool confirm)
+{
+    int res = smartthings_send_reset_confirm(_handle, confirm);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::reset()
+{
+    int res = smartthings_reset(_handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::sendApList(ApList &apList, int reqId)
+{
+    int res = smartthings_send_ap_list(_handle, apList._handle, reqId);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::signUpCloud(CloudInfo &cloudInfo)
+{
+    int res = smartthings_sign_up_cloud(_handle, cloudInfo._handle);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setPreconfiguredPin(const std::string &pin)
+{
+    int res = smartthings_set_preconfigured_pin(_handle, pin.c_str());
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+tizen::ApiResult<void> Master::setMotStatus(bool enable)
+{
+    int res = smartthings_set_mot_status(_handle, enable);
+    if (res != SMARTTHINGS_ERROR_NONE)
+    {
+        return tizen::ApiResult<void>::Error(res);
+    }
+    return tizen::ApiResult<void>::Ok();
+}
+
+} // namespace thing
+} // namespace smartthings
+} // namespace ses
\ No newline at end of file
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/Master.hpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/Master.hpp
new file mode 100644 (file)
index 0000000..b38afc4
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SMARTTHINGS_MASTER_H
+#define SMARTTHINGS_MASTER_H
+
+#include "tizen/ApiResult.hpp"
+#include "ses/smartthings/thing/ApInfo.hpp"
+#include "ses/smartthings/thing/DeviceProvInfo.hpp"
+#include "ses/smartthings/thing/ApList.hpp"
+#include "ses/smartthings/thing/CloudInfo.hpp"
+#include "smartthings.h"
+#include <functional>
+#include <string>
+#include <vector>
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+class Master
+{
+public:
+    Master(std::function<void(smartthings_connection_status_e)> connectionStatusCb);
+    ~Master();
+    
+    Master() = delete;
+       Master(const Master &) = delete;
+       Master& operator=(const Master&) = delete;
+       
+       Master(const Master &&) = delete;
+       Master& operator=(const Master&&) = delete;
+    
+    tizen::ApiResult<void> start();
+    tizen::ApiResult<void> stop();
+    tizen::ApiResult<void> setStatusChangedCb(std::function<void(smartthings_status_e)> statusCb);
+    tizen::ApiResult<void> unsetStatusChangedCb();
+    tizen::ApiResult<void> setCertificateFile(const std::string &certificate, const std::string &privateKey);
+    tizen::ApiResult<void> setDeviceProperty(const std::string &devName, int wifiMode, int wifiFreq);
+    tizen::ApiResult<std::string> getDeviceId();
+    tizen::ApiResult<bool> getEasysetupStatus();
+    tizen::ApiResult<void> startEasysetup();
+    tizen::ApiResult<void> stopEasysetup();
+    tizen::ApiResult<void> setUserConfirmCb(std::function<void()> confirmCb);
+    tizen::ApiResult<void> unsetUserConfirmCb();
+    tizen::ApiResult<void> setResetConfirmCb(std::function<void()> resetConfirmCb);
+    tizen::ApiResult<void> unsetResetConfirmCb();
+    /*@brief Sets reset result callback. It is called with boolean result of reset*/
+    tizen::ApiResult<void> setResetResultCb(std::function<void(bool)> resetResultCb);
+    tizen::ApiResult<void> unsetResetResultCb();
+    tizen::ApiResult<void> setPinCb(std::function<void(const std::string &)> generatedCb, std::function<void()> closeCb);
+    tizen::ApiResult<void> unsetPinCb();
+    tizen::ApiResult<void> setWifiApProvisioningCb(std::function<void(ApInfo&)> wifiApCb);
+    tizen::ApiResult<void> unsetWifiApProvisioningCb();
+    tizen::ApiResult<void> setDeviceProvisioningCb(std::function<void(DeviceProvInfo&)> devProvCb);
+    tizen::ApiResult<void> unsetDeviceProvisioningCb();
+    /*@brief Sets scan AP list callback. It is called with integer, requestId.*/
+    tizen::ApiResult<void> setScanApCb(std::function<void(int)> scanApCb);
+    tizen::ApiResult<void> unsetScanApCb();
+    tizen::ApiResult<void> setStopSoftApCb(std::function<void()> stopSoftApCb);
+    tizen::ApiResult<void> unsetStopSoftApCb();
+    tizen::ApiResult<void> sendUserConfirm(bool confirm);
+    tizen::ApiResult<void> sendResetConfirm(bool confirm);
+    tizen::ApiResult<void> reset();
+    tizen::ApiResult<void> sendApList(ApList & apList, int reqId);
+    tizen::ApiResult<void> signUpCloud(CloudInfo & cloudInfo);
+    tizen::ApiResult<void> setPreconfiguredPin(const std::string & pin);
+    tizen::ApiResult<void> setMotStatus(bool enable);
+    
+private:
+    smartthings_h _handle;
+
+    std::function<void(smartthings_connection_status_e)> _connectionStatusCb;
+    std::function<void(smartthings_status_e)> _statusCb;
+    std::function<void()> _confirmCb;
+    std::function<void()> _resetConfirmCb;
+    std::function<void(bool)> _resetResultCb;
+    std::function<void(const std::string &)> _pinGeneratedCb;
+    std::function<void()> _pinCloseCb;
+    std::function<void(ApInfo&)> _wifiApCb;
+    std::function<void(DeviceProvInfo&)> _devProvCb;
+    std::function<void(int)> _scanApCb;
+    std::function<void()> _stopSoftApCb;
+};
+
+} // SmartThingsThing
+} // Samsung
+} // tizen
+
+#endif // SMARTTHINGS_MASTER_H
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/SmartThingsThingExceptions.cpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/SmartThingsThingExceptions.cpp
new file mode 100644 (file)
index 0000000..7b3737b
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "ses/smartthings/thing/SmartThingsThingExceptions.hpp"
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+SmartThingsThingException::SmartThingsThingException(tizen::Error error, const std::string & message) :  _error(error),
+    _message(message + ":" + _error.message() + "(" + std::to_string(error.code()) + ")")
+{
+
+}
+
+const char *SmartThingsThingException::what() const noexcept
+{
+    return _message.c_str();
+}
+
+const tizen::Error SmartThingsThingException::getError() const
+{
+    return _error;
+}
+
+} // thing
+} // smartthings
+} // ses
diff --git a/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/SmartThingsThingExceptions.hpp b/oobe-easy-setup/ses-cpp/src/ses/smartthings/thing/SmartThingsThingExceptions.hpp
new file mode 100644 (file)
index 0000000..76f3c4b
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 SMARTTHINGS_THING_EXCEPTION_H
+#define SMARTTHINGS_THING_EXCEPTION_H
+
+#include "tizen/Error.hpp"
+#include <exception>
+#include <string>
+
+namespace ses {
+namespace smartthings {
+namespace thing {
+
+class SmartThingsThingException : public std::exception
+{
+public:
+    SmartThingsThingException(tizen::Error error, const std::string & message = "");
+    const char *what() const noexcept override;
+    const tizen::Error getError() const;
+private:
+    tizen::Error _error;
+    std::string _message;
+};
+
+} // thing
+} // smartthings
+} // ses
+
+#endif //SMARTTHINGS_THING_EXCEPTION_H
\ No newline at end of file
diff --git a/oobe-easy-setup/shared/res/master.json b/oobe-easy-setup/shared/res/master.json
new file mode 100644 (file)
index 0000000..a78f0a1
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "devices": [
+               {
+                       "deviceType": "oic.d.light",
+                       "deviceName": "ChairRPi3",
+                       "mnid": "fIAB",
+                       "vid": "sdc2018"
+               }
+       ],
+       "configuration": {
+               "otmDescription" : "ownershipTransferMethod : b0001(Random PIN-based), b0010(UserConfirm-based), b0100(Preconfigured PIN)",
+               "easySetup": {
+                       "mode": 1,
+                       "setupId": "202"
+               },
+               "otm": 1,
+               "crtType": 1
+       }
+}
diff --git a/oobe-easy-setup/shared/res/oobe-easy-setup.png b/oobe-easy-setup/shared/res/oobe-easy-setup.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/oobe-easy-setup/shared/res/oobe-easy-setup.png differ
diff --git a/oobe-easy-setup/src/AppUtils.cpp b/oobe-easy-setup/src/AppUtils.cpp
new file mode 100644 (file)
index 0000000..e657391
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "AppUtils.hpp"
+
+Evas_Object *AppUtils::_conformant = nullptr;
+Evas_Object *AppUtils::_window = nullptr;
+std::unique_ptr<tizen::application::AppControl> AppUtils::_appControl(nullptr);
+
+std::string AppUtils::getResource(std::string path)
+{
+    return app_get_resource_path() + path;
+}
+
+Evas_Object *AppUtils::getConformant()
+{
+    return _conformant;
+}
+
+Evas_Object *AppUtils::getWindow()
+{
+    return _window;
+}
+
+tizen::application::AppControl &AppUtils::getAppControl()
+{
+    return *_appControl;
+}
+
+void AppUtils::saveConformant(Evas_Object *conformant)
+{
+    _conformant = conformant;
+}
+
+void AppUtils::saveWindow(Evas_Object *window)
+{
+    _window = window;
+}
+
+void AppUtils::saveAppControl(tizen::application::AppControl &appControl)
+{
+    _appControl = std::make_unique<tizen::application::AppControl>(appControl);
+}
+
+void AppUtils::setTranslatableText(Evas_Object *object, const std::string &key)
+{
+    elm_object_translatable_text_set(object, key.c_str());
+}
+
+void AppUtils::setTranslatableText(Evas_Object *object, const std::string &part, const std::string &key)
+{
+    elm_object_translatable_part_text_set(object, part.c_str(), key.c_str());
+}
+
+std::string AppUtils::getTranslatedText(const std::string &key)
+{
+    return gettext(key.c_str());
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/EasySetup.cpp b/oobe-easy-setup/src/EasySetup.cpp
new file mode 100644 (file)
index 0000000..68de110
--- /dev/null
@@ -0,0 +1,271 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "EasySetup.hpp"
+#include "logger.h"
+#include <memory>
+#include <utility>
+
+using namespace ses::smartthings::thing;
+
+const std::string EasySetup::MY_PROV_VENDOR_INFO("{\"x.com.samsung.targetDevType\":6,\"x.com.samsung.targetDevIcon\":1}");
+const std::string EasySetup::DEVICE_NAME("motion-light-app");
+const std::string EasySetup::CERT_FILE("test_cert_03.pem");
+const std::string EasySetup::KEY_FILE("priv_03.pem");
+
+EasySetup::EasySetup()
+{
+}
+
+EasySetup::~EasySetup()
+{
+}
+
+void EasySetup::startST()
+{
+       _startSTEasySetup(
+               [this](smartthings_status_e status){ this->_easySetupConnectionStateCallback(status); },
+               [this](const std::string &pin){ this->_easySetupPinCallback(pin); }
+       );
+}
+
+void EasySetup::resetST()
+{
+       LOG_DBG("Resetting Easy Setup...");
+       if(!_st_master)
+       {
+               LOG_DBG("Cannot reset easy setup - easy setup has not started yet");
+               startST();
+               return;
+       }
+       
+       _st_master->stopEasysetup();
+       _st_master->reset();
+       _st_master->startEasysetup();
+}
+
+void EasySetup::stopST()
+{
+       if(_st_master == nullptr)
+       {
+               LOG_WRN("Cannot stop EasySetup - not started");
+               return;
+       }
+       LOG_DBG("Stopping Easy Setup...");
+       _st_master->stopEasysetup();
+       _st_master->stop();
+       _st_master = nullptr;
+       LOG_DBG("Successfully stopped Easy Setup...");
+}
+
+void EasySetup::_startSTEasySetup(std::function<void(smartthings_status_e)> status_cb, std::function<void(const std::string &)> pin_cb)
+{
+       if (_st_master)
+       {
+               LOG_ERR("Cannot start Easy Setup - already started");
+               return;
+       }
+
+       LOG_DBG("Startings Easy setup...");
+       _st_master = std::make_unique<Master>([status_cb, pin_cb, this](smartthings_connection_status_e status) {
+               if (status == SMARTTHINGS_CONNECTION_STATUS_CONNECTED)
+               {
+                       int wifi_mode = SMARTTHINGS_WIFI_MODE_11B | SMARTTHINGS_WIFI_MODE_11G | SMARTTHINGS_WIFI_MODE_11N;
+                       int wifi_freq = SMARTTHINGS_WIFI_FREQ_24G | SMARTTHINGS_WIFI_FREQ_5G;
+
+                       auto res = _st_master->setDeviceProperty(DEVICE_NAME.c_str(), wifi_mode, wifi_freq);
+                       if(!res)
+                       {
+                               LOG_ERR("Failed to set device property: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{SET_DEVICE_PROPERTY_ERROR});
+                               return;
+                       }
+
+                       res = _st_master->setResetConfirmCb([this]() {
+                               LOG_DBG("resetConfirmCb");
+                               LOG_DBG("Auto accept reset request w/o confirm...");
+                               auto res = _st_master->sendResetConfirm(true);
+                               if(!res)
+                               {
+                                       LOG_ERR("Failed to send reset confirm: %s (%d)", res.error().message(), res.error().code());
+                               }
+                       });
+                       if(!res)
+                       {
+                               LOG_ERR("Failed to set reset confirm callback: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{SET_RESET_CONFIRM_CB_ERROR});
+                               return;
+                       }
+
+                       res = _st_master->setResetResultCb([](bool v) {
+                               LOG_DBG("resetResultCb: %d", v);
+                       });
+                       if(!res)
+                       {
+                               LOG_ERR("Failed to set reset result callback: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{SET_RESET_RESULT_CB_ERROR});
+                               return;
+                       }
+
+                       res = _st_master->setPinCb(pin_cb, []{ 
+                               LOG_DBG("Close pin callback"); 
+                       });
+                       if(!res)
+                       {
+                               LOG_ERR("Failed to set pin callback: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{SET_PIN_CB_ERROR});
+                               return;
+                       }
+
+                       res = _st_master->setUserConfirmCb([]() { 
+                               LOG_DBG("User confim callback"); 
+                       });
+                       if(!res)
+                       {
+                               LOG_ERR("Failed to set user confirm callback: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{SET_USER_CONFIRM_CB_ERROR});
+                               return;
+                       }
+
+                       res = _st_master->setWifiApProvisioningCb([this](ApInfo &ap) {
+                               LOG_DBG("WifiApProvisioningCb");
+                               this->notify(EasySetupEventWifiProvisioning(ap));
+                       });
+                       if(!res)
+                       {
+                               LOG_ERR("Failed to set wifi ap provisioning callback: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{SET_WIFI_AP_PROVISIONING_CB_ERROR});
+                               return;
+                       }
+
+                       res = _st_master->setStatusChangedCb(status_cb);
+                       if(!res)
+                       {
+                               LOG_ERR("Failed to set status changed callback: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{SET_STATUS_CB_ERROR});
+                               return;
+                       }
+                       
+                       res = _st_master->setCertificateFile(CERT_FILE.c_str(), KEY_FILE.c_str());
+                       if(!res)
+                       {
+                               LOG_ERR("Failed to set certificate (cert: %s, key: %s): %s (%d)", 
+                                       CERT_FILE.c_str(), KEY_FILE.c_str(), res.error().message(), res.error().code());
+                               notify(EasySetupEvent{SET_CERTIFICATE_ERROR});
+                               return;
+                       }
+
+                       LOG_DBG("Successfully set certificates from files: %s and %s", CERT_FILE.c_str(), KEY_FILE.c_str());
+
+                       res = _st_master->start();
+                       if (!res)
+                       {
+                               LOG_ERR("_st_master->start failed: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{START_ERROR});
+                               return;
+                       }
+
+                       auto started = _st_master->getEasysetupStatus();
+                       if (started && started.result())
+                       {
+                               LOG_DBG("Easy setup finished");
+                       }
+                       else
+                       {
+                               notify(EasySetupEvent{MEDIUM_REQUEST});
+                       }
+
+                       res = _st_master->startEasysetup();
+                       if(!res)
+                       {
+                               LOG_ERR("_st_master->startEasysetup failed: %s (%d)", res.error().message(), res.error().code());
+                               notify(EasySetupEvent{START_ES_ERROR});
+                               return;
+                       }
+                       else
+                       {
+                               LOG_INF("Easy setup successfully started");
+                       }
+               }
+               else
+               {
+                       LOG_ERR("Smartthings status: %d", status);
+               }
+       });
+}
+
+void EasySetup::_easySetupConnectionStateCallback(smartthings_status_e status)
+{
+       switch (status)
+       {
+       case SMARTTHINGS_STATUS_NOT_READY:
+               LOG_ERR("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_NOT_READY");
+               notify(EasySetupEvent{NOT_READY});
+               break;
+       case SMARTTHINGS_STATUS_INIT:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_INIT");
+               notify(EasySetupEvent{INIT});
+               break;
+       case SMARTTHINGS_STATUS_ES_STARTED:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_ES_STARTED");
+               notify(EasySetupEvent{ES_STARTED});
+               break;
+       case SMARTTHINGS_STATUS_ES_DONE:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_ES_DONE");
+               notify(EasySetupEvent{ES_DONE});
+               break;
+       case SMARTTHINGS_STATUS_ES_FAILED_ON_OWNERSHIP_TRANSFER:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_ES_FAILED_ON_OWNERSHIP_TRANSFER");
+               notify(EasySetupEvent{ES_FAILED_OWNERSHIP_TRANSFER});
+               break;
+       case SMARTTHINGS_STATUS_CONNECTING_TO_AP:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_CONNECTING_TO_AP");
+               notify(EasySetupEvent{CONNECTING_TO_AP});
+               break;
+       case SMARTTHINGS_STATUS_CONNECTED_TO_AP:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_CONNECTED_TO_AP");
+               notify(EasySetupEvent{CONNECTED_TO_AP});
+               break;
+       case SMARTTHINGS_STATUS_CONNECTING_TO_AP_FAILED:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_CONNECTING_TO_AP_FAILED");
+               notify(EasySetupEvent{CONNECTING_TO_AP_FAILED});
+               break;
+       case SMARTTHINGS_STATUS_REGISTERING_TO_CLOUD:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_REGISTERING_TO_CLOUD");
+               notify(EasySetupEvent{REGISTERING_TO_CLOUD});
+               break;
+       case SMARTTHINGS_STATUS_REGISTERED_TO_CLOUD:
+               LOG_DBG("[VERDICT] status: [%d] [%s]", status, "SMARTTHINGS_STATUS_REGISTERED_TO_CLOUD");
+               notify(EasySetupEvent{REGISTERED_TO_CLOUD});
+               break;
+       case SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_SIGN_IN:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_SIGN_IN");
+               notify(EasySetupEvent{REGISTERING_FAILED_ON_SIGN_IN});
+               break;
+       case SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_PUB_RES:
+               LOG_DBG("status: [%d] [%s]", status, "SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_PUB_RES");
+               notify(EasySetupEvent{REGISTERING_FAILED_ON_PUB_RES});
+               break;
+       default:
+               LOG_ERR("status: [%d][%s]", status, "Unknown Status");
+               break;
+       }
+};
+
+void EasySetup::_easySetupPinCallback(const std::string &pin)
+{
+       notify(EasySetupEventPinAquired(pin));
+}
diff --git a/oobe-easy-setup/src/EasySetupEventAdapter.cpp b/oobe-easy-setup/src/EasySetupEventAdapter.cpp
new file mode 100644 (file)
index 0000000..17374b1
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "EasySetupEventAdapter.hpp"
+#include "StateManager.hpp"
+#include "logger.h"
+
+const double EasySetupEventAdapter::_timeoutInterval = 90.0;
+
+EasySetupEventAdapter::EasySetupEventAdapter(std::shared_ptr<StateManager> stateManager) : _stateManager(stateManager)
+{
+
+}
+
+void EasySetupEventAdapter::update(const EasySetupEvent &event)
+{
+    LOG_DBG("EasySetupEventAdapter is processing event of type %d", event.type);
+    switch(event.type)
+    {
+        case NOT_READY:
+        case INIT:
+            break;
+        case ES_STARTED:
+            _stateManager->processAdvertisement();
+            break;
+        case ES_DONE:
+            _stateManager->confirmPin();
+            break;
+        case CONNECTING_TO_AP:
+            _timerConnected = nullptr;
+            break;
+        case CONNECTED_TO_AP:
+            _stateManager->saveWifiConnection();
+            if(_timerConnected == nullptr)
+            {
+                _timerConnected = std::make_unique<tizen::timer::Timer>(EasySetupEventAdapter::_timeoutInterval, 
+                    [this]()
+                    { 
+                        _stateManager->timeout(); 
+                        return false;
+                    });
+            }
+            break;
+        case REGISTERED_TO_CLOUD:
+            _timerConnected = nullptr;
+            _stateManager->finishSetup();
+            break;
+        case PIN_AQUIRED:
+        {
+            const EasySetupEventPinAquired &pinEvent = static_cast<const EasySetupEventPinAquired &>(event);
+            _stateManager->setupPin(pinEvent.pin);
+            break;
+        }
+        case WIFI_PROVISIONING:
+        {
+            /*_stateManager->disableMedium();
+            const EasySetupEventWifiProvisioning &wifiProvEvent = static_cast<const EasySetupEventWifiProvisioning &>(event);
+            _stateManager->connectToNetwork(
+                wifiProvEvent.apInfo.get().getSsid().result(), 
+                wifiProvEvent.apInfo.get().getPassword().result());*/
+            break;
+        }
+        case MEDIUM_REQUEST:
+            //_stateManager->enableMedium();
+            break;
+        case ES_FAILED_OWNERSHIP_TRANSFER:
+            _timerConnected = nullptr;
+            _stateManager->error();
+            break;
+        case CONNECTING_TO_AP_FAILED:
+            _timerConnected = nullptr;
+            _stateManager->error();
+            break;
+        case REGISTERING_FAILED_ON_PUB_RES:
+            _timerConnected = nullptr;
+            _stateManager->error();
+            break;
+        case REGISTERING_FAILED_ON_SIGN_IN:
+            _timerInit = nullptr;
+            //_stateManager->error();
+            break;
+        case SET_DEVICE_PROPERTY_ERROR:
+            _stateManager->unrecoverableError();
+            break;
+        case SET_PIN_CB_ERROR:
+            _stateManager->unrecoverableError();
+            break;
+        case SET_CERTIFICATE_ERROR:
+            _stateManager->unrecoverableError();
+            break;
+        default:
+            break;
+    }
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/OobeEasySetupApp.cpp b/oobe-easy-setup/src/OobeEasySetupApp.cpp
new file mode 100644 (file)
index 0000000..315bd10
--- /dev/null
@@ -0,0 +1,130 @@
+#include "OobeEasySetupApp.hpp"
+#include "AppUtils.hpp"
+#ifdef TEST_UI_STATE_MANAGER
+#include "TestUIViewEventAdapter.hpp"
+#else
+#include "ViewEventAdapter.hpp"
+#endif
+#include "EasySetupEventAdapter.hpp"
+
+using namespace tizen::application;
+
+const std::string OobeEasySetupApp::DEMANDED_CALLER("org.tizen.oobe");
+const std::string OobeEasySetupApp::DEMANDED_CALLER_KEY("caller");
+const std::string OobeEasySetupApp::DEMANDED_CALLER_VALUE("oobe-setup");
+
+OobeEasySetupApp::~OobeEasySetupApp()
+{
+    _viewManager->detach(_viewEventAdapter);
+    _easySetup->detach(_easySetupEventAdapter);
+}
+
+void OobeEasySetupApp::_win_delete_request_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    OobeEasySetupApp::Exit();
+}
+
+void OobeEasySetupApp::_createSkeleton()
+{
+       /* Window */
+       /* Create and initialize elm_win.
+          elm_win is mandatory to manipulate window. */
+
+       std::string styles_edj_path = AppUtils::getResource("edje/oobe_button.edj");
+       dlog_print(DLOG_DEBUG, LOG_TAG, "Path for edj with styles: %s", styles_edj_path.c_str());
+       elm_theme_extension_add(NULL, styles_edj_path.c_str());
+
+       _win = elm_win_util_standard_add(PACKAGE, PACKAGE);
+       elm_win_conformant_set(_win, EINA_TRUE);
+       elm_win_indicator_mode_set(_win, ELM_WIN_INDICATOR_HIDE);
+       elm_win_autodel_set(_win, EINA_TRUE);
+
+       evas_object_smart_callback_add(_win, "delete,request", _win_delete_request_cb, NULL);
+
+       if (elm_win_wm_rotation_supported_get(_win)) {
+               int rots[4] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(_win, (const int *)(&rots), 4);
+       }
+
+       AppUtils::saveWindow(_win);
+
+
+       /* Conformant */
+       /* Create and initialize elm_conformant.
+          elm_conformant is mandatory for base gui to have proper size
+          when indicator or virtual keypad is visible. */
+       _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);
+       AppUtils::saveConformant(_conform);
+
+       /* Show window after base gui is set up */
+       evas_object_show(_win);
+}
+
+bool OobeEasySetupApp::OnCreate()
+{
+       dlog_print(DLOG_DEBUG, LOG_TAG, "***\nAppCreate\nBuildTime: %s %s\n***", __DATE__, __TIME__);
+
+       return true;
+}
+
+void OobeEasySetupApp::OnService(AppControl &app)
+{
+       AppUtils::saveAppControl(app);
+       auto callerRes = app.getCaller();
+       if(!callerRes || callerRes.result() != OobeEasySetupApp::DEMANDED_CALLER)
+       {
+               dlog_print(DLOG_DEBUG, LOG_TAG, "Caller ID is %s (expected %s) - getting caller from extra data", 
+                       callerRes? callerRes.result().c_str() : "unknown", OobeEasySetupApp::DEMANDED_CALLER.c_str());
+               auto dataRes = app.getExtraData(OobeEasySetupApp::DEMANDED_CALLER_KEY);
+               if(!dataRes || dataRes.result() != OobeEasySetupApp::DEMANDED_CALLER_VALUE)
+               {
+                       dlog_print(DLOG_DEBUG, LOG_TAG, "Caller data is %s (expected %s) - terminating app", 
+                               dataRes? dataRes.result().c_str() : "unknown", OobeEasySetupApp::DEMANDED_CALLER_VALUE.c_str());
+                       OobeEasySetupApp::Exit();
+               }
+       }
+       
+
+       _createSkeleton();
+       _viewManager = std::make_shared<ViewManager>();
+       _easySetup = std::make_shared<EasySetup>();
+       _stateManager = std::make_shared<StateManager>(
+               _viewManager,
+               nullptr /*std::make_shared<TizenHomeAP>()*/,
+               nullptr /*std::make_shared<TizenSoftAP>()*/,
+               _easySetup);
+#ifdef TEST_UI_STATE_MANAGER
+    _viewEventAdapter  = std::make_shared<TestUIViewEventAdapter>(_stateManager);
+#else
+    _viewEventAdapter = std::make_shared<ViewEventAdapter>(_stateManager);
+#endif
+    _easySetupEventAdapter = std::make_shared<EasySetupEventAdapter>(_stateManager);
+    
+       _viewManager->attach(_viewEventAdapter);
+    _easySetup->attach(_easySetupEventAdapter);
+       
+       
+       _stateManager->startPreparation();
+}
+
+void OobeEasySetupApp::OnLanguageChanged(app_event_info_h event_info)
+{
+    int ret;
+    char *language;
+
+    ret = app_event_get_language(event_info, &language);
+    if (ret != APP_ERROR_NONE)
+    {
+        dlog_print(DLOG_ERROR, LOG_TAG, "app_event_get_language() failed. Err = %d.", ret);
+        return;
+    }
+
+    if (language != NULL)
+    {
+        elm_language_set(language);
+        free(language);
+    }
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/OobeEasySetupMain.cpp b/oobe-easy-setup/src/OobeEasySetupMain.cpp
new file mode 100644 (file)
index 0000000..688d766
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "OobeEasySetupMain.hpp"
+#include "OobeEasySetupApp.hpp"
+
+int main(int argc, char *argv[])
+{
+       OobeEasySetupApp app;
+       try
+       {
+               int ret = app.Run(argc, argv);
+               if (ret != APP_ERROR_NONE) 
+               {
+                       dlog_print(DLOG_ERROR, LOG_TAG, "App run failed. err = %d", ret);
+               }
+               return ret;
+       }
+       catch(const std::exception &e)
+       {
+               dlog_print(DLOG_FATAL, LOG_TAG, "App threw uncaught exception: %s", e.what());
+               return 1;
+       }
+       catch(...)
+       {
+               dlog_print(DLOG_FATAL, LOG_TAG, "App threw uncaught object");
+               return 1;
+       }
+}
diff --git a/oobe-easy-setup/src/StateManager.cpp b/oobe-easy-setup/src/StateManager.cpp
new file mode 100644 (file)
index 0000000..62d5042
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "StateManager.hpp"
+#include "logger.h"
+#include "OobeEasySetupApp.hpp"
+#include "AppUtils.hpp"
+#include <utility>
+
+const std::string StateManager::REPLY_KEY("reply");
+const std::string StateManager::LOGGED_TO_SA_KEY("loggedToSA");
+const std::string StateManager::EASY_SETUP_FINISHED_KEY("completed");
+const std::string StateManager::WIFI_CONNECTED_KEY("connectedToAp");
+
+StateManager::StateManager(std::shared_ptr<ViewManager> viewManager, std::shared_ptr<TizenHomeAP> homeAp,
+    std::shared_ptr<TizenSoftAP> medium, std::shared_ptr<EasySetup> easySetup) 
+    : _viewManager(viewManager), _homeAp(homeAp), _medium(medium), _easySetup(easySetup),
+      _easySetupFinished(false), _connectedToAp(false), _loggedToSA(false)
+{
+
+}
+
+void StateManager::startPreparation()
+{
+    LOG_DBG("State Manager: start preparation");
+    _viewManager->setView(VIEW_START);
+}
+
+void StateManager::startAdvertisement()
+{
+    LOG_DBG("State Manager: start advertisement");
+    _viewManager->setView(VIEW_ADVERTISEMENT);
+    _easySetup->startST();
+}
+
+void StateManager::processAdvertisement()
+{
+    LOG_DBG("State Manager: processing advertisement");
+    _viewManager->setView(VIEW_CONNECTED_TO_SOFTAP);
+}
+
+void StateManager::setupPin(std::string pin)
+{
+    LOG_DBG("State Manager: setuping pin (%s)", pin.c_str());
+    _viewManager->viewData.pin = pin;
+       _viewManager->setView(VIEW_PIN);
+}
+
+void StateManager::confirmPin()
+{
+    LOG_DBG("State Manager: confirming pin");
+    _viewManager->setView(VIEW_AUTO_CONFIGURTION);
+}
+
+void StateManager::logOnSamsungAccount()
+{
+    LOG_DBG("State Manager: tried to log on, but this method is unimplemented");
+    //UNIMPLEMENTED
+}
+
+void StateManager::finishSetup()
+{
+    LOG_DBG("State Manager: finishing setup");
+    _easySetupFinished = true;
+    closeApp();
+}
+
+void StateManager::skipRequest()
+{
+    LOG_DBG("State Manager: serving skip request");
+    _viewManager->showPopup(POPUP_SKIP);
+}
+
+void StateManager::cancelSkipRequest()
+{
+    LOG_DBG("State Manager: cancelling skip request");
+    _viewManager->hidePopup();
+}
+
+void StateManager::closeApp()
+{
+    LOG_DBG("State Manager: closing app request");
+    _easySetup->stopST();
+    LOG_DBG("Preparing reply...");
+    tizen::application::AppControl &appControl = AppUtils::getAppControl();
+    tizen::application::AppControl reply;
+    reply.addExtraData(REPLY_KEY.c_str(), _easySetupFinished? "done" : _connectedToAp? "connected" : "failed");
+    reply.addExtraData(WIFI_CONNECTED_KEY.c_str(), _connectedToAp? "true" : "false");
+    reply.addExtraData(EASY_SETUP_FINISHED_KEY.c_str(), _easySetupFinished? "true" : "false");
+    reply.addExtraData(LOGGED_TO_SA_KEY.c_str(), _loggedToSA? "true" : "false");
+    LOG_DBG("Replying to caller...");
+    tizen::application::AppControl::replyToLaunchRequest(reply, appControl, APP_CONTROL_RESULT_SUCCEEDED);
+    LOG_DBG("Closing app...");
+    OobeEasySetupApp::Exit();
+}
+
+void StateManager::connectToNetwork(std::string ssid, std::string password)
+{
+    LOG_DBG("State Manager: connecting to network (ssid: %s, password: %s)", ssid.c_str(), password.c_str());
+}
+
+void StateManager::enableMedium()
+{
+    LOG_DBG("State Manager: enabling medium");
+}
+
+void StateManager::disableMedium()
+{
+    LOG_DBG("State Manager: disabling medium");
+}
+
+void StateManager::reset()
+{
+    LOG_DBG("State Manager: resetting");
+#ifndef TEST_UI_STATE_MANAGER
+    _easySetupFinished = false;
+#endif
+    _viewManager->setView(VIEW_ADVERTISEMENT);
+    _easySetup->resetST();
+}
+
+void StateManager::error()
+{
+    LOG_DBG("State Manager: serving error");
+    _viewManager->viewData.errorType = ErrorType::RESETABLE;
+    _viewManager->setView(VIEW_ERROR);
+}
+
+void StateManager::timeout()
+{
+    LOG_DBG("State Manager: serving timeout");
+    _viewManager->setView(VIEW_ERROR);
+}
+
+void StateManager::saveWifiConnection()
+{
+    _connectedToAp = true;
+}
+
+void StateManager::unrecoverableError()
+{
+    LOG_DBG("State Manager: serving unrecoverable error");
+    _viewManager->viewData.errorType = ErrorType::UNRECOVERABLE;
+    _viewManager->setView(VIEW_ERROR);
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/TestUIViewEventAdapter.cpp b/oobe-easy-setup/src/TestUIViewEventAdapter.cpp
new file mode 100644 (file)
index 0000000..708df27
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "TestUIViewEventAdapter.hpp"
+#include "StateManager.hpp"
+
+TestUIViewEventAdapter::TestUIViewEventAdapter(std::shared_ptr<StateManager> stateManager) : _stateManager(stateManager)
+{
+
+}
+
+void TestUIViewEventAdapter::update(const ViewEvent &event)
+{
+       switch(event.source)
+       {
+               case VIEW_START:
+                       if(event.info == "next")
+                       {
+                               _stateManager->startAdvertisement();
+                       }
+                       else if(event.info == "skip")
+                       {
+                               _stateManager->skipRequest();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       break;
+               case VIEW_ADVERTISEMENT:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->processAdvertisement();
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               case VIEW_CONNECTED_TO_SOFTAP:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->setupPin("12345678");
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               case VIEW_PIN:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->confirmPin();
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               case VIEW_AUTO_CONFIGURTION:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->finishSetup();
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               case VIEW_ERROR:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->skipRequest();
+                       }
+                       else if(event.info == "retry")
+                       {
+                               _stateManager->reset();
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               default:
+                       break;
+       }
+}
diff --git a/oobe-easy-setup/src/ViewEventAdapter.cpp b/oobe-easy-setup/src/ViewEventAdapter.cpp
new file mode 100644 (file)
index 0000000..0f6e258
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "ViewEventAdapter.hpp"
+#include "StateManager.hpp"
+
+ViewEventAdapter::ViewEventAdapter(std::shared_ptr<StateManager> stateManager) : _stateManager(stateManager)
+{
+
+}
+
+void ViewEventAdapter::update(const ViewEvent &event)
+{
+       switch(event.source)
+       {
+               case VIEW_START:
+                       if(event.info == "next")
+                       {
+                               _stateManager->startAdvertisement();
+                       }
+                       else if(event.info == "skip")
+                       {
+                               _stateManager->skipRequest();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       break;
+               case VIEW_ADVERTISEMENT:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->skipRequest();
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               case VIEW_CONNECTED_TO_SOFTAP:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->skipRequest();
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               case VIEW_PIN:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->skipRequest();
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               case VIEW_AUTO_CONFIGURTION:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->skipRequest();
+                       }
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       break;
+               case VIEW_ERROR:
+                       if(event.info == "skip")
+                       {
+                               _stateManager->skipRequest();
+                       }
+                       else if(event.info == "retry")
+                       {
+                               _stateManager->reset();
+                       }       
+                       else if(event.info == "popup_yes")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       else if(event.info == "popup_no")
+                       {
+                               _stateManager->cancelSkipRequest();
+                       }
+                       else if(event.info == "force_skip")
+                       {
+                               _stateManager->closeApp();
+                       }
+                       break;
+               default:
+                       break;
+       }
+}
diff --git a/oobe-easy-setup/src/ViewEventObserver.cpp b/oobe-easy-setup/src/ViewEventObserver.cpp
new file mode 100644 (file)
index 0000000..2b39ad5
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "ViewEventObserver.hpp"
+#include "ViewManager.hpp"
+
+ViewEventObserver::ViewEventObserver(ViewManager &viewManager) : _viewManager(viewManager)
+{
+
+}
+
+void ViewEventObserver::update(const std::string &info)
+{
+    _viewManager.get().processInfo(info);
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/ViewManager.cpp b/oobe-easy-setup/src/ViewManager.cpp
new file mode 100644 (file)
index 0000000..e286f01
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "ViewManager.hpp"
+#include "views/ViewAdvertisement.hpp"
+#include "views/ViewAutoConfiguration.hpp"
+#include "views/ViewConnectedToSoftAP.hpp"
+#include "views/ViewPin.hpp"
+#include "views/ViewStart.hpp"
+#include "views/ViewSuccess.hpp"
+#include "views/ViewError.hpp"
+#include "popups/PopupSkip.hpp"
+#include "logger.h"
+
+ViewManager::ViewManager()
+{
+    _viewEventObserver = std::make_shared<ViewEventObserver>(*this);
+    _popupEventObserver = std::make_shared<ViewEventObserver>(*this);
+}
+
+ViewManager::~ViewManager()
+{
+    if(_current)
+    {
+        _current->detach(_viewEventObserver);
+    }
+
+    if(_currentPopup)
+    {
+        _currentPopup->detach(_popupEventObserver);
+    }
+}
+
+void ViewManager::setView(view_e view)
+{
+    hidePopup();
+    if(_current)
+    {
+        LOG_DBG("Hiding current view");
+        _current->detach(_viewEventObserver);
+        _current->hide();
+    }
+    switch(view)
+    {
+        case VIEW_ADVERTISEMENT:
+            _current = std::make_unique<ViewAdvertisement>();
+            break;
+        case VIEW_AUTO_CONFIGURTION:
+            _current = std::make_unique<ViewAutoConfiguration>();
+            break;
+        case VIEW_CONNECTED_TO_SOFTAP:
+            _current = std::make_unique<ViewConnectedToSoftAP>();
+            break;
+        case VIEW_PIN:
+            _current = std::make_unique<ViewPin>(viewData.pin);
+            break;
+        case VIEW_START:
+            _current = std::make_unique<ViewStart>();
+            break;
+        case VIEW_ERROR:
+            _current = std::make_unique<ViewError>(viewData.errorType);
+            break;
+        default:
+            LOG_WRN("Unknown view was tried to be set");
+            break;
+    }
+    if(_current)
+    {
+        LOG_DBG("Showing view %d", view);
+        _currentEnum = view;
+        _current->show();
+        _current->attach(_viewEventObserver);
+    }
+}
+
+void ViewManager::processInfo(std::string info)
+{
+    LOG_DBG("Event from view %d : %s", _currentEnum, info.c_str());
+    notify(ViewEvent{_currentEnum, info});
+}
+
+void ViewManager::showPopup(popup_e popup)
+{
+    if(popup == POPUP_NONE)
+    {
+        hidePopup();
+        return;
+    }
+    
+    LOG_DBG("Hiding popup %d", _currentPopupEnum);
+    if(_currentPopup)
+    {
+        _currentPopup->detach(_popupEventObserver);
+        _currentPopup->hide();
+    }
+
+    switch(popup)
+    {
+        case POPUP_SKIP:
+            _currentPopup = std::make_unique<PopupSkip>();
+            break;
+        case POPUP_NONE:
+            //Impossible, since check for this happens before
+            break;
+    }
+
+    if(_currentPopup)
+    {
+        LOG_DBG("Showing popup %d", popup);
+        _currentPopupEnum = popup;
+        _currentPopup->show();
+        _currentPopup->attach(_popupEventObserver);
+    }
+}
+
+void ViewManager::hidePopup()
+{
+    LOG_DBG("Hiding popup %d", _currentPopupEnum);
+    if(_currentPopup)
+    {
+        _currentPopup->detach(_popupEventObserver);
+        _currentPopup->hide();
+        _currentPopup = nullptr;
+    }
+
+    _currentPopupEnum = POPUP_NONE;
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/connectivity/TizenHomeAP.cpp b/oobe-easy-setup/src/connectivity/TizenHomeAP.cpp
new file mode 100644 (file)
index 0000000..e9413fa
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "connectivity/TizenHomeAP.hpp"
+#include "logger.h"
+#include <tizen/network/wifi/Manager.hpp>
+#include <memory>
+
+using namespace tizen::network::wifi;
+
+TizenHomeAP::TizenHomeAP()
+{
+       wifi_mgr.setConnectedCallback([this](wifi_manager_error_e res) {
+               LOG_DBG("AP Connected callback");
+               if (res != WIFI_MANAGER_ERROR_NONE) {
+                       LOG_ERR("Connection atttempt failed: %s", get_error_message(res));
+                       return;
+               }
+               notify(CONNECTED);
+               });
+       wifi_mgr.setDisconnectedCallback([this](wifi_manager_error_e res) {
+               LOG_DBG("AP Disconnected callback: %s", get_error_message(res));
+               if (res != WIFI_MANAGER_ERROR_NONE)
+                       return;
+               notify(DISCONNECTED);
+       });
+}
+
+bool TizenHomeAP::connect(const std::string &ssid, const std::string& passwd)
+{
+       LOG_DBG("TizenHomeAP::connect(%s, %s)", ssid.c_str(), passwd.c_str());
+
+       if (ssid.empty()) {
+               LOG_ERR("Invalid ssid.");
+               return false;
+       }
+
+       auto res = softap_mgr.isEnabled();
+       if (!res) return false;
+
+       if (res.result()) {
+               softap_mgr.setDisabledCallback([this, ssid, passwd](softap_error_e, softap_disabled_cause_e) {
+                               LOG_DBG("SoftAP disabled cb");
+                               connectNow(ssid, passwd);
+               });
+               softap_mgr.disable();
+       } else {
+               connectNow(ssid, passwd);
+       }
+
+       return true;
+}
+
+bool TizenHomeAP::connectNow(const std::string &ssid, const std::string& passwd)
+{
+       LOG_DBG("TizenHomeAP::connectNow(%s, %s)", ssid.c_str(), passwd.c_str());
+       wifi_mgr.setActivatedCallback([this, ssid](wifi_manager_error_e result) {
+                       LOG_DBG("Activated callback.");
+                       if (result != WIFI_MANAGER_ERROR_NONE) {
+                               LOG_ERR("Activation attempt failed:");
+                               return;
+                       }
+                       auto sr = wifi_mgr.scanSpecificAp(ssid);
+                       if (!sr) LOG_ERR("scanSpecificAp failed: %s", sr.error().message());
+                       LOG_DBG("Scan specific done.");
+                       });
+
+       wifi_mgr.setScanSpecificFinishedCallback([this, ssid, passwd](wifi_manager_error_e result) {
+                       LOG_DBG("Scan specific callback");
+                       if (result != WIFI_MANAGER_ERROR_NONE) {
+                               LOG_ERR("Scan specific attempt failed:");
+                               return;
+                       }
+                       auto res = wifi_mgr.specificFoundAps();
+                       if (!res) {
+                               LOG_ERR("Unable to get specific found APs.");
+                               return;
+                       }
+                       if (res.result().size() != 1) {
+                               LOG_ERR("Multiple aps for the single ssid. Abort connection");
+                               return;
+                       }
+                       for(auto& ap : res.result()) {
+                               auto res = ap.setPassphrase(passwd);
+                               if (!res) {
+                                       LOG_ERR("Unable to set AP password: %s", res.error().message());
+                                       return;
+                               }
+                               auto conn = wifi_mgr.connect(ap);
+                               if (!conn) LOG_ERR("Connect attemp failed: %s", conn.error().message());
+                       }
+                       });
+
+       if (auto res = wifi_mgr.activated()) {
+               if (res.result()) { // already activated
+                       LOG_DBG("Wifi already activated.");
+                       wifi_mgr.scanSpecificAp(ssid);
+               } else {
+                       LOG_DBG("Activating wifi");
+                       auto res = wifi_mgr.activate();
+                       if (!res) {
+                               LOG_ERR("Failed do activate wifimanager");
+                               return false;
+                       }
+                       LOG_DBG("Successfully activated.");
+               }
+       }
+
+       return true;
+}
+
+void TizenHomeAP::disconnect()
+{
+       auto res = wifi_mgr.deactivate();
+       if (res)
+               LOG_DBG("wifi decativated");
+       else
+               LOG_ERR("wifi decativation failed: %s", res.error().message());
+}
+
+bool TizenHomeAP::activated()
+{
+       auto res = wifi_mgr.activated();
+       if (res) return res.result();
+       else return false;
+}
diff --git a/oobe-easy-setup/src/connectivity/TizenSoftAP.cpp b/oobe-easy-setup/src/connectivity/TizenSoftAP.cpp
new file mode 100644 (file)
index 0000000..b7752b2
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "connectivity/TizenSoftAP.hpp"
+#include "logger.h"
+
+constexpr char ssid[] = "ChairRPi3_E30AJT020";
+constexpr char passwd[] = "1111122222";
+
+TizenSoftAP::TizenSoftAP()
+{
+       softap_mgr.setEnabledCallback([this](softap_error_e error, bool is_requested) {
+                       LOG_DBG("SoftAp enabled, error: %s, is_requestd: %d", get_error_message(error), is_requested);
+                       this->notify(SoftAPState::ENABLED);
+                       });
+       softap_mgr.setDisabledCallback([this](softap_error_e error, softap_disabled_cause_e cause) {
+                       LOG_DBG("SoftAp disabled, error: %s, cause: %d", get_error_message(error), cause);
+                       this->notify(SoftAPState::DISABLED);
+                       });
+}
+
+void TizenSoftAP::enableNow()
+{
+       LOG_DBG("TizenSoftAP::enableNow()");
+       auto res = softap_mgr.isEnabled();
+
+       if (!res) {
+               LOG_ERR("isEnabled failed: %s", res.error().message());
+               return;
+       }
+
+       if (res.result()) {
+               if (softap_mgr.ssid().result() == ssid) {
+                       LOG_DBG("softap already enabled");
+                       return;
+               }
+       }
+
+       softap_mgr.setSsid(ssid);
+       softap_mgr.setPassphrase(passwd);
+       softap_mgr.enable();
+}
+
+void TizenSoftAP::enable()
+{
+       LOG_DBG("TizenSoftAP::enable()");
+
+       if (auto res = wifi_mgr.activated()) {
+               if (res.result()) {
+                       wifi_mgr.setDeactivatedCallback([this](wifi_manager_error_e err) {
+                                       LOG_DBG("deactivate_cb, error: %d", err);
+                                       enableNow();
+                                       });
+                       wifi_mgr.deactivate();
+               } else {
+                       enableNow();
+               }
+       }
+}
+
+void TizenSoftAP::disable()
+{
+       LOG_DBG("TizenSoftAP::disable()");
+       auto res = softap_mgr.isEnabled();
+
+       if (!res) {
+               LOG_ERR("isEnabled failed: %s", res.error().message());
+               return;
+       }
+
+       if (!res.result()) 
+               return;
+
+       auto disRes = softap_mgr.disable();
+       if (!disRes) {
+               LOG_ERR("softap_mgr.disable failed: %s", disRes.error().message());
+       }
+}
diff --git a/oobe-easy-setup/src/popups/PopupSkip.cpp b/oobe-easy-setup/src/popups/PopupSkip.cpp
new file mode 100644 (file)
index 0000000..9e5b3c3
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "popups/PopupSkip.hpp"
+#include "AppUtils.hpp"
+
+const std::string PopupSkip::POPUP_SKIP_EDJE_FILE("edje/skip_popup.edj");
+const std::string PopupSkip::POPUP_SKIP_TEXT_KEY("SKIP_CONTENT");
+const std::string PopupSkip::POPUP_SKIP_NO("NO");
+const std::string PopupSkip::POPUP_SKIP_YES("YES");
+
+void PopupSkip::show()
+{
+    popup = elm_popup_add(AppUtils::getWindow());
+    
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+    AppUtils::setTranslatableText(popup, POPUP_SKIP_TEXT_KEY.c_str());
+
+    elm_object_part_text_set(popup,  "title,text", "");
+
+    Evas_Object *btn_no = elm_button_add(popup);
+    elm_object_style_set(btn_no, "no");
+    AppUtils::setTranslatableText(btn_no, POPUP_SKIP_NO);
+    evas_object_smart_callback_add(btn_no, "clicked", [](void *data, Evas_Object *obj, void *event_info){
+        static_cast<PopupSkip*>(data)->notify("popup_no");
+    }, this);
+    elm_object_part_content_set(popup, "button1", btn_no);
+
+    Evas_Object *btn_yes = elm_button_add(popup);
+    elm_object_style_set(btn_yes, "yes");
+    AppUtils::setTranslatableText(btn_yes, POPUP_SKIP_YES);
+    evas_object_smart_callback_add(btn_yes, "clicked", [](void *data, Evas_Object *obj, void *event_info){
+        static_cast<PopupSkip*>(data)->notify("popup_yes");
+    }, this);
+    elm_object_part_content_set(popup, "button2", btn_yes);
+
+    evas_object_show(popup);
+}
+
+void PopupSkip::hide()
+{
+    evas_object_del(popup);
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/views/ViewAdertisement.cpp b/oobe-easy-setup/src/views/ViewAdertisement.cpp
new file mode 100644 (file)
index 0000000..affa0be
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "views/ViewAdvertisement.hpp"
+#include "logger.h"
+#include "AppUtils.hpp"
+
+const std::string ViewAdvertisement::VIEW_ADVERTISEMENT_EDJE_FILE("edje/advertisement.edj");
+const std::string ViewAdvertisement::VIEW_ADVERTISEMENT_TEXT_KEY("ADVERTISEMENT_CONTENT");
+const std::string ViewAdvertisement::VIEW_ADVERTISEMENT_SKIP_TEXT_KEY("SKIP");
+
+void ViewAdvertisement::show()
+{
+    std::string edj_path = AppUtils::getResource(VIEW_ADVERTISEMENT_EDJE_FILE);
+    dlog_print(DLOG_DEBUG, LOG_TAG, "Edje path: %s", edj_path.c_str());
+    Evas_Object *layout = elm_layout_add(AppUtils::getConformant());
+       elm_layout_file_set(layout, edj_path.c_str(), GRP_MAIN);
+
+    Evas_Object *btn_skip = elm_button_add(layout);
+    elm_object_style_set(btn_skip, "skip");
+    AppUtils::setTranslatableText(btn_skip, VIEW_ADVERTISEMENT_SKIP_TEXT_KEY);
+    evas_object_smart_callback_add(btn_skip, "clicked", [](void *data, Evas_Object *obj, void *event_info){
+        static_cast<ViewAdvertisement*>(data)->notify("skip");
+    }, this);
+    elm_layout_content_set(layout, ADVERTISEMENT_SKIP_PLACEHOLDER, btn_skip);
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_content_set(AppUtils::getConformant(), layout);
+
+    AppUtils::setTranslatableText(layout, ADVERTISEMENT_TEXT, VIEW_ADVERTISEMENT_TEXT_KEY);
+
+    evas_object_show(layout);
+}
+
+void ViewAdvertisement::hide()
+{
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/views/ViewAutoConfiguration.cpp b/oobe-easy-setup/src/views/ViewAutoConfiguration.cpp
new file mode 100644 (file)
index 0000000..68f0818
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "views/ViewAutoConfiguration.hpp"
+#include "AppUtils.hpp"
+
+const std::string ViewAutoConfiguration::VIEW_AUTO_CONFIGURATION_EDJE_FILE("edje/auto_configuration.edj");
+const std::string ViewAutoConfiguration::VIEW_AUTO_CONFIGURATION_TEXT_KEY("AUTO_CONFIGURATION_CONTENT");
+const std::string ViewAutoConfiguration::VIEW_AUTO_CONFIGURATION_SKIP_TEXT_KEY("SKIP");
+
+void ViewAutoConfiguration::show()
+{
+    std::string edj_path = AppUtils::getResource(VIEW_AUTO_CONFIGURATION_EDJE_FILE);
+    dlog_print(DLOG_DEBUG, LOG_TAG, "Edje path: %s", edj_path.c_str());
+    Evas_Object *layout = elm_layout_add(AppUtils::getConformant());
+       elm_layout_file_set(layout, edj_path.c_str(), GRP_MAIN);
+
+    Evas_Object *btn_skip = elm_button_add(layout);
+    elm_object_style_set(btn_skip, "skip");
+    AppUtils::setTranslatableText(btn_skip, VIEW_AUTO_CONFIGURATION_SKIP_TEXT_KEY);
+    evas_object_smart_callback_add(btn_skip, "clicked", [](void *data, Evas_Object *obj, void *event_info){
+        static_cast<ViewAutoConfiguration*>(data)->notify("skip");
+    }, this);
+    elm_layout_content_set(layout, AUTO_CONFIGURATION_SKIP_PLACEHOLDER, btn_skip);
+
+    AppUtils::setTranslatableText(layout, AUTO_CONFIGURATION_TEXT, VIEW_AUTO_CONFIGURATION_TEXT_KEY);
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_content_set(AppUtils::getConformant(), layout);
+
+    evas_object_show(layout);
+}
+
+void ViewAutoConfiguration::hide()
+{
+
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/views/ViewConnectedToSoftAP.cpp b/oobe-easy-setup/src/views/ViewConnectedToSoftAP.cpp
new file mode 100644 (file)
index 0000000..1055858
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "views/ViewConnectedToSoftAP.hpp"
+#include "AppUtils.hpp"
+
+const std::string ViewConnectedToSoftAP::VIEW_CONNECTED_TO_SOFTAP_EDJE_FILE("edje/connected_to_softap.edj");
+const std::string ViewConnectedToSoftAP::VIEW_CONNECTED_TO_SOFTAP_TEXT_KEY("CONNECTED_TO_SOFTAP_CONTENT");
+const std::string ViewConnectedToSoftAP::VIEW_CONNECTED_TO_SOFTPA_SKIP_TEXT_KEY("SKIP");
+
+void ViewConnectedToSoftAP::show()
+{
+    std::string edj_path = AppUtils::getResource(VIEW_CONNECTED_TO_SOFTAP_EDJE_FILE);
+    dlog_print(DLOG_DEBUG, LOG_TAG, "Edje path: %s", edj_path.c_str());
+    Evas_Object *layout = elm_layout_add(AppUtils::getConformant());
+       elm_layout_file_set(layout, edj_path.c_str(), GRP_MAIN);
+
+    Evas_Object *btn_skip = elm_button_add(layout);
+    elm_object_style_set(btn_skip, "skip");
+    AppUtils::setTranslatableText(btn_skip, VIEW_CONNECTED_TO_SOFTPA_SKIP_TEXT_KEY);
+    evas_object_smart_callback_add(btn_skip, "clicked", [](void *data, Evas_Object *obj, void *event_info){
+        static_cast<ViewConnectedToSoftAP*>(data)->notify("skip");
+    }, this);
+    elm_layout_content_set(layout, CONNECTED_TO_SOFTAP_SKIP_PLACEHOLDER, btn_skip);
+
+    AppUtils::setTranslatableText(layout, CONNECTED_TO_SOFTAP_TEXT, VIEW_CONNECTED_TO_SOFTAP_TEXT_KEY);
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_content_set(AppUtils::getConformant(), layout);
+
+    evas_object_show(layout);
+}
+
+void ViewConnectedToSoftAP::hide()
+{
+
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/views/ViewError.cpp b/oobe-easy-setup/src/views/ViewError.cpp
new file mode 100644 (file)
index 0000000..2a90e7f
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "views/ViewError.hpp"
+#include "AppUtils.hpp"
+
+const std::string ViewError::VIEW_ERROR_EDJE_FILE("edje/error.edj");
+const std::string ViewError::VIEW_ERROR_RESETABLE_MAIN_TEXT_KEY("RETRY");
+const std::string ViewError::VIEW_ERROR_UNRECOVERABLE_MAIN_TEXT_KEY("SKIP");
+const std::string ViewError::VIEW_ERROR_SKIP_TEXT_KEY("SKIP");
+const std::string ViewError::VIEW_ERROR_RESETABLE_TEXT_KEY("ERROR_CONTENT_RESETABLE");
+const std::string ViewError::VIEW_ERROR_UNRECOVERABLE_TEXT_KEY("ERROR_CONTENT_UNRECOVERABLE");
+
+ViewError::ViewError(ErrorType errorType) : _errorType(errorType)
+{
+}
+
+void ViewError::show()
+{
+    std::string edj_path = AppUtils::getResource(VIEW_ERROR_EDJE_FILE);
+    dlog_print(DLOG_DEBUG, LOG_TAG, "Edje path: %s", edj_path.c_str());
+    Evas_Object *layout = elm_layout_add(AppUtils::getConformant());
+    elm_layout_file_set(layout, edj_path.c_str(), GRP_MAIN);
+
+    if (_errorType == ErrorType::RESETABLE)
+    {
+        Evas_Object *btn_main = elm_button_add(layout);
+        elm_object_style_set(btn_main, "start");
+        AppUtils::setTranslatableText(btn_main, VIEW_ERROR_RESETABLE_MAIN_TEXT_KEY);
+        evas_object_smart_callback_add(btn_main, "clicked", [](void *data, Evas_Object *obj, void *event_info) {
+            static_cast<ViewError *>(data)->notify("retry");
+        }, this);
+        elm_layout_content_set(layout, ERROR_MAIN_BUTTON_PLACEHOLDER, btn_main);
+        Evas_Object *btn_extra = elm_button_add(layout);
+        elm_object_style_set(btn_extra, "skip");
+        AppUtils::setTranslatableText(btn_extra, VIEW_ERROR_SKIP_TEXT_KEY);
+        evas_object_smart_callback_add(btn_extra, "clicked", [](void *data, Evas_Object *obj, void *event_info) {
+            static_cast<ViewError *>(data)->notify("skip");
+        }, this);
+        elm_layout_content_set(layout, ERROR_EXTRA_BUTTON_PLACEHOLDER, btn_extra);
+
+        AppUtils::setTranslatableText(layout, ERROR_TEXT, VIEW_ERROR_RESETABLE_TEXT_KEY);
+
+        evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    }
+    else if (_errorType == ErrorType::UNRECOVERABLE)
+    {
+        Evas_Object *btn_main = elm_button_add(layout);
+        elm_object_style_set(btn_main, "start");
+        AppUtils::setTranslatableText(btn_main, VIEW_ERROR_UNRECOVERABLE_MAIN_TEXT_KEY);
+        evas_object_smart_callback_add(btn_main, "clicked", [](void *data, Evas_Object *obj, void *event_info) {
+            static_cast<ViewError *>(data)->notify("force_skip");
+        },this);
+        elm_layout_content_set(layout, ERROR_MAIN_BUTTON_PLACEHOLDER, btn_main);
+        AppUtils::setTranslatableText(layout, ERROR_TEXT, VIEW_ERROR_UNRECOVERABLE_TEXT_KEY);
+
+        evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    }
+
+    elm_object_content_set(AppUtils::getConformant(), layout);
+
+    evas_object_show(layout);
+}
+
+void ViewError::hide()
+{
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/src/views/ViewPin.cpp b/oobe-easy-setup/src/views/ViewPin.cpp
new file mode 100644 (file)
index 0000000..2903d09
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "views/ViewPin.hpp"
+#include "AppUtils.hpp"
+
+const std::string ViewPin::VIEW_PIN_EDJE_FILE("edje/pin.edj");
+const std::string ViewPin::VIEW_PIN_TEXT_KEY("PIN_CONTENT");
+const std::string ViewPin::VIEW_PIN_SKIP_TEXT_KEY("SKIP");
+
+ViewPin::ViewPin(const std::string &pin) : _pin(pin)
+{
+
+}
+
+void ViewPin::show()
+{
+    std::string edj_path = AppUtils::getResource(VIEW_PIN_EDJE_FILE);
+    dlog_print(DLOG_DEBUG, LOG_TAG, "Edje path: %s", edj_path.c_str());
+    _layout = elm_layout_add(AppUtils::getConformant());
+       elm_layout_file_set(_layout, edj_path.c_str(), GRP_MAIN);
+
+    Evas_Object *btn_skip = elm_button_add(_layout);
+    elm_object_style_set(btn_skip, "skip");
+    AppUtils::setTranslatableText(btn_skip, VIEW_PIN_SKIP_TEXT_KEY);
+    evas_object_smart_callback_add(btn_skip, "clicked", [](void *data, Evas_Object *obj, void *event_info){
+        static_cast<ViewPin*>(data)->notify("skip");
+    }, this);
+    elm_layout_content_set(_layout, PIN_SKIP_PLACEHOLDER, btn_skip);
+
+    AppUtils::setTranslatableText(_layout, PIN_TEXT, VIEW_PIN_TEXT_KEY);
+
+       evas_object_size_hint_weight_set(_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_content_set(AppUtils::getConformant(), _layout);
+    _setPinOnView();
+
+    evas_object_show(_layout);
+}
+
+void ViewPin::hide()
+{
+
+}
+
+void ViewPin::_setPinOnView()
+{
+    _setPinOnView(_pin);
+}
+
+void ViewPin::_setPinOnView(const std::string & pin)
+{
+    elm_layout_text_set(_layout, PIN_PIN_TEXT1, _pin.substr(0,1).c_str());
+    elm_layout_text_set(_layout, PIN_PIN_TEXT2, _pin.substr(1,1).c_str());
+    elm_layout_text_set(_layout, PIN_PIN_TEXT3, _pin.substr(2,1).c_str());
+    elm_layout_text_set(_layout, PIN_PIN_TEXT4, _pin.substr(3,1).c_str());
+    elm_layout_text_set(_layout, PIN_PIN_TEXT5, _pin.substr(4,1).c_str());
+    elm_layout_text_set(_layout, PIN_PIN_TEXT6, _pin.substr(5,1).c_str());
+    elm_layout_text_set(_layout, PIN_PIN_TEXT7, _pin.substr(6,1).c_str());
+    elm_layout_text_set(_layout, PIN_PIN_TEXT8, _pin.substr(7,1).c_str());
+}
+
diff --git a/oobe-easy-setup/src/views/ViewStart.cpp b/oobe-easy-setup/src/views/ViewStart.cpp
new file mode 100644 (file)
index 0000000..133dab5
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2018 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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 "views/ViewStart.hpp"
+#include "AppUtils.hpp"
+
+const std::string ViewStart::VIEW_START_EDJE_FILE("edje/start.edj");
+const std::string ViewStart::VIEW_START_SKIP_TEXT_KEY("SKIP");
+const std::string ViewStart::VIEW_START_START_TEXT_KEY("START");
+const std::string ViewStart::VIEW_START_TEXT_KEY("START_CONTENT");
+
+void ViewStart::show()
+{
+    std::string edj_path = AppUtils::getResource(VIEW_START_EDJE_FILE);
+    dlog_print(DLOG_DEBUG, LOG_TAG, "Edje path: %s", edj_path.c_str());
+    Evas_Object *layout = elm_layout_add(AppUtils::getConformant());
+       elm_layout_file_set(layout, edj_path.c_str(), GRP_MAIN);
+    
+    Evas_Object *btn_start = elm_button_add(layout);
+    elm_object_style_set(btn_start, "start");
+    AppUtils::setTranslatableText(btn_start, VIEW_START_START_TEXT_KEY);
+    evas_object_smart_callback_add(btn_start, "clicked", [](void *data, Evas_Object *obj, void *event_info){
+        static_cast<ViewStart*>(data)->notify("next");
+    }, this);
+    elm_layout_content_set(layout, START_START_PLACEHOLDER, btn_start);
+
+    Evas_Object *btn_skip = elm_button_add(layout);
+    elm_object_style_set(btn_skip, "skip");
+    AppUtils::setTranslatableText(btn_skip, VIEW_START_SKIP_TEXT_KEY);
+    evas_object_smart_callback_add(btn_skip, "clicked", [](void *data, Evas_Object *obj, void *event_info){
+        static_cast<ViewStart*>(data)->notify("skip");
+    }, this);
+    elm_layout_content_set(layout, START_SKIP_PLACEHOLDER, btn_skip);
+
+    AppUtils::setTranslatableText(layout, START_TEXT, VIEW_START_TEXT_KEY);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_content_set(AppUtils::getConformant(), layout);
+
+    evas_object_show(layout);
+}
+
+void ViewStart::hide()
+{
+
+}
\ No newline at end of file
diff --git a/oobe-easy-setup/tizen-manifest.xml b/oobe-easy-setup/tizen-manifest.xml
new file mode 100644 (file)
index 0000000..d9f1a83
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.tizen.oobe-easy-setup" version="1.0.0">
+    <profile name="iot-headed"/>
+    <ui-application appid="org.tizen.oobe-easy-setup" exec="oobe-easy-setup" launch_mode="single" multiple="false" nodisplay="true" taskmanage="true" type="capp">
+        <label>oobe-easy-setup</label>
+        <icon>oobe-easy-setup.png</icon>
+        <metadata key="http://tizen.org/iot/metadata/master" value="shared/res/master.json"/>
+        <metadata key="samsung-experience-service-api-level" value="1"/>
+    </ui-application>
+    <privileges>
+        <privilege>http://tizen.org/privilege/mediastorage</privilege>
+        <privilege>http://tizen.org/privilege/network.get</privilege>
+        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+        <privilege>http://tizen.org/privilege/network.set</privilege>
+        <privilege>http://tizen.org/privilege/account.read</privilege>
+        <privilege>http://tizen.org/privilege/softap.admin</privilege>
+        <privilege>http://tizen.org/privilege/account.write</privilege>
+        <privilege>http://tizen.org/privilege/softap</privilege>
+        <privilege>http://tizen.org/privilege/internet</privilege>
+        <privilege>http://tizen.org/privilege/datasharing</privilege>
+        <privilege>http://tizen.org/privilege/network.profile</privilege>
+        <privilege>http://tizen.org/privilege/externalstorage</privilege>
+        <appdefined-privilege>http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master</appdefined-privilege>
+    </privileges>
+</manifest>
diff --git a/oobe-language/.cproject b/oobe-language/.cproject
new file mode 100644 (file)
index 0000000..bfb7fe3
--- /dev/null
@@ -0,0 +1,674 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.908033126">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.908033126" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-language" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.908033126" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.908033126." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.463122426" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1401848285" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder autoBuildTarget="all" buildPath="${workspace_loc:/chair-language}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1189379358" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.2087572281" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1042094249" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1456640907" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.933243367" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.693871065" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.63597093" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core.private_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.477198171" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.214458962" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.902256772" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1829170429" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.2020401852" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.569768407" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1488369053" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1315654624" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.1371707349" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1996060748" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.839854624" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core.private_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1073670993" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.5872858" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.1261543324" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1107500024" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1034378805" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.54042185" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.541810816" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.941045067" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.1597934870" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.722647960" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1961814596" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1139681496" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.1547913960" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.1561767207" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Debug/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1299142345" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1233417615" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.887156490" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.1637248211" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1259734107" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.205768402" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.1235674827" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1189975935" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1945415602" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1707694858" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.1754441215">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1754441215" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="chair-language" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1754441215" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.1754441215." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.1786992387" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1403086912" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder buildPath="${workspace_loc:/chair-language}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.802216431" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.392119111" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.633255047" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.704925139" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.229066076" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1143784276" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1902979610" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core.private_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1524735089" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.525287970" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.618482322" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1391793995" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.766516552" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1813709154" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.856009006" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.1506737604" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1515917180" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1966274672" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core.private_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.113369080" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.48413392" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.1279974362" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.2074029729" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.698337820" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.977540197" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1936385979" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.1496027139" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.152129262" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.904920227" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1871743044" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.1137421674" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.2060429174" superClass="gnu.cpp.link.option.userobjs" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Release/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.76073871" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1906247813" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1549409145" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.749981478" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.896687193" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1554788536" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.290007928" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1572848902" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1343938317" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1841388933" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="chair-language.org.tizen.nativecore.target.sbi.gcc45.app.395859730" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.908033126">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.1754441215">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="refreshScope"/>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
diff --git a/oobe-language/.exportMap b/oobe-language/.exportMap
new file mode 100644 (file)
index 0000000..de30516
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       global: main;
+       _IO_*;
+       local: *;
+};
diff --git a/oobe-language/.project b/oobe-language/.project
new file mode 100644 (file)
index 0000000..c4f4dc8
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>oobe-language</name>
+       <comment></comment>
+       <projects>
+               <project>oobe-common</project>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+       <filteredResources>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>26</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+                       </matcher>
+               </filter>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>6</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+                       </matcher>
+               </filter>
+       </filteredResources>
+</projectDescription>
diff --git a/oobe-language/.tproject b/oobe-language/.tproject
new file mode 100644 (file)
index 0000000..658e81b
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+    <platforms>
+        <platform>
+            <name>mobile-5.0</name>
+        </platform>
+    </platforms>
+    <package>
+        <blacklist/>
+        <resFallback autoGen="true"/>
+    </package>
+</tproject>
diff --git a/oobe-language/build_def.prop b/oobe-language/build_def.prop
new file mode 100644 (file)
index 0000000..6bb5e2f
--- /dev/null
@@ -0,0 +1,6 @@
+
+# Add pre/post build process
+PREBUILD_DESC = 
+PREBUILD_COMMAND = 
+POSTBUILD_DESC = 
+POSTBUILD_COMMAND = 
diff --git a/oobe-language/inc/app-control.h b/oobe-language/inc/app-control.h
new file mode 100644 (file)
index 0000000..b55009c
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __APP_CONTROL_H__
+#define __APP_CONTROL_H__
+
+#include <app_control.h>
+
+typedef void (*app_control_reply_received_cb)(const char *reply);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb);
+void app_control_save_reply_handler(app_control_h handler);
+void app_control_reply(const char *message);
+
+#endif /*__APP_CONTROL_H__ */
diff --git a/oobe-language/inc/data.h b/oobe-language/inc/data.h
new file mode 100644 (file)
index 0000000..667a82b
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __DATA_H__
+#define __DATA_H__
+
+#include <stdbool.h>
+
+typedef bool (*get_available_language_cb)(const char *language);
+
+bool data_get_language(int language_index, const char **language);
+bool data_get(int index, const char **code, const char **message);
+
+void data_load_languages();
+void data_destroy();
+
+#endif /* __DATA_H__ */
diff --git a/oobe-language/inc/oobe-language.h b/oobe-language/inc/oobe-language.h
new file mode 100644 (file)
index 0000000..86cc4da
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_LANGUAGE_H__
+#define __OOBE_LANGUAGE_H__
+
+#include <app.h>
+#include <Elementary.h>
+#include <system_settings.h>
+#include <efl_extension.h>
+#include <dlog.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "oobe-language"
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.tizen.oobe-language"
+#endif
+
+#endif /* __OOBE_LANGUAGE_H__ */
diff --git a/oobe-language/inc/view-defines.h b/oobe-language/inc/view-defines.h
new file mode 100644 (file)
index 0000000..184e18b
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_DEFINES_H__
+#define __VIEW_DEFINES_H__
+
+#define EDJ_LANGUAGE "edje/oobe-language.edj"
+#define GRP_LANGUAGE "main"
+#define GRP_LANGUAGE_ITEM "item_layout"
+
+#define PART_LANGUAGE_TITLE "title"
+#define PART_LANGUAGE_LIST "list"
+#define PART_LANGUAGE_ITEM_LABEL "item_layout_label"
+
+#endif /* __VIEW_DEFINES_H__ */
diff --git a/oobe-language/inc/view.h b/oobe-language/inc/view.h
new file mode 100644 (file)
index 0000000..7e8da8f
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_H__
+#define __VIEW_H__
+
+#include <Elementary.h>
+#include "data.h"
+
+typedef bool (*languages_query_cb)(const char **language);
+typedef void (*language_selected_cb)(const char *langname);
+typedef void (*load_languages_cb)();
+
+Eina_Bool view_create(void *user_data);
+void view_destroy(void);
+void view_set_callbacks(languages_query_cb languages_query_func, load_languages_cb load_languages_func, language_selected_cb language_selected_func);
+
+void view_layout_language_signal_emit(const char *emission, const char *source);
+
+#endif /* __VIEW_H__ */
diff --git a/oobe-language/inc/xml-loader.h b/oobe-language/inc/xml-loader.h
new file mode 100644 (file)
index 0000000..7475794
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __XML_LANGUAGE_LOADER_H__
+#define __XML_LANGUAGE_LOADER_H__
+
+#include <Elementary.h>
+
+#define __FREE(del, arg) do { \
+       if (arg) { \
+               /*cast any argument to (void*) to avoid build warring*/\
+               del((void *)(arg)); \
+               arg = NULL; \
+       } \
+} while (0)
+#define FREE(arg) __FREE(free, arg)
+#define G_FREE(arg) __FREE(g_free, arg)
+
+typedef struct {
+       char *code;
+       char *message;
+} language_h;
+
+Eina_List *xml_get_languages_list();
+void xml_languages_list_destroy();
+
+#endif /* __XML_LANGUAGE_LOADER_H__ */
diff --git a/oobe-language/project_def.prop b/oobe-language/project_def.prop
new file mode 100644 (file)
index 0000000..0463f7b
--- /dev/null
@@ -0,0 +1,63 @@
+
+# Project Name
+APPNAME = oobe-language
+
+# Project Type
+type = app
+
+# Project Profile
+profile = mobile-5.0
+
+# C/CPP Sources
+USER_SRCS = src/*.c
+
+# EDC Sources
+USER_EDCS =  
+
+# PO Sources
+USER_POS = res/po/*.po
+
+# User Defines
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING 
+USER_CPP_DEFS = 
+
+# User Undefines
+USER_UNDEFS = 
+USER_CPP_UNDEFS = 
+
+# User Libraries
+USER_LIBS = 
+
+# User Objects
+USER_OBJS = 
+
+# User Includes
+## C Compiler
+USER_C_INC_DIRS = inc 
+USER_INC_FILES = 
+## C++ Compiler
+USER_CPP_INC_DIRS = 
+USER_CPP_INC_FILES = 
+
+USER_INC_DIRS = $(USER_C_INC_DIRS) $(USER_CPP_INC_DIRS)
+
+# User Library Path
+USER_LIB_DIRS = 
+
+# EDC Resource Path
+USER_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# EDC Flags
+USER_EXT_EDC_KEYS = EDC0 
+
+USER_EXT_EDC0_EDCS = res/edje/*.edc 
+USER_EXT_EDC0_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EXT_EDC0_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EXT_EDC0_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# Resource Filter
+USER_RES_INCLUDE = 
+USER_RES_EXCLUDE = 
+
diff --git a/oobe-language/res/data/languages_OOBE.xml b/oobe-language/res/data/languages_OOBE.xml
new file mode 100644 (file)
index 0000000..8ea5ebe
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<languages>
+  <language code="ko_KR" name_en="Korean" name_local="한국어" message="언어 선택" />
+  <language code="en_US" name_en="English (US)" name_local="English" message="Select your language" />
+  <language code="pl_PL" name_en="Polish" name_local="Polski" message="Wybierz swój język" />
+  <language code="de_DE" name_en="German" name_local="Deutsch" message="Wähle deine Sprache" />
+  <language code="es_ES" name_en="Spanish" name_local="Español" message="Selecciona tu idioma" />
+</languages>
diff --git a/oobe-language/res/edje/oobe-language.edc b/oobe-language/res/edje/oobe-language.edc
new file mode 100644 (file)
index 0000000..5cfd169
--- /dev/null
@@ -0,0 +1,197 @@
+#include "../../inc/view-defines.h"
+
+#define IMG_LANGUAGE_BG "../res/images/bg.png"
+#define IMG_LANGUAGE_LIST_BG "../res/images/list_bg.png"
+
+#define STATE_LANGUAGE_ITEM_BG "default"
+#define STATE_LANGUAGE_ITEM_BG_HIGHLIGHT "item_bg_highlight"
+
+collections {
+       base_scale: 1.8;
+       
+       fonts {
+               font: "../res/fonts/SamsungOneUI-800_v1.0.ttf" "samsung-one-800";
+               font: "../res/fonts/SamsungOneUI-300_v1.0.ttf" "samsung-one-300";
+               font: "../res/fonts/SamsungOneUI-400_v1.0.ttf" "samsung-one-400";
+       }
+
+       styles {
+               style {
+                       name: "style_title";
+                       base: "font=samsung-one-300 font_size=36 align=center valign=center wrap=word color=#05180Aff";
+               }
+
+               style {
+                       name: "style_list_item_label";
+                       base: "font=samsung-one-400 font_size=26 align=center valign=center wrap=word color=#040404ff";
+               }
+       }
+       
+       images {
+               image: IMG_LANGUAGE_BG COMP;
+               image: IMG_LANGUAGE_LIST_BG COMP;
+       }
+
+       group {
+               name: GRP_LANGUAGE;
+               parts {
+                       part {
+                               name: PART_LANGUAGE_BG;
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; };
+                                       rel2 { relative: 1.0 1.0; };
+                                       image { normal: IMG_LANGUAGE_BG; }
+                               }
+                       }
+                       
+                       part {
+                               name: PART_LANGUAGE_TITLE;
+                               type: TEXTBLOCK;
+                               description {
+                                       rel1.relative: 120/1280 467/720;
+                                       rel2.relative: (120+400)/1280 (467+90)/720;
+                                       color: 0 0 0 255;
+                                       text {
+                                               style: "style_title";
+                                               text: "";
+                                       }
+                               }
+                       }
+                       
+                       part {
+                               name: PART_LANGUAGE_LIST_BG;
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       image {
+                                               normal: IMG_LANGUAGE_LIST_BG;
+                                               border: 8 8 8 8;
+                                       }
+                                       rel.to: PART_LANGUAGE_LIST;
+                                       rel1.offset: -7 -8;
+                                       rel2.offset: 7 8;
+                               }
+                       }
+                       
+                       part {
+                               name: PART_LANGUAGE_LIST;
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.relative: 724/1280 187/720;
+                                       rel2.relative: (724+441)/1280 (187+72*5)/720;
+                               }
+                               desc { "item_1"
+                                       inherit: "default";
+                                       rel2.relative: (724+441)/1280 (187+72*1)/720;
+                               }
+                               desc { "item_2"
+                                       inherit: "default";
+                                       rel2.relative: (724+441)/1280 (187+72*2)/720;
+                               }
+                               desc { "item_3"
+                                       inherit: "default";
+                                       rel2.relative: (724+441)/1280 (187+72*3)/720;
+                               }
+                               desc { "item_4"
+                                       inherit: "default";
+                                       rel2.relative: (724+441)/1280 (187+72*4)/720;
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                               signal: "signal_item_1";
+                               source: "";
+                               action: STATE_SET "item_1";
+                               target: PART_LANGUAGE_LIST;
+                       }
+                       program {
+                               signal: "signal_item_2";
+                               source: "";
+                               action: STATE_SET "item_2";
+                               target: PART_LANGUAGE_LIST;
+                       }
+                       program {
+                               signal: "signal_item_3";
+                               source: "";
+                               action: STATE_SET "item_3";
+                               target: PART_LANGUAGE_LIST;
+                       }
+                       program {
+                               signal: "signal_item_4";
+                               source: "";
+                               action: STATE_SET "item_4";
+                               target: PART_LANGUAGE_LIST;
+                       }
+               }
+       }
+       
+       group {
+               name: GRP_LANGUAGE_ITEM;
+               parts {
+                       part {
+                               name: PART_LANGUAGE_ITEM_BG;
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: STATE_LANGUAGE_ITEM_BG 0.0;
+                                       min: 440 72;
+                                       max: 440 72;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       inherit: STATE_LANGUAGE_ITEM_BG 0.0;
+                                       state: STATE_LANGUAGE_ITEM_BG_HIGHLIGHT 0.0;
+                                       color: 230 238 234 255;
+                               }
+                       }
+                       
+                       part {
+                               name: PART_LANGUAGE_ITEM_SEPARATOR;
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel.to: PART_LANGUAGE_ITEM_BG;
+                                       rel1.relative: 0.0 71/72;
+                                       rel2.relative: 1.0 1.0;
+                                       color: 185 196 188 255;
+                               }
+                       }
+
+                       part {
+                               name: PART_LANGUAGE_ITEM_LABEL;
+                               type: TEXTBLOCK;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       text {
+                                               style: "style_list_item_label";
+                                               text: "";
+                                       }
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               signal: "mouse,down,1";
+                               source: PART_LANGUAGE_ITEM_BG;
+                               action: STATE_SET STATE_LANGUAGE_ITEM_BG_HIGHLIGHT 0.0;
+                               target: PART_LANGUAGE_ITEM_BG;
+                       }
+                       program {
+                               signal: "mouse,up,1";
+                               source: PART_LANGUAGE_ITEM_BG;
+                               action: STATE_SET STATE_LANGUAGE_ITEM_BG 0.0;
+                               target: PART_LANGUAGE_ITEM_BG;
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/oobe-language/res/fonts/SamsungOneUI-300_v1.0.ttf b/oobe-language/res/fonts/SamsungOneUI-300_v1.0.ttf
new file mode 100644 (file)
index 0000000..a60f133
Binary files /dev/null and b/oobe-language/res/fonts/SamsungOneUI-300_v1.0.ttf differ
diff --git a/oobe-language/res/fonts/SamsungOneUI-400_v1.0.ttf b/oobe-language/res/fonts/SamsungOneUI-400_v1.0.ttf
new file mode 100644 (file)
index 0000000..be988fa
Binary files /dev/null and b/oobe-language/res/fonts/SamsungOneUI-400_v1.0.ttf differ
diff --git a/oobe-language/res/fonts/SamsungOneUI-800_v1.0.ttf b/oobe-language/res/fonts/SamsungOneUI-800_v1.0.ttf
new file mode 100644 (file)
index 0000000..ba0a0af
Binary files /dev/null and b/oobe-language/res/fonts/SamsungOneUI-800_v1.0.ttf differ
diff --git a/oobe-language/res/images/bg.png b/oobe-language/res/images/bg.png
new file mode 100644 (file)
index 0000000..86bb201
Binary files /dev/null and b/oobe-language/res/images/bg.png differ
diff --git a/oobe-language/res/images/list_bg.png b/oobe-language/res/images/list_bg.png
new file mode 100644 (file)
index 0000000..5bee352
Binary files /dev/null and b/oobe-language/res/images/list_bg.png differ
diff --git a/oobe-language/res/po/en_US.po b/oobe-language/res/po/en_US.po
new file mode 100644 (file)
index 0000000..0a73e6b
--- /dev/null
@@ -0,0 +1,6 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "TITLE"
+msgstr "Welcome to OOBE for<br><b>IoT Headed<\b>"
+
diff --git a/oobe-language/res/po/pl_PL.po b/oobe-language/res/po/pl_PL.po
new file mode 100644 (file)
index 0000000..791b877
--- /dev/null
@@ -0,0 +1,6 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "TITLE"
+msgstr "Witaj w OOBE dla<br><b>IoT Headed<\b>"
+
diff --git a/oobe-language/shared/res/oobe-language.png b/oobe-language/shared/res/oobe-language.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/oobe-language/shared/res/oobe-language.png differ
diff --git a/oobe-language/src/app-control.c b/oobe-language/src/app-control.c
new file mode 100644 (file)
index 0000000..29522c8
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "app-control.h"
+#include <log.h>
+
+static struct app_control_info {
+       app_control_h handler;
+       app_control_reply_received_cb reply_cb;
+       app_control_h reply_handler;
+} ac_info = {
+       .handler = NULL,
+       .reply_cb = NULL,
+       .reply_handler = NULL
+};
+
+static void _app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb)
+{
+       int ret;
+
+       if (!ac_info.handler) {
+               ret = app_control_create(&ac_info.handler);
+
+               if (ret != APP_CONTROL_ERROR_NONE) {
+                       LOGE("app_control_create() failed. err = %d", ret);
+                   return;
+               }
+       }
+
+       ac_info.reply_cb = reply_cb;
+
+       app_control_set_operation(ac_info.handler, APP_CONTROL_OPERATION_DEFAULT);
+       app_control_set_launch_mode(ac_info.handler, APP_CONTROL_LAUNCH_MODE_GROUP);
+       app_control_set_app_id(ac_info.handler, app_id);
+       app_control_add_extra_data(ac_info.handler, "caller", "oobe-setup");
+
+       if (app_control_send_launch_request(ac_info.handler, _app_control_result_cb, NULL) != APP_CONTROL_ERROR_NONE) {
+               LOGE("Failed to launch %s", app_id);
+       }
+
+       app_control_destroy(ac_info.handler);
+       ac_info.handler = NULL;
+}
+
+void app_control_save_reply_handler(app_control_h handler)
+{
+       int ret;
+
+       ret = app_control_clone(&ac_info.reply_handler, handler);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_clone() failed. err = %d", ret);
+               return;
+       }
+}
+
+void app_control_reply(const char *message)
+{
+       int ret;
+       app_control_h reply;
+
+       ret = app_control_create(&reply);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_create() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_add_extra_data(reply, "reply", message);
+
+       ret = app_control_reply_to_launch_request(reply, ac_info.reply_handler, APP_CONTROL_RESULT_SUCCEEDED);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_reply_to_launch_request() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_destroy(reply);
+       app_control_destroy(ac_info.reply_handler);
+       ac_info.reply_handler = NULL;
+}
+
+static void _app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+       char *value;
+
+       if (result == APP_CONTROL_RESULT_SUCCEEDED) {
+               if (app_control_get_extra_data(reply, "reply", &value) == APP_CONTROL_ERROR_NONE) {
+                       ac_info.reply_cb(value);
+               }
+               else {
+                       LOGE("_app_control_result_cb Failed");
+           }
+       }
+       else {
+               LOGE("_app_control_result_cb APP_CONTROL_RESULT_FAILED.");
+       }
+}
diff --git a/oobe-language/src/data.c b/oobe-language/src/data.c
new file mode 100644 (file)
index 0000000..00069e5
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "data.h"
+#include <log.h>
+#include <utils.h>
+#include <Elementary.h>
+#include "oobe-language.h"
+#include "xml-loader.h"
+
+#define LANGUAGES_XML_PATH "data/languages_OOBE.xml"
+
+static Eina_List *languages_list = NULL;
+
+bool data_get_language(int language_index, const char **language)
+{
+       Eina_List *node = eina_list_nth_list(languages_list, language_index);
+
+       if (node == NULL) {
+               return false;
+       } else {
+               language_h *c = (language_h *)eina_list_data_get(node);
+               if (c == NULL) {
+                       return false;
+               } else {
+                       *language = c->message;
+                       return true;
+               }
+       }
+}
+
+void data_load_languages()
+{
+       char path[PATH_MAX];
+       utils_get_app_resource_path(LANGUAGES_XML_PATH, path, PATH_MAX);
+       languages_list = xml_get_languages_list(path);
+}
+
+void data_destroy()
+{
+       xml_languages_list_destroy();
+}
+
+bool data_get(int language_index, const char **code, const char **message)
+{
+       Eina_List *node = eina_list_nth_list(languages_list, language_index);
+
+       if (node == NULL) {
+               return false;
+       } else {
+               language_h *c = (language_h *)eina_list_data_get(node);
+               if (c == NULL) {
+                       return false;
+               } else {
+                       *code = c->code;
+                       *message = c->message;
+                       return true;
+               }
+       }
+}
diff --git a/oobe-language/src/oobe-language.c b/oobe-language/src/oobe-language.c
new file mode 100644 (file)
index 0000000..6bf387f
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-language.h"
+#include <log.h>
+#include "view.h"
+#include "data.h"
+#include "app-control.h"
+#include "vconf.h"
+
+static bool _get_available_language_cb(const char **country);
+static void _language_selected_cb(const char *langname);
+static void _get_languages_list_cb();
+
+static bool app_create(void *data)
+{
+       return true;
+}
+
+static void app_control(app_control_h app_control, void *data)
+{
+       view_destroy();
+       view_set_callbacks(_get_available_language_cb, _language_selected_cb, _get_languages_list_cb);
+
+       char* app_id = NULL;
+       app_control_get_caller(app_control, &app_id);
+       LOGD("Launched by %s", app_id ? app_id : "unknown caller");
+
+       if (app_id && strcmp(app_id, "org.tizen.oobe") == 0) {
+               view_create(NULL);
+       } else {
+               char *caller = NULL;
+               app_control_get_extra_data(app_control, "caller", &caller);
+
+               if (caller && strcmp(caller, "oobe-setup") == 0) {
+                       LOGD("launched with extra data {caller:oobe-setup}");
+                       view_create(NULL);
+               } else {
+                       LOGE("Failed running app due to wrong app_control caller.");
+                       ui_app_exit();
+               }
+
+               free(caller);
+       }
+
+       free(app_id);
+       app_control_save_reply_handler(app_control);
+}
+
+static void app_pause(void *data)
+{
+}
+
+static void app_resume(void *data)
+{
+}
+
+static void app_terminate(void *data)
+{
+       view_destroy();
+}
+
+static void ui_app_lang_changed(app_event_info_h event_info, void *user_data)
+{
+       int ret;
+       char *language;
+
+       ret = app_event_get_language(event_info, &language);
+       if (ret != APP_ERROR_NONE) {
+               LOGE("app_event_get_language() failed. Err = %d.", ret);
+               return;
+       }
+
+       if (language != NULL) {
+               elm_language_set(language);
+               free(language);
+       }
+}
+
+static void ui_app_orient_changed(app_event_info_h event_info, void *user_data)
+{
+}
+
+static void ui_app_region_changed(app_event_info_h event_info, void *user_data)
+{
+}
+
+static void ui_app_low_battery(app_event_info_h event_info, void *user_data)
+{
+}
+
+static void ui_app_low_memory(app_event_info_h event_info, void *user_data)
+{
+}
+
+int main(int argc, char *argv[])
+{
+       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, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, NULL);
+
+       ret = ui_app_main(argc, argv, &event_callback, NULL);
+       if (ret != APP_ERROR_NONE) {
+               LOGE("app_main() is failed. err = %d", ret);
+       }
+
+       return ret;
+}
+
+static bool _get_available_language_cb(const char **language)
+{
+       static int i = 0;
+       bool ret;
+
+       ret = data_get_language(i, language);
+
+       if (ret) {
+               ++i;
+       } else {
+               LOGI("total languages %d", i);
+
+               char signal_name[20];
+               sprintf(signal_name, "signal_item_%d", i);
+               view_layout_language_signal_emit(signal_name, "");
+
+               i = 0;
+       }
+
+       return ret;
+}
+
+static void _get_languages_list_cb()
+{
+       data_load_languages();
+}
+
+static bool _is_same_string(const char *s1, const char *s2)
+{
+       if (!s1 || !s2)
+               return false;
+
+       return (strncmp(s1, s2, strlen(s1)) == 0 && strlen(s1) == strlen(s2));
+}
+
+static void _language_selected_cb(const char *language)
+{
+       int i = 0;
+       const char *code = NULL;
+       const char *message = NULL;
+
+       while (data_get(i++, &code, &message))
+       {
+               if (_is_same_string(language, message))
+               {
+                       char temp[32] = { 0, };
+                       snprintf(temp, 32, "%s.UTF-8", code);
+                       elm_language_set(temp);
+
+                       int ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, code);
+                       if (ret != SYSTEM_SETTINGS_ERROR_NONE)
+                       {
+                               LOGE("error setting locale language: %d", ret);
+                       }
+
+                       ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, code);
+                       if (ret != SYSTEM_SETTINGS_ERROR_NONE)
+                       {
+                               LOGE("error setting locale country: %d", ret);
+                       }
+
+                       break;
+               }
+       }
+
+       app_control_reply("next");
+       ui_app_exit();
+}
diff --git a/oobe-language/src/view.c b/oobe-language/src/view.c
new file mode 100644 (file)
index 0000000..1424e98
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-language.h"
+#include "view.h"
+#include <log.h>
+#include "view-defines.h"
+#include "app-control.h"
+#include <oobe-common.h>
+
+static struct view_info {
+       Evas_Object *win;
+       Evas_Object *conform;
+       Evas_Object *layout;
+       Evas_Object *language_list;
+       languages_query_cb languages_query_func;
+       language_selected_cb language_selected_func;
+       load_languages_cb load_languages_func;
+} s_info = {
+       .win = NULL,
+       .conform = NULL,
+       .layout = NULL,
+       .language_list = NULL,
+       .languages_query_func = NULL,
+       .language_selected_func = NULL,
+       .load_languages_func = NULL
+};
+
+static bool _is_same_string(const char *s1, const char *s2);
+static Eina_Bool _create_language_layout(void);
+static Evas_Object *_get_language_content_cb(void *data, Evas_Object *obj, const char *part);
+static void _language_item_selected_cb(void *data, Evas_Object *obj, void *event_info);
+
+void view_layout_language_signal_emit(const char *emission, const char *source)
+{
+       elm_object_signal_emit(s_info.layout, emission, source);
+}
+
+Eina_Bool view_create(void *user_data)
+{
+       /* Create the window */
+       s_info.win = utils_view_create_win(PACKAGE);
+       if (s_info.win == NULL) {
+               LOGE("failed to create a window.");
+               return EINA_FALSE;
+       }
+
+       if (elm_win_wm_rotation_supported_get(s_info.win)) {
+               int rots[] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(s_info.win, (const int *)(&rots), 4);
+       }
+
+       elm_win_indicator_opacity_set(s_info.win, ELM_WIN_INDICATOR_TRANSPARENT);
+
+       /* Create the conformant */
+       s_info.conform = utils_view_create_conformant(s_info.win);
+       if (s_info.conform == NULL) {
+               LOGE("failed to create a conformant");
+               return EINA_FALSE;
+       }
+
+       if (!_create_language_layout()) {
+               LOGE("failed to create main layout.");
+               return EINA_FALSE;
+       }
+
+       /* Show the window after main view is set up */
+       evas_object_show(s_info.win);
+
+       return EINA_TRUE;
+}
+
+void view_destroy(void)
+{
+       if (s_info.win == NULL) {
+               return;
+       }
+
+       evas_object_del(s_info.win);
+}
+
+void view_set_callbacks(languages_query_cb languages_query_func, language_selected_cb language_selected_func, load_languages_cb load_languages_func)
+{
+       s_info.languages_query_func = languages_query_func;
+       s_info.language_selected_func = language_selected_func;
+       s_info.load_languages_func = load_languages_func;
+}
+
+static bool _is_same_string(const char *s1, const char *s2)
+{
+       if (!s1 || !s2)
+               return false;
+
+       return (strncmp(s1, s2, strlen(s1)) == 0 && strlen(s1) == strlen(s2));
+}
+
+static Eina_Bool _create_language_layout(void)
+{
+       Elm_Genlist_Item_Class *itc;
+       const char *language = NULL;
+
+       s_info.layout = utils_view_create_set_layout(s_info.conform, EDJ_LANGUAGE, GRP_LANGUAGE, NULL);
+       if (!s_info.layout) {
+               return EINA_FALSE;
+       }
+
+       s_info.language_list = utils_view_create_genlist(s_info.layout, PART_LANGUAGE_LIST);
+       if (!s_info.language_list) {
+               return EINA_FALSE;
+       }
+       elm_genlist_homogeneous_set(s_info.language_list, EINA_TRUE);
+       elm_object_style_set(s_info.language_list, "no_effect");
+
+       itc = utils_view_create_genlist_item_class(_get_language_content_cb);
+       if (!itc) {
+               return EINA_FALSE;
+       }
+
+       if (!s_info.languages_query_func) {
+               LOGE("function language_query_func not assigned.");
+               return EINA_FALSE;
+       }
+
+       s_info.load_languages_func();
+
+       while(s_info.languages_query_func(&language)) {
+               if (language) {
+                       elm_genlist_item_append(s_info.language_list, itc, (void *)language, NULL, ELM_GENLIST_ITEM_NONE, _language_item_selected_cb, (void *)language);
+               }
+       }
+
+       elm_object_translatable_part_text_set(s_info.layout, PART_LANGUAGE_TITLE, "TITLE");
+
+       return EINA_TRUE;
+}
+
+static Evas_Object *_get_language_content_cb(void *data, Evas_Object *obj, const char *part)
+{
+       Evas_Object *layout;
+       const char *text = (const char *)data;
+
+       if (_is_same_string(part, "elm.swallow.content")) {
+               layout = utils_view_create_layout(obj, EDJ_LANGUAGE, GRP_LANGUAGE_ITEM);
+               if (!layout) {
+                       return NULL;
+               }
+
+               evas_object_show(layout);
+
+               if (text) {
+                       elm_object_part_text_set(layout, PART_LANGUAGE_ITEM_LABEL, text);
+               }
+               else {
+                       elm_object_part_text_set(layout, PART_LANGUAGE_ITEM_LABEL, "Unknown");
+               }
+
+               return layout;
+       }
+
+       return NULL;
+}
+
+static void _language_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       const char *language = (const char *)data;
+       LOGD("%s was selected.", language);
+
+       s_info.layout = NULL;
+       s_info.language_list = NULL;
+
+       s_info.language_selected_func(language);
+}
diff --git a/oobe-language/src/xml-loader.c b/oobe-language/src/xml-loader.c
new file mode 100644 (file)
index 0000000..301a3ee
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "xml-loader.h"
+#include <Elementary.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <stdlib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <glib.h>
+#include <log.h>
+
+static void _parse_languages_xml(char *docname);
+static void _walk_languages_xml(xmlNodePtr cur);
+
+static Eina_List *languages_list = NULL;
+
+Eina_List *xml_get_languages_list(char *path)
+{
+       if (NULL == languages_list) {
+               _parse_languages_xml(path);
+       }
+
+       return languages_list;
+}
+
+void xml_languages_list_destroy()
+{
+       Eina_List *list = languages_list;
+       language_h *node;
+
+       while (list) {
+               node = (language_h *)eina_list_data_get(list);
+               if (node) {
+                       G_FREE(node->code);
+                       G_FREE(node->message);
+                       FREE(node);
+               }
+
+               list = eina_list_next(list);
+       }
+
+       languages_list = eina_list_free(languages_list); /* returns NULL */
+
+       xmlCleanupParser();
+}
+
+static void _parse_languages_xml(char *docname)
+{
+       xmlDocPtr doc;
+       xmlNodePtr cur;
+
+       doc = xmlParseFile(docname);
+
+       if (doc == NULL) {
+               LOGE("Document not parsed successfully.");
+               return;
+       }
+
+       cur = xmlDocGetRootElement(doc);
+       if (cur == NULL) {
+               LOGE("Empty document");
+               xmlFreeDoc(doc);
+               return;
+       }
+
+       if (xmlStrcmp(cur->name, (const xmlChar *)"languages")) {
+               LOGE("Document of the wrong type, root node != langlist");
+               xmlFreeDoc(doc);
+               return;
+       }
+
+       cur = cur->xmlChildrenNode;
+       _walk_languages_xml(cur);
+
+       if (doc != NULL) {
+               xmlFreeDoc(doc);
+       }
+}
+
+static void _walk_languages_xml(xmlNodePtr cur)
+{
+       xmlNode *cur_node = NULL;
+       char *code;
+       char *message;
+
+       for (cur_node = cur; cur_node; cur_node = cur_node->next) {
+               if (cur_node->type == XML_ELEMENT_NODE) {
+                       code = (char *)g_strdup((char *)xmlGetProp(cur_node, (const xmlChar *)"code"));
+                       message = (char *)g_strdup((char *)xmlGetProp(cur_node, (const xmlChar *)"message"));
+
+                       language_h *language = (language_h *)calloc(1, sizeof(language_h));
+
+                       if (language) {
+                               language->code = code;
+                               language->message = message;
+                               languages_list = eina_list_append(languages_list, language);
+
+                               LOGD("language code: %s, message: %s", language->code, language->message);
+                       }
+               }
+       }
+}
diff --git a/oobe-language/tizen-manifest.xml b/oobe-language/tizen-manifest.xml
new file mode 100644 (file)
index 0000000..6882720
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.tizen.oobe-language" version="1.0.0">
+    <profile name="mobile"/>
+    <ui-application appid="org.tizen.oobe-language" exec="oobe-language" launch_mode="single" multiple="false" nodisplay="true" taskmanage="false" type="capp">
+        <label>oobe-language</label>
+        <icon>oobe-language.png</icon>
+    </ui-application>
+    <privileges>
+        <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+    </privileges>
+</manifest>
diff --git a/oobe-setup/.cproject b/oobe-setup/.cproject
new file mode 100644 (file)
index 0000000..2715026
--- /dev/null
@@ -0,0 +1,630 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.220763932">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.220763932" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-setup" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.220763932" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.220763932." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.1002022164" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.957207982" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder autoBuildTarget="all" buildPath="${workspace_loc:/chair-setup}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1398175353" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.726656119" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1478610782" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1616546585" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.2098317600" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.2051749138" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1253889490" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.982014734" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.844051842" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.1997777493" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1166974256" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.405404325" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.865123218" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1432071806" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1760859413" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.2080459396" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1184027883" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1862371649" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1754645662" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1300719942" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.149291034" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1743410629" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1263638683" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.648019011" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.324161978" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1863975150" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.536024865" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.1746521252" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.854686339" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.74641828" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.1627503449" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.1579170839" name="Other objects" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Debug/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2023682089" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1636236455" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.40751520" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.1913856783" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1351502952" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.90074355" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.170105375" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.808327176" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.109601569" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1146467662" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.1246813452">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1246813452" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="chair-setup" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1246813452" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.1246813452." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.1420703650" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.4998781" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder buildPath="${workspace_loc:/chair-setup}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1406810560" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.2050452069" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.976158324" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1901570392" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.293437829" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1705641969" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1676228212" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.784594967" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.674506463" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.1500470102" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1032978242" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1320660551" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1878787873" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.2024794406" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.493871313" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.581005137" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.925209836" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.913399556" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1680426868" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.627912591" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1448766274" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.61904676" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1330592354" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1678580908" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.1070716529" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.174063644" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.894364359" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1214592260" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.1818418234" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.886067429" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Release/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2002214524" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1029209955" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1166359535" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.1179297919" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.76422451" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.388094607" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.1029960920" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.208070510" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.458084166" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.384436981" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="chair-setup.org.tizen.nativecore.target.sbi.gcc45.app.803481286" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.220763932">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.1246813452">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="refreshScope"/>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
diff --git a/oobe-setup/.exportMap b/oobe-setup/.exportMap
new file mode 100644 (file)
index 0000000..de30516
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       global: main;
+       _IO_*;
+       local: *;
+};
diff --git a/oobe-setup/.package-stamp b/oobe-setup/.package-stamp
new file mode 100644 (file)
index 0000000..40cbe59
--- /dev/null
@@ -0,0 +1 @@
+TPK
\ No newline at end of file
diff --git a/oobe-setup/.project b/oobe-setup/.project
new file mode 100644 (file)
index 0000000..e1220e0
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>oobe-setup</name>
+       <comment></comment>
+       <projects>
+               <project>oobe-common</project>
+               <project>oobe-country</project>
+               <project>oobe-language</project>
+               <project>oobe-terms</project>
+               <project>oobe-terms-service</project>
+               <project>oobe-wifi</project>
+               <project>oobe-easy-setup</project>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+       <filteredResources>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>26</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+                       </matcher>
+               </filter>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>6</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+                       </matcher>
+               </filter>
+       </filteredResources>
+</projectDescription>
diff --git a/oobe-setup/.tproject b/oobe-setup/.tproject
new file mode 100644 (file)
index 0000000..8c5db6e
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+    <platforms>
+        <platform>
+            <name>mobile-5.0</name>
+        </platform>
+    </platforms>
+    <package>
+        <blacklist/>
+        <resFallback autoGen="true"/>
+        <subProjects>
+            <tizenProject project="oobe-country"/>
+            <tizenProject project="oobe-easy-setup"/>
+            <tizenProject project="oobe-language"/>
+            <tizenProject project="oobe-terms"/>
+            <tizenProject project="oobe-wifi"/>
+            <tizenProject project="oobe-terms-service"/>
+        </subProjects>
+    </package>
+</tproject>
diff --git a/oobe-setup/build_def.prop b/oobe-setup/build_def.prop
new file mode 100644 (file)
index 0000000..6bb5e2f
--- /dev/null
@@ -0,0 +1,6 @@
+
+# Add pre/post build process
+PREBUILD_DESC = 
+PREBUILD_COMMAND = 
+POSTBUILD_DESC = 
+POSTBUILD_COMMAND = 
diff --git a/oobe-setup/edje/fonts/SamsungOneUI-300_v1.0.ttf b/oobe-setup/edje/fonts/SamsungOneUI-300_v1.0.ttf
new file mode 100644 (file)
index 0000000..a60f133
Binary files /dev/null and b/oobe-setup/edje/fonts/SamsungOneUI-300_v1.0.ttf differ
diff --git a/oobe-setup/edje/fonts/SamsungOneUI-400C_v1.0.ttf b/oobe-setup/edje/fonts/SamsungOneUI-400C_v1.0.ttf
new file mode 100644 (file)
index 0000000..324f2c9
Binary files /dev/null and b/oobe-setup/edje/fonts/SamsungOneUI-400C_v1.0.ttf differ
diff --git a/oobe-setup/edje/fonts/SamsungOneUI-400_v1.0.ttf b/oobe-setup/edje/fonts/SamsungOneUI-400_v1.0.ttf
new file mode 100644 (file)
index 0000000..be988fa
Binary files /dev/null and b/oobe-setup/edje/fonts/SamsungOneUI-400_v1.0.ttf differ
diff --git a/oobe-setup/edje/fonts/SamsungOneUI-400_v3.0.ttf b/oobe-setup/edje/fonts/SamsungOneUI-400_v3.0.ttf
new file mode 100644 (file)
index 0000000..b662d56
Binary files /dev/null and b/oobe-setup/edje/fonts/SamsungOneUI-400_v3.0.ttf differ
diff --git a/oobe-setup/edje/fonts/SamsungOneUI-600_v3.0.ttf b/oobe-setup/edje/fonts/SamsungOneUI-600_v3.0.ttf
new file mode 100644 (file)
index 0000000..67d2bb5
Binary files /dev/null and b/oobe-setup/edje/fonts/SamsungOneUI-600_v3.0.ttf differ
diff --git a/oobe-setup/edje/fonts/SamsungOneUI-800_v1.0.ttf b/oobe-setup/edje/fonts/SamsungOneUI-800_v1.0.ttf
new file mode 100644 (file)
index 0000000..ba0a0af
Binary files /dev/null and b/oobe-setup/edje/fonts/SamsungOneUI-800_v1.0.ttf differ
diff --git a/oobe-setup/edje/images/bg.png b/oobe-setup/edje/images/bg.png
new file mode 100644 (file)
index 0000000..f1042d1
Binary files /dev/null and b/oobe-setup/edje/images/bg.png differ
diff --git a/oobe-setup/edje/images/door.png b/oobe-setup/edje/images/door.png
new file mode 100644 (file)
index 0000000..08a07f7
Binary files /dev/null and b/oobe-setup/edje/images/door.png differ
diff --git a/oobe-setup/edje/images/oobe_button/arrow_left.png b/oobe-setup/edje/images/oobe_button/arrow_left.png
new file mode 100644 (file)
index 0000000..351f022
Binary files /dev/null and b/oobe-setup/edje/images/oobe_button/arrow_left.png differ
diff --git a/oobe-setup/edje/images/oobe_button/arrow_right.png b/oobe-setup/edje/images/oobe_button/arrow_right.png
new file mode 100644 (file)
index 0000000..04e60a3
Binary files /dev/null and b/oobe-setup/edje/images/oobe_button/arrow_right.png differ
diff --git a/oobe-setup/edje/images/oobe_button/button.png b/oobe-setup/edje/images/oobe_button/button.png
new file mode 100644 (file)
index 0000000..b69b542
Binary files /dev/null and b/oobe-setup/edje/images/oobe_button/button.png differ
diff --git a/oobe-setup/edje/images/oobe_button/button_circle_32.png b/oobe-setup/edje/images/oobe_button/button_circle_32.png
new file mode 100644 (file)
index 0000000..aa770f1
Binary files /dev/null and b/oobe-setup/edje/images/oobe_button/button_circle_32.png differ
diff --git a/oobe-setup/edje/images/oobe_button/button_circle_60.png b/oobe-setup/edje/images/oobe_button/button_circle_60.png
new file mode 100644 (file)
index 0000000..0dfbbcd
Binary files /dev/null and b/oobe-setup/edje/images/oobe_button/button_circle_60.png differ
diff --git a/oobe-setup/edje/images/oobe_button/button_shadow_77.png b/oobe-setup/edje/images/oobe_button/button_shadow_77.png
new file mode 100644 (file)
index 0000000..b2367a3
Binary files /dev/null and b/oobe-setup/edje/images/oobe_button/button_shadow_77.png differ
diff --git a/oobe-setup/inc/app-control.h b/oobe-setup/inc/app-control.h
new file mode 100644 (file)
index 0000000..b55009c
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __APP_CONTROL_H__
+#define __APP_CONTROL_H__
+
+#include <app_control.h>
+
+typedef void (*app_control_reply_received_cb)(const char *reply);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb);
+void app_control_save_reply_handler(app_control_h handler);
+void app_control_reply(const char *message);
+
+#endif /*__APP_CONTROL_H__ */
diff --git a/oobe-setup/inc/oobe-setup.h b/oobe-setup/inc/oobe-setup.h
new file mode 100644 (file)
index 0000000..dd7f5f1
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_SETUP_H__
+#define __OOBE_SETUP_H__
+
+#include <app.h>
+#include <Elementary.h>
+#include <system_settings.h>
+#include <efl_extension.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "oobe-setup"
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.tizen.oobe-setup"
+#endif
+
+void language_show(void);
+void country_show(void);
+void terms_show(void);
+void wifi_show(void);
+void easy_setup_show(void);
+
+void finish(void);
+
+void done_show(void);
+
+#endif /* __OOBE_SETUP_H__ */
diff --git a/oobe-setup/inc/oobe.h b/oobe-setup/inc/oobe.h
new file mode 100644 (file)
index 0000000..7cc5a6a
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_H__
+#define __OOBE_H__
+#include <stdbool.h>
+#include <glib.h>
+#include <utils.h>
+#include <log.h>
+
+#define OOBE_DONE_FILEPATH "oobe_done"
+
+void oobe_set_done()
+{
+       GError *error = NULL;
+       char filepath[PATH_MAX];
+       utils_get_app_data_path(OOBE_DONE_FILEPATH, filepath, PATH_MAX);
+
+       if (g_file_set_contents(filepath, "", 0, &error) == false) {
+               LOGE("could not create file [%s] error code: %d", error->code);
+               g_error_free(error);
+       }
+}
+
+bool oobe_get_done()
+{
+       char filepath[PATH_MAX];
+       utils_get_app_data_path(OOBE_DONE_FILEPATH, filepath, PATH_MAX);
+
+       return g_file_test(filepath, G_FILE_TEST_EXISTS);
+}
+
+#endif /* __OOBE_H__ */
diff --git a/oobe-setup/inc/view-defines.h b/oobe-setup/inc/view-defines.h
new file mode 100644 (file)
index 0000000..0bd30e6
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_DEFINES_H__
+#define __VIEW_DEFINES_H__
+
+#define EDJ_MAIN "edje/main.edj"
+#define GRP_MAIN "main"
+
+#endif /* __VIEW_DEFINES_H__ */
diff --git a/oobe-setup/inc/view.h b/oobe-setup/inc/view.h
new file mode 100644 (file)
index 0000000..609d7f5
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_H__
+#define __VIEW_H__
+
+#include <Elementary.h>
+
+Eina_Bool view_create(void *user_data);
+void view_destroy(void);
+Eina_Bool view_show_done(void);
+
+#endif /* __VIEW_H__ */
diff --git a/oobe-setup/project_def.prop b/oobe-setup/project_def.prop
new file mode 100644 (file)
index 0000000..f1bb8e4
--- /dev/null
@@ -0,0 +1,63 @@
+
+# Project Name
+APPNAME = oobe-setup
+
+# Project Type
+type = app
+
+# Project Profile
+profile = mobile-5.0
+
+# C/CPP Sources
+USER_SRCS = src/*.c
+
+# EDC Sources
+USER_EDCS =  
+
+# PO Sources
+USER_POS = res/po/*.po
+
+# User Defines
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING 
+USER_CPP_DEFS = 
+
+# User Undefines
+USER_UNDEFS = 
+USER_CPP_UNDEFS = 
+
+# User Libraries
+USER_LIBS = 
+
+# User Objects
+USER_OBJS = 
+
+# User Includes
+## C Compiler
+USER_C_INC_DIRS = inc 
+USER_INC_FILES = 
+## C++ Compiler
+USER_CPP_INC_DIRS = 
+USER_CPP_INC_FILES = 
+
+USER_INC_DIRS = $(USER_C_INC_DIRS) $(USER_CPP_INC_DIRS)
+
+# User Library Path
+USER_LIB_DIRS = 
+
+# EDC Resource Path
+USER_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# EDC Flags
+USER_EXT_EDC_KEYS = EDC0 
+
+USER_EXT_EDC0_EDCS = res/edje/*.edc 
+USER_EXT_EDC0_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EXT_EDC0_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EXT_EDC0_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# Resource Filter
+USER_RES_INCLUDE = 
+USER_RES_EXCLUDE = 
+
diff --git a/oobe-setup/res/edje/main.edc b/oobe-setup/res/edje/main.edc
new file mode 100644 (file)
index 0000000..d96a3ba
--- /dev/null
@@ -0,0 +1,61 @@
+#include "../../inc/view-defines.h"
+
+collections {
+       images {
+               image: "bg.png" COMP;
+               image: "door.png" COMP;
+       }
+       
+       group {
+               name: GRP_MAIN;
+               parts {
+                       rect {
+                               desc {
+                                       color: 255 255 255 255;
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "done_layout";
+               parts {
+                       rect {
+                               desc {
+                                       color: 255 255 255 255;
+                               }
+                       }
+
+                       image {
+                               name: "bg";
+                               desc {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; };
+                                       rel2 { relative: 670/1280 1.0; };
+                                       image { normal: "bg.png"; }
+                               }
+                       }
+
+                       image {
+                               name: "door";
+                               desc {
+                                       state: "default" 0.0;
+                                       rel1.relative: 230/1280 116/720;
+                                       rel2.relative: (230+317)/1280 (116+369)/720;
+                                       image.normal: "door.png";
+                               }
+                       }
+
+                       swallow { "done"; 
+                               mouse_events: 1;
+                               description { "default";
+                                       min: 500 60;
+                                       max: 500 60;
+                                       align: 0 1;
+                                       rel1.offset: 63 -42;
+                                       rel2.offset: 63 -42;
+                               }
+                       }
+               }
+       }
+}
diff --git a/oobe-setup/res/edje/oobe_button.edc b/oobe-setup/res/edje/oobe_button.edc
new file mode 100644 (file)
index 0000000..1b7225f
--- /dev/null
@@ -0,0 +1 @@
+#include "../../../edje-common/oobe_button_definition.edc"
diff --git a/oobe-setup/shared/res/oobe-setup.png b/oobe-setup/shared/res/oobe-setup.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/oobe-setup/shared/res/oobe-setup.png differ
diff --git a/oobe-setup/src/app-control.c b/oobe-setup/src/app-control.c
new file mode 100644 (file)
index 0000000..997483b
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "app-control.h"
+#include <log.h>
+
+static struct app_control_info {
+       app_control_h handler;
+       app_control_reply_received_cb reply_cb;
+       app_control_h reply_handler;
+} ac_info = {
+       .handler = NULL,
+       .reply_cb = NULL,
+       .reply_handler = NULL
+};
+
+static void _app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb)
+{
+       int ret;
+
+       if (!ac_info.handler) {
+               ret = app_control_create(&ac_info.handler);
+
+               if (ret != APP_CONTROL_ERROR_NONE) {
+                   LOGE("app_control_create() failed. err = %d", ret);
+                   return;
+               }
+       }
+
+       ac_info.reply_cb = reply_cb;
+
+       app_control_set_operation(ac_info.handler, APP_CONTROL_OPERATION_DEFAULT);
+       app_control_set_launch_mode(ac_info.handler, APP_CONTROL_LAUNCH_MODE_GROUP);
+       app_control_set_app_id(ac_info.handler, app_id);
+       app_control_add_extra_data(ac_info.handler, "caller", "oobe-setup");
+
+       if (app_control_send_launch_request(ac_info.handler, _app_control_result_cb, NULL) != APP_CONTROL_ERROR_NONE) {
+               LOGE("Failed to launch %s", app_id);
+       }
+
+       app_control_destroy(ac_info.handler);
+       ac_info.handler = NULL;
+}
+
+void app_control_save_reply_handler(app_control_h handler)
+{
+       int ret;
+
+       ret = app_control_clone(&ac_info.reply_handler, handler);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_clone() failed. err = %d", ret);
+               return;
+       }
+}
+
+void app_control_reply(const char *message)
+{
+       int ret;
+       app_control_h reply;
+
+       ret = app_control_create(&reply);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_create() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_add_extra_data(reply, "reply", message);
+
+       ret = app_control_reply_to_launch_request(reply, ac_info.reply_handler, APP_CONTROL_RESULT_SUCCEEDED);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_reply_to_launch_request() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_destroy(reply);
+       app_control_destroy(ac_info.reply_handler);
+       ac_info.reply_handler = NULL;
+}
+
+static void _app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+       char *value;
+
+       if (result == APP_CONTROL_RESULT_SUCCEEDED) {
+               if (app_control_get_extra_data(reply, "reply", &value) == APP_CONTROL_ERROR_NONE) {
+                       ac_info.reply_cb(value);
+               }
+               else {
+                       LOGE("_app_control_result_cb Failed");
+           }
+       }
+       else {
+               LOGE("_app_control_result_cb APP_CONTROL_RESULT_FAILED.");
+       }
+}
diff --git a/oobe-setup/src/country.c b/oobe-setup/src/country.c
new file mode 100644 (file)
index 0000000..3a2328c
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-setup.h"
+#include <log.h>
+#include <app.h>
+#include <app-control.h>
+
+static void _country_reply(const char *reply)
+{
+       LOGI("country reply: %s", reply);
+
+       terms_show();
+}
+
+void country_show()
+{
+       app_control_launch_app("org.tizen.oobe-country", _country_reply);
+}
diff --git a/oobe-setup/src/done.c b/oobe-setup/src/done.c
new file mode 100644 (file)
index 0000000..1c7339e
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-setup.h"
+#include "view.h"
+#include <app.h>
+#include <app-control.h>
+#include "oobe.h"
+
+void done_show()
+{
+       oobe_set_done();
+       view_show_done();
+}
diff --git a/oobe-setup/src/easy-setup.c b/oobe-setup/src/easy-setup.c
new file mode 100644 (file)
index 0000000..f085a8e
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-setup.h"
+#include <log.h>
+#include <app.h>
+#include <app-control.h>
+
+static void _easy_setup_reply(const char *reply)
+{
+    if(!reply)
+    {
+        LOGE("did not get any reply from easy-setup app");
+        ui_app_exit();
+
+    } else {
+        LOGI("easy setup reply: %s", reply);
+           if(0 == strcmp(reply, "done")) {
+            done_show();
+
+        } else if(0 == strcmp(reply, "connected")) {
+            done_show();
+
+        } else if(0 == strcmp(reply, "failed")) {
+            wifi_show();
+
+        } else {
+                       LOGE("unknown reply: %s", reply);
+                       ui_app_exit();
+
+               }
+    }
+}
+
+void easy_setup_show()
+{
+       app_control_launch_app("org.tizen.oobe-easy-setup", _easy_setup_reply);
+}
diff --git a/oobe-setup/src/language.c b/oobe-setup/src/language.c
new file mode 100644 (file)
index 0000000..e8215f5
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-setup.h"
+#include <log.h>
+#include <app.h>
+#include <app-control.h>
+
+static void _language_reply(const char *reply)
+{
+       LOGI("language reply: %s", reply);
+
+       country_show();
+}
+
+void language_show()
+{
+       app_control_launch_app("org.tizen.oobe-language", _language_reply);
+}
diff --git a/oobe-setup/src/oobe-setup.c b/oobe-setup/src/oobe-setup.c
new file mode 100644 (file)
index 0000000..3974ff3
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-setup.h"
+#include "view.h"
+#include "app-control.h"
+#include <log.h>
+#include <oobe-common.h>
+
+static bool app_create(void *user_data)
+{
+       utils_view_load_theme("edje/oobe_button.edj");
+
+       if (!view_create(NULL))
+               return false;
+
+       return true;
+}
+
+static void app_terminate(void *user_data)
+{
+       view_destroy();
+}
+
+static void app_control(app_control_h app_control, void *user_data)
+{
+       char* caller = NULL;
+       app_control_get_extra_data(app_control, "caller", &caller);
+
+       if (!caller)
+       {
+               language_show();
+       }
+       else
+       {
+               if (0 == strcmp(caller, "country"))
+               {
+                       country_show();
+               }
+               else if (0 == strcmp(caller, "language"))
+               {
+                       language_show();
+               }
+               else if (0 == strcmp(caller, "terms"))
+               {
+                       terms_show();
+               }
+               else if (0 == strcmp(caller, "wifi"))
+               {
+                       wifi_show();
+               }
+               else if (0 == strcmp(caller, "easy-setup"))
+               {
+                       easy_setup_show();
+               }
+       }
+}
+
+static void app_pause(void *user_data)
+{
+       LOGD("paused");
+}
+
+static void app_resume(void *user_data)
+{
+       LOGD("resumed");
+}
+
+int main(int argc, char *argv[])
+{
+       int ret = 0;
+
+       ui_app_lifecycle_callback_s event_callback = {0,};
+
+       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;
+
+       ret = ui_app_main(argc, argv, &event_callback, NULL);
+       if (ret != APP_ERROR_NONE) {
+               LOGE("ui_app_main() failed. err = %d", ret);
+       }
+
+       return ret;
+}
diff --git a/oobe-setup/src/terms.c b/oobe-setup/src/terms.c
new file mode 100644 (file)
index 0000000..1780cbd
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-setup.h"
+#include <log.h>
+#include <app.h>
+#include <app-control.h>
+
+static void _terms_reply(const char *reply)
+{
+       LOGI("terms reply: %s", reply);
+
+       if (!reply) {
+               LOGE("did not get any reply from terms app");
+               ui_app_exit();
+
+       } else {
+               if (!strcmp(reply, "back")) {
+                       language_show();
+
+               } else if (!strcmp(reply, "next")) {
+                       easy_setup_show();
+
+               } else {
+                       LOGE("unknown reply: %s", reply);
+                       ui_app_exit();
+
+               }
+       }
+}
+
+void terms_show()
+{
+       app_control_launch_app("org.tizen.oobe-terms", _terms_reply);
+}
diff --git a/oobe-setup/src/view.c b/oobe-setup/src/view.c
new file mode 100644 (file)
index 0000000..b5ecdc8
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "view.h"
+#include <oobe-setup.h>
+#include <log.h>
+#include "view-defines.h"
+#include "app-control.h"
+#include <oobe-common.h>
+
+static struct view_info {
+       Evas_Object *win;
+       Evas_Object *conform;
+       Evas_Object *layout_main;
+} s_info = {
+       .win = NULL,
+       .conform = NULL,
+       .layout_main = NULL,
+};
+
+static Eina_Bool _create_main_layout(void);
+
+Eina_Bool view_create(void *user_data)
+{
+       /* Create the window */
+       s_info.win = utils_view_create_win(PACKAGE);
+       if (s_info.win == NULL) {
+               LOGE("failed to create a window.");
+               return EINA_FALSE;
+       }
+
+       if (elm_win_wm_rotation_supported_get(s_info.win)) {
+               int rots[] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(s_info.win, (const int *)(&rots), 4);
+       }
+
+       elm_win_indicator_opacity_set(s_info.win, ELM_WIN_INDICATOR_TRANSPARENT);
+
+       /* Create the conformant */
+       s_info.conform = utils_view_create_conformant(s_info.win);
+       if (s_info.conform == NULL) {
+               LOGE("failed to create a conformant");
+               return EINA_FALSE;
+       }
+
+       if (!_create_main_layout()) {
+               LOGE("failed to create main layout.");
+               return EINA_FALSE;
+       }
+
+       /* Show the window after main view is set up */
+       evas_object_show(s_info.win);
+
+       return EINA_TRUE;
+}
+
+void view_destroy(void)
+{
+       if (s_info.win == NULL) {
+               return;
+       }
+
+       evas_object_del(s_info.win);
+}
+
+static Eina_Bool _create_main_layout(void)
+{
+       s_info.layout_main = utils_view_create_set_layout(s_info.conform, EDJ_MAIN, GRP_MAIN, NULL);
+       if (!s_info.layout_main) {
+               return EINA_FALSE;
+       }
+
+       return EINA_TRUE;
+}
+
+static void _button_done_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       ui_app_exit();
+}
+
+Eina_Bool view_show_done(void)
+{
+       s_info.layout_main = utils_view_create_set_layout(s_info.conform, EDJ_MAIN, "done_layout", NULL);
+       if (!s_info.layout_main) {
+               return EINA_FALSE;
+       }
+
+    Evas_Object *button_done = elm_button_add(s_info.layout_main);
+    elm_object_style_set(button_done, "middle");
+    elm_object_text_set(button_done, "DONE");
+    evas_object_smart_callback_add(button_done, "clicked", _button_done_clicked_cb, NULL);
+    elm_layout_content_set(s_info.layout_main, "done", button_done);
+
+       return EINA_TRUE;
+}
diff --git a/oobe-setup/src/wifi.c b/oobe-setup/src/wifi.c
new file mode 100644 (file)
index 0000000..896bf27
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-setup.h"
+#include <log.h>
+#include <app.h>
+#include <app-control.h>
+
+static void _wifi_reply(const char *reply)
+{
+       LOGI("wifi reply: %s", reply);
+
+               if (!reply) {
+                       LOGE("did not get any reply from wifi app");
+                       ui_app_exit();
+
+               } else {
+                       if (!strcmp(reply, "back")) {
+                               easy_setup_show();
+
+                       } else if (!strcmp(reply, "next")) {
+                               done_show();
+
+                       } else {
+                               LOGE("unknown reply: %s", reply);
+                               ui_app_exit();
+
+                       }
+               }
+}
+
+void wifi_show()
+{
+       app_control_launch_app("org.tizen.oobe-wifi", _wifi_reply);
+}
diff --git a/oobe-setup/tizen-manifest.xml b/oobe-setup/tizen-manifest.xml
new file mode 100644 (file)
index 0000000..cc5547b
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.tizen.oobe" version="1.0.0">
+    <profile name="mobile"/>
+    <ui-application appid="org.tizen.oobe" exec="oobe-setup" launch_mode="single" multiple="false" nodisplay="true" taskmanage="true" type="capp">
+        <label>oobe-setup</label>
+        <icon>oobe-setup.png</icon>
+    </ui-application>
+    <privileges>
+        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+    </privileges>
+</manifest>
diff --git a/oobe-terms-service/.cproject b/oobe-terms-service/.cproject
new file mode 100644 (file)
index 0000000..42d08e2
--- /dev/null
@@ -0,0 +1,680 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1771052254">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1771052254" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-terms-service" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1771052254" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1771052254." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.883054951" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.82302401" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder autoBuildTarget="all" buildPath="${workspace_loc:/oobe-terms-service}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1006998537" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.271128087" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1973159557" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1610941510" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1014115884" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.119147519" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1519390966" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core.private_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1723317321" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1516224894" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.579651316" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1442892594" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.1720326232" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.288154381" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1558542174" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.739556753" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.1524462926" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.114998270" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1965793460" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core.private_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1284577327" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.853288725" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.1429553947" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.106730192" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1745485515" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1440201897" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.2118062950" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.695006830" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.556597127" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.507260759" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1771933990" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.2142135289" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.796467041" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.574186977" name="Other objects" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Debug/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1274571877" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.2124075976" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1792055618" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.867076687" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.498678770" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.695334107" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.554799398" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1132067018" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.315483199" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1843629455" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.558083366">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.558083366" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-terms-service" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.558083366" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.558083366." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.787764885" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.679082531" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder buildPath="${workspace_loc:/oobe-terms-service}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1276789770" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.183610464" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.526254272" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1361871148" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1275167161" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1481609847" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1625938031" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core.private_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1624094657" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.702989537" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.847103764" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1602528512" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.528820358" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.195229005" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1141740227" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.1153194901" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1045214746" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.591293827" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core.private_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.129080220" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.815288032" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.1615082674" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.71108739" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.72250852" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1222627783" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.2030394798" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.1760233758" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.181792543" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1132500928" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1089495630" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.1837466585" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.185791624" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Release/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1259037305" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.938448377" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1202105139" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.822395831" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.190363339" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1094091715" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.68408310" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.25169914" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1282069730" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1715179988" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="oobe-terms-service.org.tizen.nativecore.target.sbi.gcc45.app.1268001574" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.558083366">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.1771052254">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="refreshScope" versionNumber="2">
+               <configuration configurationName="Debug">
+                       <resource resourceType="PROJECT" workspacePath="/oobe-terms-service"/>
+               </configuration>
+               <configuration configurationName="Release">
+                       <resource resourceType="PROJECT" workspacePath="/oobe-terms-service"/>
+               </configuration>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+</cproject>
diff --git a/oobe-terms-service/.exportMap b/oobe-terms-service/.exportMap
new file mode 100644 (file)
index 0000000..de30516
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       global: main;
+       _IO_*;
+       local: *;
+};
diff --git a/oobe-terms-service/.project b/oobe-terms-service/.project
new file mode 100644 (file)
index 0000000..c690346
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>oobe-terms-service</name>
+       <comment></comment>
+       <projects>
+               <project>oobe-common</project>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+       <filteredResources>
+               <filter>
+                       <id>1568972231018</id>
+                       <name></name>
+                       <type>26</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+                       </matcher>
+               </filter>
+               <filter>
+                       <id>1568972231036</id>
+                       <name></name>
+                       <type>6</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+                       </matcher>
+               </filter>
+       </filteredResources>
+</projectDescription>
diff --git a/oobe-terms-service/.settings/org.eclipse.cdt.codan.core.prefs b/oobe-terms-service/.settings/org.eclipse.cdt.codan.core.prefs
new file mode 100644 (file)
index 0000000..ef739f5
--- /dev/null
@@ -0,0 +1,71 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.codan.checkers.errnoreturn=Warning
+org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false}
+org.eclipse.cdt.codan.checkers.errreturnvalue=Error
+org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"}
+org.eclipse.cdt.codan.checkers.nocommentinside=-Error
+org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"}
+org.eclipse.cdt.codan.checkers.nolinecomment=-Error
+org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"}
+org.eclipse.cdt.codan.checkers.noreturn=Error
+org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false}
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=-Error
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"}
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"}
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false}
+org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
+org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"}
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true}
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments=-Error
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"}
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"}
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"}
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"}
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"}
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false}
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false}
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")}
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"}
diff --git a/oobe-terms-service/.tproject b/oobe-terms-service/.tproject
new file mode 100644 (file)
index 0000000..658e81b
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+    <platforms>
+        <platform>
+            <name>mobile-5.0</name>
+        </platform>
+    </platforms>
+    <package>
+        <blacklist/>
+        <resFallback autoGen="true"/>
+    </package>
+</tproject>
diff --git a/oobe-terms-service/build_def.prop b/oobe-terms-service/build_def.prop
new file mode 100644 (file)
index 0000000..6bb5e2f
--- /dev/null
@@ -0,0 +1,6 @@
+
+# Add pre/post build process
+PREBUILD_DESC = 
+PREBUILD_COMMAND = 
+POSTBUILD_DESC = 
+POSTBUILD_COMMAND = 
diff --git a/oobe-terms-service/inc/data.h b/oobe-terms-service/inc/data.h
new file mode 100644 (file)
index 0000000..a44ff9d
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __DATA_H__
+#define __DATA_H__
+#include <stdbool.h>
+
+#define LATEST_TERMS_JSON_FILENAME "latest_terms.json"
+#define ACCEPTED_TERMS_JSON_FILENAME "accepted_terms.json"
+
+struct term {
+       const char *title;
+       bool is_required;
+       bool is_accepted;
+       const char *content;
+};
+
+struct terms_data {
+       int latest_version;
+       int check_interval;
+       const char *language;
+       const char *region;
+       int terms_count;
+       struct term *terms;
+};
+
+struct terms_data* terms_create_from_file(const char *file_name);
+struct terms_data* terms_create_from_text(const char *json);
+void terms_destroy(struct terms_data* terms);
+
+#endif /* __DATA_H__ */
diff --git a/oobe-terms-service/inc/http-get.h b/oobe-terms-service/inc/http-get.h
new file mode 100644 (file)
index 0000000..4b65ac9
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __HTTP_GET_H__
+#define __HTTP_GET_H__
+#include <stdbool.h>
+
+int http_get_text(const char *url, char **response);
+
+#endif /* __HTTP_GET_H__ */
diff --git a/oobe-terms-service/inc/oobe-terms-service.h b/oobe-terms-service/inc/oobe-terms-service.h
new file mode 100644 (file)
index 0000000..edb6d84
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_TERMS_SERVICE_H__
+#define __OOBE_TERMS_SERVICE_H__
+
+#include <app.h>
+#include <Elementary.h>
+#include <dlog.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "oobe-terms-service"
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.tizen.oobe-terms-service"
+#endif
+
+#endif /* __OOBE_TERMS_SERVICE_H__ */
diff --git a/oobe-terms-service/inc/oobe.h b/oobe-terms-service/inc/oobe.h
new file mode 100644 (file)
index 0000000..fde5e10
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_H__
+#define __OOBE_H__
+#include <stdbool.h>
+#include <glib.h>
+#include "utils.h"
+
+#define OOBE_DONE_FILEPATH "oobe_done"
+
+void oobe_set_done()
+{
+       GError *error = NULL;
+       char filepath[PATH_MAX];
+       utils_get_app_data_path(OOBE_DONE_FILEPATH, filepath, PATH_MAX);
+
+       if (g_file_set_contents(filepath, "", 0, &error) == false) {
+               LOGE("could not create file [%s] error code: %d", error->code);
+               g_error_free(error);
+       }
+}
+
+bool oobe_get_done()
+{
+       char filepath[PATH_MAX];
+       utils_get_app_data_path(OOBE_DONE_FILEPATH, filepath, PATH_MAX);
+
+       return g_file_test(filepath, G_FILE_TEST_EXISTS);
+}
+
+#endif /* __OOBE_H__ */
diff --git a/oobe-terms-service/inc/terms.h b/oobe-terms-service/inc/terms.h
new file mode 100644 (file)
index 0000000..c893b99
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __TERMS_H__
+#define __TERMS_H__
+#include <stdbool.h>
+#include "data.h"
+
+void terms_read_server_url(void);
+
+int terms_get_accepted_version();
+int terms_get_latest_version();
+int terms_get_pooling_interval();
+
+void terms_download_latest(int version);
+
+#endif /* __TERMS_H__ */
diff --git a/oobe-terms-service/project_def.prop b/oobe-terms-service/project_def.prop
new file mode 100644 (file)
index 0000000..3d893e7
--- /dev/null
@@ -0,0 +1,58 @@
+
+# Project Name
+APPNAME = oobe-terms-service
+
+# Project Type
+type = app
+
+# Project Profile
+profile = mobile-5.0
+
+# C/CPP Sources
+USER_SRCS = src/*.c 
+
+# EDC Sources
+USER_EDCS =  
+
+# PO Sources
+USER_POS = 
+
+# User Defines
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING 
+USER_CPP_DEFS = 
+
+# User Undefines
+USER_UNDEFS = 
+USER_CPP_UNDEFS = 
+
+# User Libraries
+USER_LIBS = 
+
+# User Objects
+USER_OBJS = 
+
+# User Includes
+## C Compiler
+USER_C_INC_DIRS = inc 
+USER_INC_FILES = 
+## C++ Compiler
+USER_CPP_INC_DIRS = 
+USER_CPP_INC_FILES = 
+
+USER_INC_DIRS = $(USER_C_INC_DIRS) $(USER_CPP_INC_DIRS)
+
+# User Library Path
+USER_LIB_DIRS = lib 
+
+# EDC Resource Path
+USER_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} 
+USER_EDCS_SOUND_DIRS = ${OUTPUT_DIR} 
+USER_EDCS_FONT_DIRS = ${OUTPUT_DIR} 
+
+# EDC Flags
+USER_EXT_EDC_KEYS = 
+
+# Resource Filter
+USER_RES_INCLUDE = 
+USER_RES_EXCLUDE = 
+
diff --git a/oobe-terms-service/res/data/terms_server_url b/oobe-terms-service/res/data/terms_server_url
new file mode 100644 (file)
index 0000000..76b658a
--- /dev/null
@@ -0,0 +1 @@
+http://106.116.47.164:5001/latest_version
\ No newline at end of file
diff --git a/oobe-terms-service/shared/res/oobe-terms-service.png b/oobe-terms-service/shared/res/oobe-terms-service.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/oobe-terms-service/shared/res/oobe-terms-service.png differ
diff --git a/oobe-terms-service/src/data.c b/oobe-terms-service/src/data.c
new file mode 100644 (file)
index 0000000..3f8e315
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "data.h"
+#include <log.h>
+#include <json-glib/json-glib.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+struct terms_data* terms_create_from_file(const char *file_name) {
+       struct terms_data* result = NULL;
+       char *json = NULL;
+       gsize size;
+       GError *error = NULL;
+
+       if (g_file_test(file_name, G_FILE_TEST_EXISTS)) {
+               if (g_file_get_contents(file_name, &json, &size, &error)) {
+                       result = terms_create_from_text(json);
+                       free(json);
+               } else {
+                       LOGE("cannot read file [%s] error code: %d", file_name, error->code);
+                       g_error_free(error);
+               }
+       } else {
+               LOGE("file does not exist [%s]", file_name);
+       }
+
+       return result;
+}
+
+static JsonNode *_parse_string(JsonParser *parser, const char *json) {
+       GError *err = NULL;
+       if (!json_parser_load_from_data(parser, json, -1, &err)) {
+               LOGE(
+                               "Function \"json_parser_load_from_data()\" failed with message: %s",
+                               err->message);
+               g_error_free(err);
+               return NULL;
+       }
+       return json_parser_get_root(parser);
+}
+
+static const char *_extract_string_from_json(JsonObject *entry, const char *key) {
+       char *result = NULL;
+       if (json_object_has_member(entry, key)) {
+               const char *json_string = (const char *) json_object_get_string_member(
+                               entry, key);
+               int length = 1 + strlen(json_string);
+               result = malloc(length);
+               snprintf(result, length, "%s", json_string);
+       } else {
+               LOGD("json has no member: %s", key);
+       }
+       return result;
+}
+
+static void _on_deserialize_term_detail(JsonArray *array, guint index,
+               JsonNode *element, gpointer user_data) {
+       struct term *details = (struct term *) user_data;
+       JsonObject *entry = json_node_get_object(element);
+
+       if (json_object_has_member(entry, "is_required"))
+               details[index].is_required = json_object_get_boolean_member(entry,
+                               "is_required");
+       else
+               LOGD("json has no member is_required");
+       details[index].title = _extract_string_from_json(entry, "title");
+       details[index].content = _extract_string_from_json(entry, "content");
+
+       details[index].is_accepted = false;
+}
+
+static struct terms_data* _deserialize_terms_entry(JsonObject *entry) {
+       struct terms_data* result = malloc(sizeof(struct terms_data));
+       if (json_object_has_member(entry, "latest_version"))
+               result->latest_version = json_object_get_int_member(entry,
+                               "latest_version");
+       if (json_object_has_member(entry, "check_interval"))
+               result->check_interval = json_object_get_int_member(entry,
+                               "check_interval");
+       result->language = _extract_string_from_json(entry, "language");
+       result->region = _extract_string_from_json(entry, "region");
+
+       JsonArray *json_array = json_object_get_array_member(entry, "terms");
+       if (json_array != NULL) {
+               result->terms_count = json_array_get_length(json_array);
+               result->terms = malloc(sizeof(struct term) * result->terms_count);
+               json_array_foreach_element(json_array, _on_deserialize_term_detail,
+                               result->terms);
+       } else {
+               LOGD("json has no terms details");
+               result->terms_count = 0;
+               result->terms = NULL;
+       }
+       return result;
+}
+
+struct terms_data* terms_create_from_text(const char *json) {
+       struct terms_data* result = NULL;
+       JsonParser *parser = json_parser_new();
+       JsonNode *root = _parse_string(parser, json);
+       JsonArray *array = json_node_get_array(root);
+       if (array == 0) {
+               JsonObject *entry = json_node_get_object(root);
+               if (entry != NULL)
+                       result = _deserialize_terms_entry(entry);
+               else
+                       LOGE("Json has no data");
+       } else {
+               LOGE("unsupported exception parsing json: array instead of object");
+       }
+       g_object_unref(parser);
+       return result;
+}
+
+void terms_destroy(struct terms_data* terms) {
+       if (terms != NULL) {
+               if (terms->region != NULL)
+                       free((void*) terms->region);
+               if (terms->language != NULL)
+                       free((void*) terms->language);
+               if (terms->terms != NULL) {
+                       for (int i = 0; i < terms->terms_count; i++) {
+                               if (terms->terms[i].title != NULL)
+                                       free((void*) terms->terms[i].title);
+                               if (terms->terms[i].content != NULL)
+                                       free((void*) terms->terms[i].content);
+                       }
+                       free(terms->terms);
+               }
+               free(terms);
+       }
+}
diff --git a/oobe-terms-service/src/http-get.c b/oobe-terms-service/src/http-get.c
new file mode 100644 (file)
index 0000000..95f3a26
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "http-get.h"
+#include <log.h>
+#include "oobe-terms-service.h"
+#include <curl/curl.h>
+#include <json-glib/json-glib.h>
+
+#define HTTP_GET_TIMEOUT 7L
+
+struct MemoryStruct {
+       char *memory;
+       size_t size;
+};
+
+static size_t _write_cb(void *contents, size_t size, size_t nmemb, void *userp) {
+       size_t realsize = size * nmemb;
+       struct MemoryStruct *mem = (struct MemoryStruct *) userp;
+
+       char *ptr = realloc(mem->memory, mem->size + realsize + 1);
+       if (ptr == NULL) {
+               /* out of memory! */
+               LOGE("not enough memory (realloc returned NULL)\n");
+               return 0;
+       }
+
+       mem->memory = ptr;
+       memcpy(&(mem->memory[mem->size]), contents, realsize);
+       mem->size += realsize;
+       mem->memory[mem->size] = 0;
+
+       return realsize;
+}
+
+int http_get_text(const char *url, char **response) {
+       int result = -1;
+       *response = NULL;
+       CURL *curl;
+       curl_global_init(CURL_GLOBAL_DEFAULT);
+       curl = curl_easy_init();
+       if (curl) {
+               struct MemoryStruct chunk = { malloc(1), 0 };
+               curl_easy_setopt(curl, CURLOPT_URL, url);
+               curl_easy_setopt(curl, CURLOPT_TIMEOUT, HTTP_GET_TIMEOUT);
+               curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _write_cb);
+               curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void * )&chunk);
+               CURLcode res = curl_easy_perform(curl);
+               if (res == CURLE_OK) {
+                       *response = chunk.memory;
+                       result = chunk.size;
+               } else {
+                       LOGE("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
+                       free(chunk.memory);
+               }
+               curl_easy_cleanup(curl);
+       }
+       curl_global_cleanup();
+       if(*response==NULL)
+               LOGE("response is null");
+       return result;
+}
diff --git a/oobe-terms-service/src/oobe-terms-service.c b/oobe-terms-service/src/oobe-terms-service.c
new file mode 100644 (file)
index 0000000..227b8f3
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-terms-service.h"
+#include <tizen.h>
+#include <service_app.h>
+#include <Ecore.h>
+#include <json-glib/json-glib.h>
+#include <log.h>
+#include "terms.h"
+#include "oobe.h"
+
+static Eina_Bool _check_terms(void *data);
+static bool _schedule_next_check_terms();
+static void _request_terms_agreement();
+
+bool service_app_create(void *data) {
+       terms_read_server_url();
+       _check_terms(NULL);
+       return true;
+}
+
+void service_app_terminate(void *data) {
+}
+
+void service_app_control(app_control_h app_control, void *data) {
+}
+
+static void service_app_lang_changed(app_event_info_h event_info,
+               void *user_data) {
+       /*APP_EVENT_LANGUAGE_CHANGED*/
+       return;
+}
+
+static void service_app_region_changed(app_event_info_h event_info,
+               void *user_data) {
+       /*APP_EVENT_REGION_FORMAT_CHANGED*/
+}
+
+static void service_app_low_battery(app_event_info_h event_info,
+               void *user_data) {
+       /*APP_EVENT_LOW_BATTERY*/
+}
+
+static void service_app_low_memory(app_event_info_h event_info, void *user_data) {
+       /*APP_EVENT_LOW_MEMORY*/
+}
+
+int main(int argc, char* argv[]) {
+       char ad[50] = { 0, };
+       service_app_lifecycle_callback_s event_callback;
+       app_event_handler_h handlers[5] = { NULL, };
+
+       event_callback.create = service_app_create;
+       event_callback.terminate = service_app_terminate;
+       event_callback.app_control = service_app_control;
+
+       service_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY],
+                       APP_EVENT_LOW_BATTERY, service_app_low_battery, &ad);
+       service_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY],
+                       APP_EVENT_LOW_MEMORY, service_app_low_memory, &ad);
+       service_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED],
+                       APP_EVENT_LANGUAGE_CHANGED, service_app_lang_changed, &ad);
+       service_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED],
+                       APP_EVENT_REGION_FORMAT_CHANGED, service_app_region_changed, &ad);
+
+       return service_app_main(argc, argv, &event_callback, ad);
+}
+
+static Eina_Bool _check_terms(void *data) {
+       LOGD("*** CHECK FOR NEW TERMS ***");
+
+       bool oobe_done = oobe_get_done();
+       if (oobe_done) {
+               int accepted_version = terms_get_accepted_version();
+               int latest_version = terms_get_latest_version();
+               LOGI("accepted version: %d, latest version: %d", accepted_version, latest_version);
+
+               if(accepted_version <= 0) {
+                       if (latest_version <= 0)
+                               LOGW("there are neither latest nor accepted terms");
+                       else
+                               _request_terms_agreement();
+               } else {
+                       terms_download_latest(accepted_version);
+
+                       latest_version = terms_get_latest_version();
+                       LOGI("latest version: %d", latest_version);
+                       if (latest_version <= 0 )
+                               LOGW("there is no file with latest terms or access is denied");
+                       else if (accepted_version < latest_version)
+                               _request_terms_agreement();
+               }
+       } else {
+               LOGD("OOBE is not done yet. Skipping terms check.");
+       }
+
+       _schedule_next_check_terms();
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static bool _schedule_next_check_terms() {
+       int interval = terms_get_pooling_interval();
+       ecore_timer_add(interval, _check_terms, NULL);
+       LOGD("scheduled next check for new terms in %d sec", interval);
+       return true;
+}
+
+static void _request_terms_agreement() {
+       const char* target_app_id = "org.tizen.oobe-terms";
+       LOGD("launching terms manager [%s]", target_app_id);
+
+       app_control_h handler;
+       int ret = app_control_create(&handler);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_create() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_set_operation(handler, APP_CONTROL_OPERATION_DEFAULT);
+       app_control_set_app_id(handler, target_app_id);
+       app_control_add_extra_data(handler, "caller", "oobe-terms-service");
+
+       int error = app_control_send_launch_request(handler, NULL, NULL);
+       if (error != APP_CONTROL_ERROR_NONE) {
+               LOGE("Failed to launch %s, error: %d", target_app_id, error);
+       }
+
+       app_control_destroy(handler);
+}
diff --git a/oobe-terms-service/src/terms.c b/oobe-terms-service/src/terms.c
new file mode 100644 (file)
index 0000000..39ce958
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "terms.h"
+#include <log.h>
+#include <stdlib.h>
+#include <json-glib/json-glib.h>
+#include <stdio.h>
+#include "data.h"
+#include "http-get.h"
+#include "oobe-terms-service.h"
+#include <utils.h>
+
+#define DEFAULT_POOLING_INTERVAL 10
+#define REST_API_QUERY_ARGS "?current_version=%d"
+#define REST_API_URL_PATH "data/terms_server_url"
+
+static char* rest_api_url = NULL;
+
+void terms_read_server_url(void) {
+       gsize size;
+       GError *error = NULL;
+       char path[PATH_MAX];
+       utils_get_app_resource_path(REST_API_URL_PATH, path, PATH_MAX);
+       if (g_file_get_contents(path, &rest_api_url, &size, &error) == false) {
+               LOGW("cannot read terms server url from [%s]", path);
+               g_error_free(error);
+       }
+}
+
+static int _get_version(const char* file) {
+       int result = -1;
+       struct terms_data* terms = terms_create_from_file(file);
+       if (terms != NULL) {
+               result = terms->latest_version;
+               terms_destroy(terms);
+       } else {
+               LOGW("cannot get version from [%s]", file);
+       }
+       return result;
+}
+
+int terms_get_accepted_version() {
+       char file[PATH_MAX];
+       utils_get_app_data_path(ACCEPTED_TERMS_JSON_FILENAME, file, PATH_MAX);
+       return _get_version(file);
+}
+
+int terms_get_latest_version() {
+       char file[PATH_MAX];
+       utils_get_app_data_path(LATEST_TERMS_JSON_FILENAME, file, PATH_MAX);
+       return _get_version(file);
+}
+
+int terms_get_pooling_interval() {
+       int result = DEFAULT_POOLING_INTERVAL;
+       char file[PATH_MAX];
+       utils_get_app_data_path(LATEST_TERMS_JSON_FILENAME, file, PATH_MAX);
+       struct terms_data* terms = terms_create_from_file(file);
+       if (terms != NULL) {
+               result = terms->check_interval;
+               terms_destroy(terms);
+       } else {
+               LOGW("default pooling interval [%d] cannot read from [%s]", result, file);
+       }
+       return result;
+}
+
+static int _terms_download(const char* url, char **response, int *total_time_msec)
+{
+       gint64 download_start_time, download_end_time;
+
+       download_start_time = g_get_monotonic_time();
+       int status = http_get_text(url, response);
+       download_end_time = g_get_monotonic_time();
+
+       if (total_time_msec != NULL)
+               *total_time_msec = (download_end_time - download_start_time) / 1000;
+
+       return status;
+}
+
+void terms_download_latest(int version) {
+    char url[PATH_MAX];
+       snprintf(url, PATH_MAX, "%s"REST_API_QUERY_ARGS, rest_api_url, version);
+       char file[PATH_MAX];
+       utils_get_app_data_path(LATEST_TERMS_JSON_FILENAME, file, PATH_MAX);
+
+       LOGD("terms download started [%s]", url);
+
+       char *http_response;
+       int total_time_msec = -1;
+       int http_result = _terms_download(url, &http_response, &total_time_msec);
+
+       if (http_result > -1)
+       {
+               LOGD("terms download success [%d msec]", total_time_msec);
+
+               struct terms_data* terms = terms_create_from_text(http_response);
+               if (terms == NULL)
+               {
+                       LOGW("invalid terms");
+               } else {
+                       LOGD("terms downloaded version: %d, terms count: %d", terms->latest_version, terms->terms_count);
+                       bool new_terms = terms->latest_version > version && terms->terms_count > 0;
+                       if (new_terms) {
+                               if (utils_save_to_file(file, http_response)) {
+                                       LOGD("new terms saved to file");
+                               } else {
+                                       LOGW("new terms not saved to file");
+                               }
+                       }
+               }
+       } else {
+               LOGW("terms download failed [%d msec]", total_time_msec);
+       }
+
+       free(http_response);
+}
diff --git a/oobe-terms-service/tizen-manifest.xml b/oobe-terms-service/tizen-manifest.xml
new file mode 100644 (file)
index 0000000..7c4ec50
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.tizen.oobe-terms-service" version="1.0.0">
+    <profile name="mobile"/>
+    <service-application appid="org.tizen.oobe-terms-service" exec="oobe-terms-service" multiple="false" nodisplay="true" on-boot="true" taskmanage="false" type="capp">
+        <label>oobe-terms-service</label>
+        <icon>oobe-terms-service.png</icon>
+    </service-application>
+    <privileges>
+        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+    </privileges>
+</manifest>
diff --git a/oobe-terms/.cproject b/oobe-terms/.cproject
new file mode 100644 (file)
index 0000000..94a764b
--- /dev/null
@@ -0,0 +1,642 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1132340535">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1132340535" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-terms" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1132340535" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1132340535." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.1758651829" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1729440701" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder autoBuildTarget="all" buildPath="${workspace_loc:/chair-terms-of-use}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.766914387" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1560051659" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.951767324" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.147830237" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1135892685" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.713195556" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1467226591" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.54044137" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1847518705" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.938923241" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1364395130" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.1937284127" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2114648697" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.556044856" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1137957842" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.817058148" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1494026741" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.785361609" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1820305113" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.853551241" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.249101537" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.380404651" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1482943164" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.files.1121295009" name="Include files (-include)" superClass="gnu.c.compiler.option.include.files" valueType="includeFiles"/>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.284630802" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1497785924" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1036398224" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.1026952576" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.2113809926" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1382818662" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1917152325" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.1246924275" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.1790847289" name="Other objects" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Debug/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.595077585" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1345746271" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1008684273" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.1550853211" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.136673520" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.677185404" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.481169627" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1996271978" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.613701020" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1109607404" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.2041873344">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.2041873344" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="chair-terms-of-use" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.2041873344" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.2041873344." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.82936990" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1175653673" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder buildPath="${workspace_loc:/chair-terms-of-use}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.365818542" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1458182869" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.349072013" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1945522945" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1721825734" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1185106180" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.587522369" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1430334630" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.516463311" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.540266796" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1997956667" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1878147696" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.713553538" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1609225144" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.1972616276" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.271701437" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1552841047" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.123633452" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.639894275" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.74409840" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1207868990" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.files.2017324231" name="Include files (-include)" superClass="gnu.c.compiler.option.include.files" useByScannerDiscovery="false" valueType="includeFiles">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Release/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2118065212" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.15890011" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.643414786" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.991589559" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.284656172" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.698492123" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1978511637" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.10043147" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.1016166710" name="Other objects" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Release/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1209366601" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1971418582" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.900542412" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.1494341108" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1047837811" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1041800284" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.2018668398" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.531805729" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.11787761" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.286594379" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="chair-terms-of-use.org.tizen.nativecore.target.sbi.gcc45.app.14608660" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.1132340535">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.2041873344">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+       <storageModule moduleId="refreshScope" versionNumber="2">
+               <configuration configurationName="Debug">
+                       <resource resourceType="PROJECT" workspacePath="/oobe-terms"/>
+               </configuration>
+               <configuration configurationName="Release">
+                       <resource resourceType="PROJECT" workspacePath="/oobe-terms"/>
+               </configuration>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+</cproject>
diff --git a/oobe-terms/.exportMap b/oobe-terms/.exportMap
new file mode 100644 (file)
index 0000000..de30516
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       global: main;
+       _IO_*;
+       local: *;
+};
diff --git a/oobe-terms/.package-stamp b/oobe-terms/.package-stamp
new file mode 100644 (file)
index 0000000..40cbe59
--- /dev/null
@@ -0,0 +1 @@
+TPK
\ No newline at end of file
diff --git a/oobe-terms/.project b/oobe-terms/.project
new file mode 100644 (file)
index 0000000..b1cfca8
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>oobe-terms</name>
+       <comment></comment>
+       <projects>
+               <project>oobe-common</project>
+               <project>oobe-terms-service</project>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+       <filteredResources>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>26</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+                       </matcher>
+               </filter>
+               <filter>
+                       <id>0</id>
+                       <name></name>
+                       <type>6</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+                       </matcher>
+               </filter>
+       </filteredResources>
+</projectDescription>
diff --git a/oobe-terms/.tproject b/oobe-terms/.tproject
new file mode 100644 (file)
index 0000000..85cb751
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+    <platforms>
+        <platform>
+            <name>mobile-5.0</name>
+        </platform>
+    </platforms>
+    <package>
+        <blacklist/>
+        <resFallback autoGen="true"/>
+        <subProjects>
+            <tizenProject project="oobe-terms-service"/>
+        </subProjects>
+    </package>
+</tproject>
diff --git a/oobe-terms/build_def.prop b/oobe-terms/build_def.prop
new file mode 100644 (file)
index 0000000..6bb5e2f
--- /dev/null
@@ -0,0 +1,6 @@
+
+# Add pre/post build process
+PREBUILD_DESC = 
+PREBUILD_COMMAND = 
+POSTBUILD_DESC = 
+POSTBUILD_COMMAND = 
diff --git a/oobe-terms/edje/fonts/SamsungOneUI-300_v1.0.ttf b/oobe-terms/edje/fonts/SamsungOneUI-300_v1.0.ttf
new file mode 100644 (file)
index 0000000..a60f133
Binary files /dev/null and b/oobe-terms/edje/fonts/SamsungOneUI-300_v1.0.ttf differ
diff --git a/oobe-terms/edje/fonts/SamsungOneUI-400C_v1.0.ttf b/oobe-terms/edje/fonts/SamsungOneUI-400C_v1.0.ttf
new file mode 100644 (file)
index 0000000..324f2c9
Binary files /dev/null and b/oobe-terms/edje/fonts/SamsungOneUI-400C_v1.0.ttf differ
diff --git a/oobe-terms/edje/fonts/SamsungOneUI-400_v3.0.ttf b/oobe-terms/edje/fonts/SamsungOneUI-400_v3.0.ttf
new file mode 100644 (file)
index 0000000..b662d56
Binary files /dev/null and b/oobe-terms/edje/fonts/SamsungOneUI-400_v3.0.ttf differ
diff --git a/oobe-terms/edje/fonts/SamsungOneUI-600_v3.0.ttf b/oobe-terms/edje/fonts/SamsungOneUI-600_v3.0.ttf
new file mode 100644 (file)
index 0000000..67d2bb5
Binary files /dev/null and b/oobe-terms/edje/fonts/SamsungOneUI-600_v3.0.ttf differ
diff --git a/oobe-terms/edje/fonts/SamsungOneUI-800_v1.0.ttf b/oobe-terms/edje/fonts/SamsungOneUI-800_v1.0.ttf
new file mode 100644 (file)
index 0000000..ba0a0af
Binary files /dev/null and b/oobe-terms/edje/fonts/SamsungOneUI-800_v1.0.ttf differ
diff --git a/oobe-terms/edje/images/bg.png b/oobe-terms/edje/images/bg.png
new file mode 100644 (file)
index 0000000..86bb201
Binary files /dev/null and b/oobe-terms/edje/images/bg.png differ
diff --git a/oobe-terms/edje/images/list_bg.png b/oobe-terms/edje/images/list_bg.png
new file mode 100644 (file)
index 0000000..5bee352
Binary files /dev/null and b/oobe-terms/edje/images/list_bg.png differ
diff --git a/oobe-terms/edje/images/oobe_button/arrow_left.png b/oobe-terms/edje/images/oobe_button/arrow_left.png
new file mode 100644 (file)
index 0000000..351f022
Binary files /dev/null and b/oobe-terms/edje/images/oobe_button/arrow_left.png differ
diff --git a/oobe-terms/edje/images/oobe_button/arrow_right.png b/oobe-terms/edje/images/oobe_button/arrow_right.png
new file mode 100644 (file)
index 0000000..04e60a3
Binary files /dev/null and b/oobe-terms/edje/images/oobe_button/arrow_right.png differ
diff --git a/oobe-terms/edje/images/oobe_button/button.png b/oobe-terms/edje/images/oobe_button/button.png
new file mode 100644 (file)
index 0000000..b69b542
Binary files /dev/null and b/oobe-terms/edje/images/oobe_button/button.png differ
diff --git a/oobe-terms/edje/images/oobe_button/button_circle_32.png b/oobe-terms/edje/images/oobe_button/button_circle_32.png
new file mode 100644 (file)
index 0000000..aa770f1
Binary files /dev/null and b/oobe-terms/edje/images/oobe_button/button_circle_32.png differ
diff --git a/oobe-terms/edje/images/oobe_button/button_circle_60.png b/oobe-terms/edje/images/oobe_button/button_circle_60.png
new file mode 100644 (file)
index 0000000..0dfbbcd
Binary files /dev/null and b/oobe-terms/edje/images/oobe_button/button_circle_60.png differ
diff --git a/oobe-terms/edje/images/oobe_button/button_shadow_77.png b/oobe-terms/edje/images/oobe_button/button_shadow_77.png
new file mode 100644 (file)
index 0000000..b2367a3
Binary files /dev/null and b/oobe-terms/edje/images/oobe_button/button_shadow_77.png differ
diff --git a/oobe-terms/edje/images/oobe_checkbox/core_check_bg.png b/oobe-terms/edje/images/oobe_checkbox/core_check_bg.png
new file mode 100644 (file)
index 0000000..0197325
Binary files /dev/null and b/oobe-terms/edje/images/oobe_checkbox/core_check_bg.png differ
diff --git a/oobe-terms/edje/images/oobe_checkbox/core_check_bg_press.png b/oobe-terms/edje/images/oobe_checkbox/core_check_bg_press.png
new file mode 100644 (file)
index 0000000..ebff5c8
Binary files /dev/null and b/oobe-terms/edje/images/oobe_checkbox/core_check_bg_press.png differ
diff --git a/oobe-terms/edje/images/oobe_checkbox/core_check_icon.png b/oobe-terms/edje/images/oobe_checkbox/core_check_icon.png
new file mode 100644 (file)
index 0000000..26dcdc2
Binary files /dev/null and b/oobe-terms/edje/images/oobe_checkbox/core_check_icon.png differ
diff --git a/oobe-terms/inc/app-control.h b/oobe-terms/inc/app-control.h
new file mode 100644 (file)
index 0000000..5f94668
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __APP_CONTROL_H__
+#define __APP_CONTROL_H__
+
+#include <app_control.h>
+#include <dlog.h>
+
+#ifndef  LOG_TAG
+#define LOG_TAG "app-control"
+#endif
+
+typedef void (*app_control_reply_received_cb)(const char *reply);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb);
+void app_control_save_reply_handler(app_control_h handler);
+void app_control_reply(const char *message);
+
+#endif /*__APP_CONTROL_H__ */
diff --git a/oobe-terms/inc/data.h b/oobe-terms/inc/data.h
new file mode 100644 (file)
index 0000000..a44ff9d
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __DATA_H__
+#define __DATA_H__
+#include <stdbool.h>
+
+#define LATEST_TERMS_JSON_FILENAME "latest_terms.json"
+#define ACCEPTED_TERMS_JSON_FILENAME "accepted_terms.json"
+
+struct term {
+       const char *title;
+       bool is_required;
+       bool is_accepted;
+       const char *content;
+};
+
+struct terms_data {
+       int latest_version;
+       int check_interval;
+       const char *language;
+       const char *region;
+       int terms_count;
+       struct term *terms;
+};
+
+struct terms_data* terms_create_from_file(const char *file_name);
+struct terms_data* terms_create_from_text(const char *json);
+void terms_destroy(struct terms_data* terms);
+
+#endif /* __DATA_H__ */
diff --git a/oobe-terms/inc/oobe-terms.h b/oobe-terms/inc/oobe-terms.h
new file mode 100644 (file)
index 0000000..22d5588
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_TERMS__
+#define __OOBE_TERMS__
+
+#include <app.h>
+#include <Elementary.h>
+#include <system_settings.h>
+#include <efl_extension.h>
+#include <dlog.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "oobe-terms"
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.tizen.oobe-terms"
+#endif
+
+struct terms_data* terms;
+
+#endif /* __OOBE_TERMS__ */
diff --git a/oobe-terms/inc/terms.h b/oobe-terms/inc/terms.h
new file mode 100644 (file)
index 0000000..7bd7d96
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __TERMS_H__
+#define __TERMS_H__
+#include <stdbool.h>
+#include "data.h"
+
+bool terms_latest_exist(void);
+void terms_latest_init(void);
+
+int terms_get_latest_version();
+bool terms_accept(int version);
+
+#endif /* __TERMS_H__ */
diff --git a/oobe-terms/inc/view-defines.h b/oobe-terms/inc/view-defines.h
new file mode 100644 (file)
index 0000000..56e14dc
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_DEFINES_H__
+#define __VIEW_DEFINES_H__
+
+#define EDJ_TERMS "edje/terms.edj"
+#define GRP_TERMS "terms"
+
+#define PART_PREV_BUTTON_IMAGE "part_prev_button_image"
+#define PART_NEXT_BUTTON_IMAGE "part_next_button_image"
+#define PART_AGREE_TO_PRIVACY_POLICY_VIEW_DETAILS_IMAGE "part_agree_to_privacy_policy_view_details"
+#define PART_AGREE_TO_TERMS_AND_CONDITIONS_VIEW_DETAILS_IMAGE "part_agree_to_terms_and_conditions_view_details"
+#define PART_FIRST_CHECKBOX "part_first_checkbox"
+#define PART_SECOND_CHECKBOX "part_second_checkbox"
+#define PART_THIRD_CHECKBOX "part_third_checkbox"
+
+#define PART_TERMS_TITLE_TEXT "part_terms_title_text"
+#define PART_I_AGREE_TO_ALL_TEXT "part_i_agree_to_all_text"
+#define PART_I_AGREE_TO_ALL_SUBTEXT "part_i_agree_to_all_subtext"
+#define PART_I_AGREE_TO_PRIVACY_POLICY_TEXT "part_i_agree_to_privacy_policy_text"
+#define PART_I_AGREE_TO_TERMS_AND_CONDITIONS_TEXT "part_i_agree_to_terms_and_conditions_text"
+
+#define SIGNAL_CHECKBOX_ALL_TRUE "checkbox,all,true"
+#define SIGNAL_CHECKBOX_ALL_FALSE "checkbox,all,false"
+
+#define SIGNAL_NEXT_BUTTON_PRESSED "button,next,pressed"
+#define SIGNAL_NEXT_BUTTON_SET_PRESSED "button,set,next,pressed"
+#define SIGNAL_NEXT_BUTTON_UP "button,next,up"
+#define SIGNAL_NEXT_BUTTON_SET_UP "button,next,set,up"
+#define SIGNAL_PREV_BUTTON_UP "button,prev,up"
+#define SIGNAL_PRIVACY_POLICY_VIEW_DETAILS "button,privacy"
+#define SIGNAL_TERMS_AND_CONDITIONS_VIEW_DETAILS "button,terms"
+
+#endif /* __VIEW_DEFINES_H__ */
diff --git a/oobe-terms/inc/view.h b/oobe-terms/inc/view.h
new file mode 100644 (file)
index 0000000..6c6a5f7
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_H__
+#define __VIEW_H__
+
+#include <Elementary.h>
+
+typedef void (*button_clicked_cb)(const char *action);
+
+enum view_mode {
+    Normal = 0,
+    Reagree = 1
+};
+
+Eina_Bool view_create(enum view_mode view_mode, void *user_data);
+void view_destroy(void);
+void view_set_callbacks(button_clicked_cb button_clicked_func);
+
+void popup_create_pp_win();
+void popup_create_tnc_win();
+
+#endif /* __VIEW_H__ */
diff --git a/oobe-terms/project_def.prop b/oobe-terms/project_def.prop
new file mode 100644 (file)
index 0000000..8ba73e1
--- /dev/null
@@ -0,0 +1,63 @@
+
+# Project Name
+APPNAME = oobe-terms
+
+# Project Type
+type = app
+
+# Project Profile
+profile = mobile-5.0
+
+# C/CPP Sources
+USER_SRCS = src/*.c
+
+# EDC Sources
+USER_EDCS =  
+
+# PO Sources
+USER_POS = res/po/*.po
+
+# User Defines
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING 
+USER_CPP_DEFS = 
+
+# User Undefines
+USER_UNDEFS = 
+USER_CPP_UNDEFS = 
+
+# User Libraries
+USER_LIBS = 
+
+# User Objects
+USER_OBJS = 
+
+# User Includes
+## C Compiler
+USER_C_INC_DIRS = inc 
+USER_INC_FILES = 
+## C++ Compiler
+USER_CPP_INC_DIRS = 
+USER_CPP_INC_FILES = 
+
+USER_INC_DIRS = $(USER_C_INC_DIRS) $(USER_CPP_INC_DIRS)
+
+# User Library Path
+USER_LIB_DIRS = 
+
+# EDC Resource Path
+USER_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# EDC Flags
+USER_EXT_EDC_KEYS = EDC0 
+
+USER_EXT_EDC0_EDCS = res/edje/*.edc
+USER_EXT_EDC0_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EXT_EDC0_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EXT_EDC0_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# Resource Filter
+USER_RES_INCLUDE = 
+USER_RES_EXCLUDE = 
+
diff --git a/oobe-terms/res/data/initial_terms.json b/oobe-terms/res/data/initial_terms.json
new file mode 100644 (file)
index 0000000..2441d2f
--- /dev/null
@@ -0,0 +1,16 @@
+{
+  "latest_version": 1,
+  "check_interval": 11,
+  "terms": [
+    {
+      "title": "Terms and Conditions",
+      "is_required": true,
+      "content": "tnc lorem ipsum"
+    },
+    {
+      "title": "Privacy Policy",
+      "is_required": true,
+      "content": "pp lorem ipsum"
+    }
+  ]
+}
diff --git a/oobe-terms/res/edje/oobe_button.edc b/oobe-terms/res/edje/oobe_button.edc
new file mode 100644 (file)
index 0000000..1b7225f
--- /dev/null
@@ -0,0 +1 @@
+#include "../../../edje-common/oobe_button_definition.edc"
diff --git a/oobe-terms/res/edje/oobe_checkbox.edc b/oobe-terms/res/edje/oobe_checkbox.edc
new file mode 100644 (file)
index 0000000..3511332
--- /dev/null
@@ -0,0 +1,168 @@
+#define COLOR_TRANSPARENT 0 0 0 0
+
+#define CHECKBOX_TRANSITION_TIME 0
+#define CHECKBOX_TRANSITION_TYPE LINEAR CHECKBOX_TRANSITION_TIME
+#define CHECKBOX_BG_WIDTH 40
+#define CHECKBOX_BG_HEIGHT 40
+#define CHECKBOX_ICON_WIDTH 25
+#define CHECKBOX_ICON_HEIGHT 18
+
+#define CHECKBOX_BG_IMAGE "oobe_checkbox/core_check_bg.png"
+#define CHECKBOX_BG_PRESSED_IMAGE "oobe_checkbox/core_check_bg_press.png"
+#define CHECKBOX_ICON_IMAGE "oobe_checkbox/core_check_icon.png"
+
+#define COLOR_TRANSPARENT 0 0 0 0
+
+
+collections {
+       base_scale: 1.8;
+
+       group {  "elm/check/event/default";
+               inherit_only: 1;
+               parts {
+                       rect { "event";
+                               desc { "default";
+                                       color: COLOR_TRANSPARENT;
+                                       vis;
+                               }
+                               desc { "disabled";
+                                       inherit: "default";
+                                       hid;
+                               }
+                               desc { "checked";
+                                       inherit: "default";
+                               }
+                       }
+               }
+      programs {
+         program { "clicked";
+            signal: "mouse,clicked,1";
+            source: "event";
+            sequence {
+               action: SIGNAL_EMIT "elm,action,click" "";
+               
+               action: SIGNAL_EMIT "elm,action,check,toggle" "";
+            }
+            after: "on_clicked";
+         }
+         program { "pressed";
+            signal: "mouse,down,1*";
+            source: "event";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "on_pressed";
+         }
+         program { "unpressed";
+            signal: "mouse,up,1";
+            source: "event";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+            after: "on_unpressed";
+         }
+         program { "set_check";
+            signal: "elm,state,check,on";
+            source: "elm";
+            after: "on_set_check";
+         }
+         program { "unset_check";
+            signal: "elm,state,check,off";
+            source: "elm";
+            after: "on_unset_check";
+         }
+         program { "disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            after: "on_disabled";
+         }
+         program { "enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            after: "on_enabled";
+         }
+      }
+   } 
+
+
+       group { "elm/check/base/template";
+               inherit: "elm/check/event/default";
+               nomouse;
+               parts {
+                       spacer { "base";
+                               desc { "default";
+                               }
+                       }
+               }
+               programs {
+                       program { name: "on_set_check";
+                               //Can be overriden in inheriting class
+                       }
+                       program { name: "on_unset_check";
+                               //Can be overriden in inheriting class            
+                       }
+                       program { name: "on_pressed";
+                               //Can be overriden in inheriting class            
+                       }
+                       program { name: "on_unpressed";
+                               //Can be overriden in inheriting class            
+                       }
+                       program { name: "on_clicked";
+                               //Can be overriden in inheriting class            
+                       }
+                       program { name: "on_disabled";
+                               //Can be overriden in inheriting class            
+                       }
+                       program { name: "on_enabled";
+                               //Can be overriden in inheriting class            
+                       }
+               }
+       }
+
+       group { "elm/check/base/oobe-casual";
+               inherit: "elm/check/base/template";
+               nomouse;
+
+               images {
+                       image: CHECKBOX_BG_IMAGE COMP;
+                       image: CHECKBOX_BG_PRESSED_IMAGE COMP;
+                       image: CHECKBOX_ICON_IMAGE COMP;
+               }
+
+               parts {
+                       image { "bg";
+                               desc { "default";
+                                       image.normal: CHECKBOX_BG_IMAGE;
+                                       min: CHECKBOX_BG_WIDTH CHECKBOX_BG_HEIGHT;
+                                       max: CHECKBOX_BG_WIDTH CHECKBOX_BG_HEIGHT;
+                               }
+                               desc { "checked"
+                                       inherit: "default";
+                                       image.normal: CHECKBOX_BG_PRESSED_IMAGE;
+                               }
+                       }
+                       image { "icon";
+                               desc { "default";
+                                       image.normal: CHECKBOX_ICON_IMAGE;
+                                       min: CHECKBOX_ICON_WIDTH CHECKBOX_ICON_HEIGHT;
+                                       max: CHECKBOX_ICON_WIDTH CHECKBOX_ICON_HEIGHT;
+                                       align: 0.5 0.5;
+                                       hid;
+                               }
+                               desc { "checked";
+                                       inherit: "default";
+                                       vis;
+                               }
+                       }
+               }
+
+               program { name: "on_set_check";
+                       action: STATE_SET "checked";
+                       target: "bg";
+                       target: "icon";
+                       transition: CHECKBOX_TRANSITION_TYPE;
+               }
+               program { name: "on_unset_check";
+                       action: STATE_SET "default";
+                       target: "bg";
+                       target: "icon";
+                       transition: CHECKBOX_TRANSITION_TYPE;
+               }
+       }
+}
\ No newline at end of file
diff --git a/oobe-terms/res/edje/terms.edc b/oobe-terms/res/edje/terms.edc
new file mode 100644 (file)
index 0000000..a15bf48
--- /dev/null
@@ -0,0 +1,145 @@
+#include "../../inc/view-defines.h"
+
+#define CHECK_SIZE 50
+
+#define SAMSUNG_ONE_800 "SamsungOneUI-800_v1.0.ttf"
+#define SAMSUNG_ONE_300 "SamsungOneUI-300_v1.0.ttf"
+#define SAMSUNG_ONE_400c "SamsungOneUI-400C_v1.0.ttf"
+
+collections {
+       base_scale: 1.8;
+       
+       images {
+               image: "bg.png" COMP;
+               image: "list_bg.png" COMP;
+       }
+
+       fonts {
+               font: SAMSUNG_ONE_800 "samsung-one-800";
+               font: SAMSUNG_ONE_300 "samsung-one-300";
+               font: SAMSUNG_ONE_400c "samsung-one-400c";
+       }
+
+       styles {
+               style {
+            name: "style_title";
+            base: "font=samsung-one-300 font_size=36 align=center valign=center wrap=word color=#05180a";
+        }
+               style {
+                       name: "style_i_agree_to_all";
+                       base: "font=samsung-one-400c font_size=23 align=left valign=center wrap=word color=#040404";
+                       tag: "sm" "+ font_size=15";
+                       tag: "gr" "+ color=#183D22";
+                       tag: "br" "\n";
+               }
+               style {
+                       name: "style_view_details";
+                       base: "font=samsung-one-400c font_size=15 align=center valign=center wrap=word color=#010101";
+               }
+               style {
+            name: "style_skip";
+            base: "font=samsung-one-800 font_size=35 align=right wrap=word color=#040404";
+            tag: "dis" "+ color=#B5B6B6";
+        }
+       }
+
+       group {
+               name: GRP_TERMS;
+               images {
+                       image: "bg.png" COMP;
+               }
+               parts { 
+                       part {
+                       name: PART_TERMS_BG;
+                       type: IMAGE;
+                       description {
+                               state: "default" 0;
+                       align: 0 0;
+                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                       image {
+                               normal: "bg.png";
+                               middle: DEFAULT;
+                       }
+                       } 
+               }
+               
+               part {
+                               name: PART_TERMS_TITLE_TEXT;
+                               type: TEXTBLOCK;
+                               description {
+                                       rel1.relative: 170/1280 467/720;
+                    rel2.relative: (170+300)/1280 (467+90)/720;
+                                       text {
+                                               style: "style_title";
+                                               text: "";
+                                       }
+                               }
+                       }
+
+                       /* list with terms */
+
+                       part {
+                               name: "list_bg";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       image {
+                                               normal: "list_bg.png";
+                                               border: 8 8 8 8;
+                                       }
+                                       rel.to: "terms_list";
+                                       rel1.offset: (-7-20) -8;
+                                       rel2.offset: (7+20) 7;
+                                       hid;
+                               }
+                               description {
+                                       state: "show" 0;
+                                       inherit: "default";
+                                       vis;
+                               }
+                       }
+                       
+                       part {
+                               name: "terms_list";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0;
+                                       rel1.relative: 700/1280 120/720;
+                                       rel2.relative: (767+450-20)/1280 (150+400)/720;
+                               }
+                       }
+                       
+                       
+                       /* bottom buttons */
+
+                       part {
+                               name: "button_left";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0;
+                                       rel1.relative: 62/1280 618/720;
+                                       rel2.relative: (62+450)/1280 (618+60)/720;
+                               }
+                       }
+
+                       part {
+                               name: "button_right";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0;
+                                       rel1.relative: 767/1280 618/720;
+                                       rel2.relative: (767+450)/1280 (618+60)/720;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               signal: "show_list_bg";
+                               source: "";
+                               action: STATE_SET "show";
+                               target: "list_bg";
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/oobe-terms/res/edje/terms_list_item.edc b/oobe-terms/res/edje/terms_list_item.edc
new file mode 100644 (file)
index 0000000..03ad1b7
--- /dev/null
@@ -0,0 +1,103 @@
+#define SAMSUNG_ONE_800 "SamsungOneUI-800_v1.0.ttf"
+#define SAMSUNG_ONE_300 "SamsungOneUI-300_v1.0.ttf"
+#define SAMSUNG_ONE_400c "SamsungOneUI-400C_v1.0.ttf"
+
+collections {
+       base_scale: 1.8;
+
+       fonts {
+               font: SAMSUNG_ONE_800 "samsung-one-800";
+               font: SAMSUNG_ONE_300 "samsung-one-300";
+               font: SAMSUNG_ONE_400c "samsung-one-400c";
+       }
+
+       styles {
+               style {
+                       name: "style_agree";
+                       base: "font=samsung-one-300 font_size=22 align=left valign=center wrap=word color=#040404";
+               }
+       }
+
+       group
+       {
+               name: "elm/genlist/item/terms_agree/default";
+               data.item: "texts" "elm.text";
+               data.item: "contents" "elm.swallow.check elm.swallow.button";
+               
+               parts
+               {
+                       rect {
+                               name: "bg";
+                               desc {
+                                       min: 0 120; 
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 1 1;
+                                       color: 255 255 255 0;
+                               }
+                       }
+
+                       rect {
+                               name: "bottom_line";
+                               desc {
+                                       rel1.relative: 0 119/120;
+                                       rel2.relative: 1 1;
+                                       color: 0 0 0 8;
+                               }
+                       }
+
+                       rect {
+                               desc {
+                                       rel.to: "elm.swallow.check";
+                                       color: 0 0 255 0;
+                               }
+                       }
+                       part {
+                               type: SWALLOW;
+                               name: "elm.swallow.check";
+                               desc {
+                                       max: 50 50;
+                                       align: 0 0.5;
+                               }
+                       }
+
+                       rect {
+                               desc {
+                                       rel.to: "elm.text";
+                                       color: 0 255 0 0;
+                               }
+                       }
+                       part {
+                               name: "elm.text";
+                               type: TEXTBLOCK;
+                               description {
+                                       rel1 {
+                                               to_x: "elm.swallow.check";
+                                               to_y: "bg";
+                                               offset: 20 0;
+                                               relative: 1 0;
+                                       }
+                                       rel2 {
+                                               to_x: "elm.swallow.button";
+                                               to_y: "bg";
+                                               offset: -20 0;
+                                               relative: 0 1;
+                                       }
+                                       align: 0 0.5;
+                                       text {
+                                               align: 0 0.5;
+                                               style: "style_agree";
+                                       }
+                               }
+                       }
+
+                       part {
+                               type: SWALLOW;
+                               name: "elm.swallow.button";
+                               desc {
+                                       max: 120 60;
+                                       align: 1 0.5;
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/oobe-terms/res/po/en_US.po b/oobe-terms/res/po/en_US.po
new file mode 100644 (file)
index 0000000..4f6ed18
--- /dev/null
@@ -0,0 +1,24 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "ACCEPT"
+msgstr "Accept"
+
+msgid "VIEW_DETAILS"
+msgstr "View Details"
+
+msgid "AGREE_TO_ALL"
+msgstr "I Agree to all."
+
+msgid "TERMS_OF_USE_TITLE"
+msgstr "Welcome to OOBE<br><b>Terms of Use</b>"
+
+msgid "NEXT"
+msgstr "Next"
+
+msgid "BACK"
+msgstr "Back"
+
+msgid "OK"
+msgstr ""
+
diff --git a/oobe-terms/res/po/pl_PL.po b/oobe-terms/res/po/pl_PL.po
new file mode 100644 (file)
index 0000000..33ecdf7
--- /dev/null
@@ -0,0 +1,24 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "ACCEPT"
+msgstr "Akceptuję"
+
+msgid "VIEW_DETAILS"
+msgstr "Szczegóły"
+
+msgid "AGREE_TO_ALL"
+msgstr "Akceptuję wszystko."
+
+msgid "TERMS_OF_USE_TITLE"
+msgstr "Witaj w OOBE<br><b>Warunki użytkowania</b>"
+
+msgid "NEXT"
+msgstr "Dalej"
+
+msgid "BACK"
+msgstr "Powrót"
+
+msgid "OK"
+msgstr ""
+
diff --git a/oobe-terms/shared/res/oobe-terms.png b/oobe-terms/shared/res/oobe-terms.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/oobe-terms/shared/res/oobe-terms.png differ
diff --git a/oobe-terms/src/app-control.c b/oobe-terms/src/app-control.c
new file mode 100644 (file)
index 0000000..339a2f5
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "app-control.h"
+#include <log.h>
+
+static struct app_control_info {
+       app_control_h handler;
+       app_control_reply_received_cb reply_cb;
+       app_control_h reply_handler;
+} ac_info = {
+       .handler = NULL,
+       .reply_cb = NULL,
+       .reply_handler = NULL
+};
+
+static void _app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb)
+{
+       int ret;
+
+       if (!ac_info.handler) {
+               ret = app_control_create(&ac_info.handler);
+
+               if (ret != APP_CONTROL_ERROR_NONE) {
+                   LOGE("app_control_create() failed. err = %d", ret);
+                   return;
+               }
+       }
+
+       ac_info.reply_cb = reply_cb;
+
+       app_control_set_operation(ac_info.handler, APP_CONTROL_OPERATION_DEFAULT);
+       app_control_set_launch_mode(ac_info.handler, APP_CONTROL_LAUNCH_MODE_GROUP);
+       app_control_set_app_id(ac_info.handler, app_id);
+       app_control_add_extra_data(ac_info.handler, "caller", "oobe-setup");
+
+       if (app_control_send_launch_request(ac_info.handler, _app_control_result_cb, NULL) != APP_CONTROL_ERROR_NONE) {
+               LOGE("Failed to launch %s", app_id);
+       }
+
+       app_control_destroy(ac_info.handler);
+       ac_info.handler = NULL;
+}
+
+void app_control_save_reply_handler(app_control_h handler)
+{
+       int ret;
+
+       ret = app_control_clone(&ac_info.reply_handler, handler);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_clone() failed. err = %d", ret);
+               return;
+       }
+}
+
+void app_control_reply(const char *message)
+{
+       int ret;
+       app_control_h reply;
+
+       ret = app_control_create(&reply);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               dlog_print(DLOG_ERROR, LOG_TAG, "app_control_create() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_add_extra_data(reply, "reply", message);
+
+       ret = app_control_reply_to_launch_request(reply, ac_info.reply_handler, APP_CONTROL_RESULT_SUCCEEDED);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_reply_to_launch_request() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_destroy(reply);
+       app_control_destroy(ac_info.reply_handler);
+       ac_info.reply_handler = NULL;
+}
+
+static void
+_app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+       char *value;
+
+       if (result == APP_CONTROL_RESULT_SUCCEEDED) {
+               if (app_control_get_extra_data(reply, "reply", &value) == APP_CONTROL_ERROR_NONE) {
+                       ac_info.reply_cb(value);
+               }
+               else {
+                       LOGE("_app_control_result_cb Failed");
+           }
+       }
+       else {
+               LOGE("_app_control_result_cb APP_CONTROL_RESULT_FAILED.");
+       }
+}
diff --git a/oobe-terms/src/data.c b/oobe-terms/src/data.c
new file mode 100644 (file)
index 0000000..657bb37
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "data.h"
+#include <log.h>
+#include <json-glib/json-glib.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+struct terms_data* terms_create_from_file(const char *file_name) {
+       struct terms_data* result = NULL;
+       char *json = NULL;
+       gsize size;
+       GError *error = NULL;
+
+       if (g_file_test(file_name, G_FILE_TEST_EXISTS)) {
+               if (g_file_get_contents(file_name, &json, &size, &error)) {
+                       result = terms_create_from_text(json);
+                       free(json);
+               } else {
+                       LOGE("cannot read file [%s] error code: %d", file_name, error->code);
+                       g_error_free(error);
+               }
+       } else {
+               LOGE("File does not exist (%s).", file_name);
+       }
+
+       return result;
+}
+
+static JsonNode *_parse_string(JsonParser *parser, const char *json) {
+       GError *err = NULL;
+       if (!json_parser_load_from_data(parser, json, -1, &err)) {
+               LOGE(
+                               "Function \"json_parser_load_from_data()\" failed with message: %s",
+                               err->message);
+               g_error_free(err);
+               return NULL;
+       }
+       return json_parser_get_root(parser);
+}
+
+static const char *_extract_string_from_json(JsonObject *entry, const char *key) {
+       char *result = NULL;
+       if (json_object_has_member(entry, key)) {
+               const char *json_string = (const char *) json_object_get_string_member(
+                               entry, key);
+               int length = 1 + strlen(json_string);
+               result = malloc(length);
+               snprintf(result, length, "%s", json_string);
+       } else {
+               LOGD("json has no member: %s", key);
+       }
+       return result;
+}
+
+static void _on_deserialize_term_detail(JsonArray *array, guint index,
+               JsonNode *element, gpointer user_data) {
+       struct term *details = (struct term *) user_data;
+       JsonObject *entry = json_node_get_object(element);
+
+       if (json_object_has_member(entry, "is_required"))
+               details[index].is_required = json_object_get_boolean_member(entry,
+                               "is_required");
+       else
+               LOGD("json has no member is_required");
+       details[index].title = _extract_string_from_json(entry, "title");
+       details[index].content = _extract_string_from_json(entry, "content");
+
+       details[index].is_accepted = false;
+}
+
+static struct terms_data* _deserialize_terms_entry(JsonObject *entry) {
+       struct terms_data* result = malloc(sizeof(struct terms_data));
+       if (json_object_has_member(entry, "latest_version"))
+               result->latest_version = json_object_get_int_member(entry,
+                               "latest_version");
+       if (json_object_has_member(entry, "check_interval"))
+               result->check_interval = json_object_get_int_member(entry,
+                               "check_interval");
+       result->language = _extract_string_from_json(entry, "language");
+       result->region = _extract_string_from_json(entry, "region");
+
+       JsonArray *json_array = json_object_get_array_member(entry, "terms");
+       if (json_array != NULL) {
+               result->terms_count = json_array_get_length(json_array);
+               result->terms = malloc(sizeof(struct term) * result->terms_count);
+               json_array_foreach_element(json_array, _on_deserialize_term_detail,
+                               result->terms);
+       } else {
+               LOGD("json has no terms details");
+               result->terms_count = 0;
+               result->terms = NULL;
+       }
+       return result;
+}
+
+struct terms_data* terms_create_from_text(const char *json) {
+       struct terms_data* result = NULL;
+       JsonParser *parser = json_parser_new();
+       JsonNode *root = _parse_string(parser, json);
+       JsonArray *array = json_node_get_array(root);
+       if (array == 0) {
+               JsonObject *entry = json_node_get_object(root);
+               if (entry != NULL)
+                       result = _deserialize_terms_entry(entry);
+               else
+                       LOGE("Json has no data");
+       } else {
+               LOGE("unsupported exception parsing json: array instead of object");
+       }
+       g_object_unref(parser);
+       return result;
+}
+
+void terms_destroy(struct terms_data* terms) {
+       if (terms != NULL) {
+               if (terms->region != NULL)
+                       free((void*) terms->region);
+               if (terms->language != NULL)
+                       free((void*) terms->language);
+               if (terms->terms != NULL) {
+                       for (int i = 0; i < terms->terms_count; i++) {
+                               if (terms->terms[i].title != NULL)
+                                       free((void*) terms->terms[i].title);
+                               if (terms->terms[i].content != NULL)
+                                       free((void*) terms->terms[i].content);
+                       }
+                       free(terms->terms);
+               }
+               free(terms);
+       }
+}
diff --git a/oobe-terms/src/oobe-terms.c b/oobe-terms/src/oobe-terms.c
new file mode 100644 (file)
index 0000000..a92d51b
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-terms.h"
+#include "view.h"
+#include <log.h>
+#include "app-control.h"
+#include "terms.h"
+#include <oobe-common.h>
+
+static bool is_foreground = false;
+
+static void _button_clicked_cb(const char* action);
+
+static bool app_create(void *user_data)
+{
+       view_set_callbacks(_button_clicked_cb);
+
+       utils_view_load_theme("edje/oobe_button.edj");
+       utils_view_load_theme("edje/oobe_checkbox.edj");
+       utils_view_load_theme("edje/terms_list_item.edj");
+
+       return true;
+}
+
+static void app_terminate(void *user_data)
+{
+       view_destroy();
+}
+
+static void app_control(app_control_h app_control, void *user_data)
+{
+       // do not show view again if it is already shown
+       // TODO check if there is a new version downloaded -> then show popup, and update terms list
+       if (is_foreground) {
+               if(terms->latest_version == terms_get_latest_version()) {
+                       LOGD("App already in the foreground");
+                       return;
+               } else {
+                       LOGD("Recreating view with newer terms");
+                       view_destroy();
+               }
+       }
+       is_foreground = true;
+
+       if (terms_latest_exist() == false)
+               terms_latest_init();
+
+       char* value = NULL;
+       app_control_get_extra_data(app_control, "caller", &value);
+
+       if (value) {
+               if(!strcmp(value, "oobe-setup")) {
+                       view_create(Normal, NULL);
+               } else if(!strcmp(value, "oobe-terms-service")) {
+                       // TODO: replace view_create with view_create_settings
+                       view_create(Reagree, NULL);
+               }
+       } else {
+               LOGD("Cannot start without proper caller name");
+               return;
+       }
+
+       app_control_save_reply_handler(app_control);
+}
+
+static void app_pause(void *user_data)
+{
+       ui_app_exit();
+}
+
+static void app_resume(void *user_data)
+{
+}
+
+static void ui_app_lang_changed(app_event_info_h event_info, void *user_data)
+{
+       int ret;
+       char *language;
+
+       ret = app_event_get_language(event_info, &language);
+       if (ret != APP_ERROR_NONE) {
+               LOGE("app_event_get_language() failed. Err = %d.", ret);
+               return;
+       }
+
+       if (language != NULL) {
+               elm_language_set(language);
+               free(language);
+       }
+}
+
+int
+main(int argc, char *argv[])
+{
+       int ret = 0;
+
+       ui_app_lifecycle_callback_s event_callback = {0,};
+       app_event_handler_h handler = 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(&handler, APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, NULL);
+
+       ret = ui_app_main(argc, argv, &event_callback, NULL);
+       if (ret != APP_ERROR_NONE) {
+               LOGE("ui_app_main() failed. err = %d", ret);
+       }
+
+       return ret;
+}
+
+static void _button_clicked_cb(const char* action)
+{
+       if (!action) {
+               LOGE("Action is null.");
+               return;
+       }
+
+       if(!strcmp(action, "next")) {
+               if(terms_accept(terms->latest_version) == true) {
+                       app_control_reply(action);
+                       ui_app_exit();
+               }
+       } else if(!strcmp(action, "back")) {
+               app_control_reply(action);
+               ui_app_exit();
+       }
+}
diff --git a/oobe-terms/src/terms.c b/oobe-terms/src/terms.c
new file mode 100644 (file)
index 0000000..3f1ebe5
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "terms.h"
+#include <log.h>
+#include <stdlib.h>
+#include <json-glib/json-glib.h>
+#include <stdio.h>
+#include "data.h"
+#include "oobe-terms.h"
+#include <utils.h>
+
+#define TERMS_INITIAL_PATH "data/initial_terms.json"
+
+bool terms_latest_exist() {
+       bool terms_exist = false;
+       char file[PATH_MAX];
+       utils_get_app_data_path(LATEST_TERMS_JSON_FILENAME, file, PATH_MAX);
+
+       struct terms_data* terms = terms_create_from_file(file);
+       if (terms != NULL) {
+               terms_destroy(terms);
+               terms_exist = true;
+       }
+       return terms_exist;
+}
+
+void terms_latest_init() {
+       char source[PATH_MAX];
+       utils_get_app_resource_path(TERMS_INITIAL_PATH, source, PATH_MAX);
+       char destination[PATH_MAX];
+       utils_get_app_data_path(LATEST_TERMS_JSON_FILENAME, destination, PATH_MAX);
+
+       if (utils_copy_file(source, destination)) {
+               LOGD("Copied initial terms successfully");
+       } else {
+               LOGW("Could not copy initial terms.");
+       }
+}
+
+static int _get_version(const char* file) {
+       int result = -1;
+       struct terms_data* terms = terms_create_from_file(file);
+       if (terms != NULL) {
+               result = terms->latest_version;
+               terms_destroy(terms);
+       } else {
+               LOGW("cannot get version from [%s]", file);
+       }
+       return result;
+}
+
+static int _terms_get_accepted_version() {
+       char file[PATH_MAX];
+       utils_get_app_data_path(ACCEPTED_TERMS_JSON_FILENAME, file, PATH_MAX);
+       return _get_version(file);
+}
+
+int terms_get_latest_version() {
+       char file[PATH_MAX];
+       utils_get_app_data_path(LATEST_TERMS_JSON_FILENAME, file, PATH_MAX);
+       return _get_version(file);
+}
+
+bool terms_accept(int version) {
+       bool result = false;
+       int latest_version = terms_get_latest_version();
+       int accepted_version = _terms_get_accepted_version();
+
+       if(version == latest_version && accepted_version <= latest_version) {
+               char accepted[PATH_MAX];
+               utils_get_app_data_path(ACCEPTED_TERMS_JSON_FILENAME, accepted, PATH_MAX);
+               char latest[PATH_MAX];
+               utils_get_app_data_path(LATEST_TERMS_JSON_FILENAME, latest, PATH_MAX);
+
+               result = utils_copy_file(latest, accepted);
+       }
+
+       LOGD("accept terms version %d [%s]", version, result ? "success" : "failed");
+       return result;
+}
diff --git a/oobe-terms/src/view.c b/oobe-terms/src/view.c
new file mode 100644 (file)
index 0000000..7243aaa
--- /dev/null
@@ -0,0 +1,361 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "view.h"
+#include "terms.h"
+#include "oobe-terms.h"
+#include <log.h>
+#include "view-defines.h"
+#include <glib.h>
+#include <utils.h>
+#include <oobe-common.h>
+
+static struct view_info {
+       Evas_Object *win;
+       Evas_Object *conform;
+       Evas_Object *layout_terms;
+       Evas_Object *button_left;
+       Evas_Object *button_right;
+       Evas_Object *popup;
+       button_clicked_cb button_clicked_func;
+       Evas_Object *gen_list;
+       Evas_Object *check_all;
+} s_info = {
+       .win = NULL,
+       .conform = NULL,
+       .layout_terms = NULL,
+       .button_left = NULL,
+       .button_right = NULL,
+       .popup = NULL,
+       .button_clicked_func = NULL,
+       .gen_list = NULL,
+       .check_all = NULL,
+};
+
+static struct term terms_all = {
+       .is_required = true,
+       .is_accepted = false,
+};
+
+static void _popup_hide_cb(void *data, Evas_Object *obj, void *event_info);
+static void _popup_create(const char *title, const char *text, Evas_Smart_Cb close_cb);
+static void view_set_part_texts(enum view_mode view_mode);
+
+static void _all_check_cb(void *data, Evas_Object *obj, void* event_info);
+static void _one_check_cb(void *data, Evas_Object *obj, void* event_info);
+static char *_agree_all_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_agree_all_content_get(void *data, Evas_Object *obj, const char *part);
+static char *_agree_one_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *_agree_one_content_get(void *data, Evas_Object *obj, const char *part);
+
+static Eina_Bool _create_terms_layout(enum view_mode view_mode);
+static void _terms_list_load(char *terms_path);
+
+static void _button_view_details_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _button_left_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _button_right_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+Eina_Bool view_create(enum view_mode view_mode, void *user_data)
+{
+       if (s_info.win) {
+               evas_object_del(s_info.win);
+               s_info.win = NULL;
+       }
+
+       /* Create the window */
+       s_info.win = utils_view_create_win(PACKAGE);
+       if (s_info.win == NULL) {
+               LOGE("failed to create a window.");
+               return EINA_FALSE;
+       }
+
+       if (elm_win_wm_rotation_supported_get(s_info.win)) {
+               int rots[] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(s_info.win, (const int *)(&rots), 4);
+       }
+
+       elm_win_indicator_opacity_set(s_info.win, ELM_WIN_INDICATOR_TRANSPARENT);
+
+       /* Create the conformant */
+       s_info.conform = utils_view_create_conformant(s_info.win);
+       if (s_info.conform == NULL) {
+               LOGE("failed to create a conformant");
+               return EINA_FALSE;
+       }
+
+       if (!_create_terms_layout(view_mode)) {
+               LOGE("failed to create country layout.");
+               return EINA_FALSE;
+       }
+
+       /* Show the window after main view is set up */
+       evas_object_show(s_info.win);
+
+       char terms_path[PATH_MAX];
+       utils_get_app_data_path(LATEST_TERMS_JSON_FILENAME, terms_path, PATH_MAX);
+       _terms_list_load(terms_path);
+
+       return EINA_TRUE;
+}
+
+void view_destroy(void)
+{
+       if (s_info.win == NULL)
+               return;
+
+       evas_object_del(s_info.win);
+}
+
+void view_set_callbacks(button_clicked_cb button_clicked_func)
+{
+       s_info.button_clicked_func = button_clicked_func;
+}
+
+static void _popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (s_info.popup) {
+               evas_object_del(s_info.popup);
+               s_info.popup = NULL;
+       }
+}
+
+static void _popup_create(const char *title, const char *text, Evas_Smart_Cb close_cb)
+{
+       const int font_style_buffer_length = 50;
+       s_info.popup = elm_popup_add(s_info.win);
+
+       eext_object_event_callback_add(s_info.popup, EEXT_CALLBACK_BACK, close_cb, NULL);
+       evas_object_size_hint_weight_set(s_info.popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_popup_content_text_wrap_type_set(s_info.popup, ELM_WRAP_WORD);
+
+       int title_len = strlen(title) + font_style_buffer_length;
+       char title_formatted[title_len];
+       snprintf(title_formatted, sizeof(title_formatted), "<font_size=35 color=#000>%s</font>", title);
+       elm_object_part_text_set(s_info.popup, "title,text", title_formatted);
+
+       int text_len = strlen(text) + font_style_buffer_length;
+       char text_formatted[text_len];
+       snprintf(text_formatted, sizeof(text_formatted), "<font_size=25 color=#000>%s</font>", text);
+       elm_object_text_set(s_info.popup, text_formatted);
+
+       Evas_Object *popup_button = elm_button_add(s_info.popup);
+       elm_object_style_set(popup_button, "signin");
+       elm_object_text_set(popup_button, _("OK"));
+       evas_object_smart_callback_add(popup_button, "clicked", close_cb, NULL);
+       elm_object_part_content_set(s_info.popup, "button1", popup_button);
+
+       evas_object_show(s_info.popup);
+}
+
+static void view_set_part_texts(enum view_mode view_mode)
+{
+       elm_object_translatable_part_text_set(s_info.layout_terms, PART_TERMS_TITLE_TEXT, "TERMS_OF_USE_TITLE");
+
+       elm_object_translatable_text_set(s_info.button_left, "BACK");
+       elm_object_translatable_text_set(s_info.button_right, view_mode == Normal ? "NEXT" : "ACCEPT");
+}
+
+
+static void _all_check_cb(void *data, Evas_Object *obj, void* event_info)
+{
+       Eina_Bool all_accepted = elm_check_state_get(s_info.check_all);
+
+       for (int i = 0; i < terms->terms_count; ++i)
+               terms->terms[i].is_accepted = all_accepted;
+
+       if (all_accepted)
+               elm_object_disabled_set(s_info.button_right, EINA_FALSE);
+       else
+               elm_object_disabled_set(s_info.button_right, EINA_TRUE);
+
+       elm_genlist_realized_items_update(s_info.gen_list);
+}
+
+static void _one_check_cb(void *data, Evas_Object *obj, void* event_info)
+{
+       struct term *t = (struct term *)data;
+       if (t == NULL) {
+               LOGE("Invalid terms data.");
+               return;
+       }
+
+       t->is_accepted = elm_check_state_get(obj);
+
+       bool all_accepted = true;
+       for (int i = 0; i < terms->terms_count; ++i) {
+               if (terms->terms[i].is_required)
+                       all_accepted = all_accepted && terms->terms[i].is_accepted;
+       }
+
+       elm_check_state_set(s_info.check_all, all_accepted);
+
+       if (all_accepted)
+               elm_object_disabled_set(s_info.button_right, EINA_FALSE);
+       else
+               elm_object_disabled_set(s_info.button_right, EINA_TRUE);
+}
+
+static char *_agree_all_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       return g_strdup(_("AGREE_TO_ALL"));
+}
+
+static Evas_Object *_agree_all_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       if (!strcmp("elm.swallow.check", part)) {
+               if (!s_info.check_all) {
+                       s_info.check_all = elm_check_add(obj);
+                       elm_object_style_set(s_info.check_all, "oobe-casual");
+                       elm_check_state_set(s_info.check_all, EINA_FALSE);
+                       evas_object_smart_callback_add(s_info.check_all, "changed", _all_check_cb, NULL);
+                       evas_object_pass_events_set(s_info.check_all, EINA_TRUE);
+                       evas_object_propagate_events_set(s_info.check_all, EINA_FALSE);
+               }
+               return s_info.check_all;
+       }
+
+       return NULL;
+}
+
+static char *_agree_one_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       struct term *t = (struct term *)data;
+       if (t == NULL) {
+               LOGE("Invalid terms data.");
+               return NULL;
+       }
+
+       return g_strdup(t->title);
+}
+
+static Evas_Object *_agree_one_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       struct term *t = (struct term *)data;
+       if (t == NULL) {
+               LOGE("Invalid terms data.");
+               return NULL;
+       }
+
+       Evas_Object *widget = NULL;
+
+       if (!strcmp("elm.swallow.check", part) && t->is_required) {
+               widget = elm_check_add(obj);
+               elm_object_style_set(widget, "oobe-casual");
+               elm_check_state_set(widget, t->is_accepted);
+               evas_object_smart_callback_add(widget, "changed", _one_check_cb, data);
+               evas_object_pass_events_set(widget, EINA_TRUE);
+               evas_object_propagate_events_set(widget, EINA_FALSE);
+       } else if (!strcmp("elm.swallow.button", part)) {
+               widget = elm_button_add(obj);
+               elm_object_style_set(widget, "viewdetails");
+               elm_object_disabled_set(widget, EINA_FALSE);
+               elm_object_text_set(widget, _("VIEW_DETAILS"));
+               evas_object_smart_callback_add(widget, "clicked", _button_view_details_clicked_cb, t);
+       }
+
+       return widget;
+}
+
+static Eina_Bool _create_terms_layout(enum view_mode view_mode)
+{
+       s_info.layout_terms = utils_view_create_set_layout(s_info.conform, EDJ_TERMS, GRP_TERMS, NULL);
+       if (!s_info.layout_terms)
+               return EINA_FALSE;
+
+       if(view_mode == Normal) {
+               s_info.button_left = elm_button_add(s_info.layout_terms);
+               elm_object_style_set(s_info.button_left, "back");
+               elm_object_part_content_set(s_info.layout_terms, "button_left", s_info.button_left);
+       }
+       s_info.button_right = elm_button_add(s_info.layout_terms);
+       elm_object_style_set(s_info.button_right, "next");
+       elm_object_disabled_set(s_info.button_right, EINA_TRUE);
+       elm_object_part_content_set(s_info.layout_terms, "button_right", s_info.button_right);
+
+       evas_object_smart_callback_add(s_info.button_left, "clicked", _button_left_clicked_cb, NULL);
+       evas_object_smart_callback_add(s_info.button_right, "clicked", _button_right_clicked_cb, NULL);
+
+       s_info.gen_list = elm_genlist_add(s_info.layout_terms);
+       elm_object_style_set(s_info.gen_list, "no_effect");
+       elm_scroller_policy_set(s_info.gen_list, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+       elm_object_part_content_set(s_info.layout_terms, "terms_list", s_info.gen_list);
+       elm_genlist_homogeneous_set(s_info.gen_list, EINA_FALSE);
+
+       view_set_part_texts(view_mode);
+
+       return EINA_TRUE;
+}
+
+
+static void _terms_list_load(char *terms_path)
+{
+       terms = terms_create_from_file(terms_path);
+
+       Elm_Genlist_Item_Class *agree_all_class = elm_genlist_item_class_new();
+       agree_all_class->item_style = "terms_agree";
+       agree_all_class->func.text_get = _agree_all_text_get;
+       agree_all_class->func.content_get = _agree_all_content_get;
+
+       Elm_Genlist_Item_Class *agree_one_class = elm_genlist_item_class_new();
+       agree_one_class->item_style = "terms_agree";
+       agree_one_class->func.text_get = _agree_one_text_get;
+       agree_one_class->func.content_get = _agree_one_content_get;
+
+       int items_to_accept = 0;
+       for (int i = 0; i < terms->terms_count; ++i)
+       {
+               if (terms->terms[i].is_required)
+                       ++items_to_accept;
+       }
+
+       if (items_to_accept > 1)
+               elm_genlist_item_append(s_info.gen_list, agree_all_class, &terms_all, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+       for (int i = 0; i < terms->terms_count; ++i)
+               elm_genlist_item_append(s_info.gen_list, agree_one_class, terms->terms + i, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+       elm_genlist_item_class_free(agree_all_class);
+       elm_genlist_item_class_free(agree_one_class);
+
+       int items_count = elm_genlist_items_count(s_info.gen_list);
+       if (items_count > 3)
+               elm_object_signal_emit(s_info.layout_terms, "show_list_bg", "");
+}
+
+static void _button_view_details_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       LOGD("button view details clicked");
+
+       struct term *t = (struct term *)data;
+       if (t == NULL) {
+               LOGE("Invalid terms data.");
+               return;
+       }
+
+       _popup_create(t->title, t->content, _popup_hide_cb);
+}
+
+static void _button_left_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       LOGD("button left clicked");
+       s_info.button_clicked_func("back");
+}
+
+static void _button_right_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       LOGD("button right clicked");
+       s_info.button_clicked_func("next");
+}
diff --git a/oobe-terms/tizen-manifest.xml b/oobe-terms/tizen-manifest.xml
new file mode 100644 (file)
index 0000000..871f028
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.tizen.oobe-terms" version="1.0.0">
+    <profile name="mobile"/>
+    <ui-application appid="org.tizen.oobe-terms" exec="oobe-terms" launch_mode="caller" multiple="false" nodisplay="true" taskmanage="false" type="capp">
+        <label>oobe-terms</label>
+        <icon>oobe-terms.png</icon>
+    </ui-application>
+</manifest>
diff --git a/oobe-wifi/.cproject b/oobe-wifi/.cproject
new file mode 100644 (file)
index 0000000..bb61e2a
--- /dev/null
@@ -0,0 +1,662 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-wifi" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.1171332142" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.295781365" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder autoBuildTarget="all" buildPath="${workspace_loc:/oobe-wifi}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1710011272" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.2098724596" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1623295288" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.973838867" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1539869746" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1348013409" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.994392976" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core.private_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.647427245" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.743319156" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.1346742408" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1633167303" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.1461956363" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2103478445" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1427122571" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1035218690" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.1485991353" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" useByScannerDiscovery="false" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1462730614" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" useByScannerDiscovery="false" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1696016755" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-device.core.private_llvm40.armel"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1388420251" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/aul/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/auth-fw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/pkgmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rua/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.495701452" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.2129269724" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1109866055" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1660214532" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                                       <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+                                                                       <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+                                                                       <listOptionValue builtIn="false" value="_DEBUG"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.files.633394147" name="Include files (-include)" superClass="gnu.c.compiler.option.include.files" valueType="includeFiles"/>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1398816420" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.820020187" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.386902377" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.1741559595" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.341052289" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1901630620" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.300676074" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.302229333" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.785172334" name="Other objects" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Debug/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.809509541" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.588890740" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.244648277" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.934012425" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1154987452" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1077086790" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.613724455" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1918921028" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.911225846" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1033557518" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.1933572947">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1933572947" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="oobe-wifi" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1933572947" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+                                       <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.1933572947." name="/" resourcePath="">
+                                               <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.908253461" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+                                                       <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1506491383" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                                                       <builder buildPath="${workspace_loc:/oobe-wifi}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1139463453" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                                                       <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.773828510" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1767660824" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                                                               <option id="gnu.cpp.compiler.option.optimization.level.1137840589" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.35063666" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.2115933032" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.1933142423" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.488166886" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1760483139" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.compiler.option.include.paths.1871471751" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.822461313" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1143111230" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1533577413" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1930799730" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                                               <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.1263057961" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                                               <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.12184324" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1484474354" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="mobile-5.0-emulator.core_llvm40.i386"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.710726533" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1856089414" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value=" -fPIE"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.paths.1407869103" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/inc}&quot;"/>
+                                                               </option>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1064966819" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="Native_API"/>
+                                                               </option>
+                                                               <option id="gnu.c.compiler.option.include.files.1663950368" name="Include files (-include)" superClass="gnu.c.compiler.option.include.files" useByScannerDiscovery="false" valueType="includeFiles"/>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1627942506" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.64807704" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                                                       <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1625732541" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                                                               <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.136311604" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.73957987" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                                               <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1833075408" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1689496584" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="-pie -lpthread "/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.paths.2079450212" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+                                                               </option>
+                                                               <option id="gnu.cpp.link.option.userobjs.2026463884" name="Other objects" superClass="gnu.cpp.link.option.userobjs" useByScannerDiscovery="false" valueType="userObjs">
+                                                                       <listOptionValue builtIn="false" value="&quot;${workspace_loc:/oobe-common/Release/liboobe-common.a}&quot;"/>
+                                                               </option>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1151951481" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1522371904" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.290373393" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.1266864718" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                                                       <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1912674905" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.1313242807" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                                                       <tool id="org.tizen.nativecore.tool.ast.cpp.1770028504" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.2014614602" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1741172612" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                                                       <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.994974697" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                                               </toolChain>
+                                       </folderInfo>
+                                       <sourceEntries>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+                                       </sourceEntries>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="oobe-wifi.org.tizen.nativecore.target.sbi.gcc45.app.1172508255" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.1933572947">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="refreshScope" versionNumber="2">
+               <configuration configurationName="Debug">
+                       <resource resourceType="PROJECT" workspacePath="/oobe-wifi"/>
+               </configuration>
+               <configuration configurationName="Release">
+                       <resource resourceType="PROJECT" workspacePath="/oobe-wifi"/>
+               </configuration>
+       </storageModule>
+       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
diff --git a/oobe-wifi/.exportMap b/oobe-wifi/.exportMap
new file mode 100644 (file)
index 0000000..de30516
--- /dev/null
@@ -0,0 +1,5 @@
+{
+       global: main;
+       _IO_*;
+       local: *;
+};
diff --git a/oobe-wifi/.package-stamp b/oobe-wifi/.package-stamp
new file mode 100644 (file)
index 0000000..40cbe59
--- /dev/null
@@ -0,0 +1 @@
+TPK
\ No newline at end of file
diff --git a/oobe-wifi/.project b/oobe-wifi/.project
new file mode 100644 (file)
index 0000000..f76be06
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>oobe-wifi</name>
+       <comment></comment>
+       <projects>
+               <project>oobe-common</project>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+       </natures>
+       <filteredResources>
+               <filter>
+                       <id>1560498192838</id>
+                       <name></name>
+                       <type>26</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+                       </matcher>
+               </filter>
+               <filter>
+                       <id>1560498192840</id>
+                       <name></name>
+                       <type>6</type>
+                       <matcher>
+                               <id>org.eclipse.ui.ide.multiFilter</id>
+                               <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+                       </matcher>
+               </filter>
+       </filteredResources>
+</projectDescription>
diff --git a/oobe-wifi/.settings/org.eclipse.cdt.core.prefs b/oobe-wifi/.settings/org.eclipse.cdt.core.prefs
new file mode 100644 (file)
index 0000000..86794b9
--- /dev/null
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+environment/project/org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222/RS_LIBRARIES/delimiter=\:
+environment/project/org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222/RS_LIBRARIES/operation=replace
+environment/project/org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222/RS_LIBRARIES/value=-laccounts-svc -lanl -lappcore-agent -lasp -lattach-panel -lbadge -lbase-utils-i18n -lBrokenLocale -lbundle -lcairo -lcalendar-service2 -lcapi-appfw-alarm -lcapi-appfw-app-common -lcapi-appfw-app-control -lcapi-appfw-application -lcapi-appfw-app-manager -lcapi-appfw-event -lcapi-appfw-job-scheduler -lcapi-appfw-package-manager -lcapi-appfw-preference -lcapi-appfw-widget-application -lcapi-base-common -lcapi-content-media-content -lcapi-content-mime-type -lcapi-context-motion -lcapi-context -lcapi-geofence-manager -lcapi-location-manager -lcapi-maps-service -lcapi-media-audio-io -lcapi-media-camera -lcapi-media-codec -lcapi-media-controller -lcapi-mediademuxer -lcapi-media-image-util -lcapi-media-metadata-editor -lcapi-media-metadata-extractor -lcapi-mediamuxer -lcapi-media-player -lcapi-media-radio -lcapi-media-recorder -lcapi-media-screen-mirroring -lcapi-media-sound-manager -lcapi-media-sound-pool -lcapi-media-streamer -lcapi-media-streamrecorder -lcapi-media-thumbnail-util -lcapi-media-tone-player -lcapi-media-tool -lcapi-media-video-util -lcapi-media-vision -lcapi-media-wav-player -lcapi-messaging-email -lcapi-messaging-messages -lcapi-network-bluetooth -lcapi-network-connection -lcapi-network-http -lcapi-network-inm -lcapi-network-mtp -lcapi-network-nfc -lcapi-network-smartcard -lcapi-network-softap -lcapi-network-stc -lcapi-network-wifi-manager -lcapi-network-wifi -lcapi-privacy-privilege-manager -lcapi-system-device -lcapi-system-info -lcapi-system-media-key -lcapi-system-runtime-info -lcapi-system-sensor -lcapi-system-system-settings -lcapi-system-usbhost -lcapi-telephony -lcapi-ui-efl-util -lcapi-ui-inputmethod-manager -lcapi-ui-inputmethod -lcapi-vpnsvc -lcapi-web-url-download -lcbhm -lchromium-ewk -lcidn -lcontacts-service2 -lcore-sync-client -lcrypto -lcrypt -lc -lcsr-client -lcurl -ldali-adaptor -ldali-core -ldali-toolkit -ldata-control -ldevice-certificate-manager -ldlog -ldl -ldpm -lecore_buffer -lecore_con -lecore_evas -lecore_file -lecore_imf_evas -lecore_imf -lecore_input_evas -lecore_input -lecore_ipc -lecore -ledje -leet -lefl-extension -lefreet_mime -lefreet -lefreet_trash -leina -leio -lelementary -lembryo -leom -leo -lethumb_client -lethumb -levas -lexif -lfeedback -lfido-client -lfontconfig -lfreetype -lgio-2.0 -lglib-2.0 -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0 -lharfbuzz-icu -lharfbuzz -licudata -licui18n -licuio -licutest -licutu -licuuc -liotcon -ljson-glib-1.0 -lkey-manager-client -lma -lmessage-port -lminicontrol-provider -lminicontrol-viewer -lminizip -lm -lmv_barcode_detector -lmv_barcode_generator -lmv_face -lmv_image -lmv_surveillance -lnotification -lnsd-dns-sd -lnsd-ssdp -lnsl -lnss_compat -lnss_dns -lnss_files -lnss_hesiod -lnss_nisplus -lnss_nis -loauth2 -loauth -lopenal -lphonenumber-utils -lprivilege-info -lpthread -lpush -lresolv -lrpc-port -lrt -lshortcut -lsqlite3 -lssl -lstorage -lstt_engine -lstt -ltbm -lteec -lthread_db -lttrace -ltts_engine -ltts -ltzsh_common -ltzsh_quickpanel -lui-viewmgr -lutil -lvc-elm -lvc_engine -lvc_manager -lvc -lwidget_service -lwidget_viewer_dali -lwidget_viewer_evas -lwifi-direct -lxml2 -lyaca -lz -lui-gadget-1
+environment/project/org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222/append=true
+environment/project/org.tizen.nativecore.config.sbi.gcc45.app.debug.316777222/appendContributed=true
diff --git a/oobe-wifi/.tproject b/oobe-wifi/.tproject
new file mode 100644 (file)
index 0000000..658e81b
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+    <platforms>
+        <platform>
+            <name>mobile-5.0</name>
+        </platform>
+    </platforms>
+    <package>
+        <blacklist/>
+        <resFallback autoGen="true"/>
+    </package>
+</tproject>
diff --git a/oobe-wifi/build_def.prop b/oobe-wifi/build_def.prop
new file mode 100644 (file)
index 0000000..6bb5e2f
--- /dev/null
@@ -0,0 +1,6 @@
+
+# Add pre/post build process
+PREBUILD_DESC = 
+PREBUILD_COMMAND = 
+POSTBUILD_DESC = 
+POSTBUILD_COMMAND = 
diff --git a/oobe-wifi/edje/fonts/SamsungOneUI-300_v1.0.ttf b/oobe-wifi/edje/fonts/SamsungOneUI-300_v1.0.ttf
new file mode 100644 (file)
index 0000000..a60f133
Binary files /dev/null and b/oobe-wifi/edje/fonts/SamsungOneUI-300_v1.0.ttf differ
diff --git a/oobe-wifi/edje/fonts/SamsungOneUI-400C_v1.0.ttf b/oobe-wifi/edje/fonts/SamsungOneUI-400C_v1.0.ttf
new file mode 100644 (file)
index 0000000..324f2c9
Binary files /dev/null and b/oobe-wifi/edje/fonts/SamsungOneUI-400C_v1.0.ttf differ
diff --git a/oobe-wifi/edje/fonts/SamsungOneUI-400_v3.0.ttf b/oobe-wifi/edje/fonts/SamsungOneUI-400_v3.0.ttf
new file mode 100644 (file)
index 0000000..b662d56
Binary files /dev/null and b/oobe-wifi/edje/fonts/SamsungOneUI-400_v3.0.ttf differ
diff --git a/oobe-wifi/edje/fonts/SamsungOneUI-600_v3.0.ttf b/oobe-wifi/edje/fonts/SamsungOneUI-600_v3.0.ttf
new file mode 100644 (file)
index 0000000..67d2bb5
Binary files /dev/null and b/oobe-wifi/edje/fonts/SamsungOneUI-600_v3.0.ttf differ
diff --git a/oobe-wifi/edje/fonts/SamsungOneUI-800_v1.0.ttf b/oobe-wifi/edje/fonts/SamsungOneUI-800_v1.0.ttf
new file mode 100644 (file)
index 0000000..ba0a0af
Binary files /dev/null and b/oobe-wifi/edje/fonts/SamsungOneUI-800_v1.0.ttf differ
diff --git a/oobe-wifi/edje/images/bg.png b/oobe-wifi/edje/images/bg.png
new file mode 100644 (file)
index 0000000..479e2a2
Binary files /dev/null and b/oobe-wifi/edje/images/bg.png differ
diff --git a/oobe-wifi/edje/images/image_1.png b/oobe-wifi/edje/images/image_1.png
new file mode 100644 (file)
index 0000000..7ec9126
Binary files /dev/null and b/oobe-wifi/edje/images/image_1.png differ
diff --git a/oobe-wifi/edje/images/list_bg.png b/oobe-wifi/edje/images/list_bg.png
new file mode 100644 (file)
index 0000000..5bee352
Binary files /dev/null and b/oobe-wifi/edje/images/list_bg.png differ
diff --git a/oobe-wifi/edje/images/oobe_button/arrow_left.png b/oobe-wifi/edje/images/oobe_button/arrow_left.png
new file mode 100644 (file)
index 0000000..351f022
Binary files /dev/null and b/oobe-wifi/edje/images/oobe_button/arrow_left.png differ
diff --git a/oobe-wifi/edje/images/oobe_button/arrow_right.png b/oobe-wifi/edje/images/oobe_button/arrow_right.png
new file mode 100644 (file)
index 0000000..04e60a3
Binary files /dev/null and b/oobe-wifi/edje/images/oobe_button/arrow_right.png differ
diff --git a/oobe-wifi/edje/images/oobe_button/button_circle_32.png b/oobe-wifi/edje/images/oobe_button/button_circle_32.png
new file mode 100644 (file)
index 0000000..aa770f1
Binary files /dev/null and b/oobe-wifi/edje/images/oobe_button/button_circle_32.png differ
diff --git a/oobe-wifi/edje/images/oobe_button/button_circle_60.png b/oobe-wifi/edje/images/oobe_button/button_circle_60.png
new file mode 100644 (file)
index 0000000..0dfbbcd
Binary files /dev/null and b/oobe-wifi/edje/images/oobe_button/button_circle_60.png differ
diff --git a/oobe-wifi/edje/images/oobe_button/button_shadow_77.png b/oobe-wifi/edje/images/oobe_button/button_shadow_77.png
new file mode 100644 (file)
index 0000000..b2367a3
Binary files /dev/null and b/oobe-wifi/edje/images/oobe_button/button_shadow_77.png differ
diff --git a/oobe-wifi/edje/images/wifi_shadow (old).png b/oobe-wifi/edje/images/wifi_shadow (old).png
new file mode 100644 (file)
index 0000000..b13fe27
Binary files /dev/null and b/oobe-wifi/edje/images/wifi_shadow (old).png differ
diff --git a/oobe-wifi/edje/images/wifi_shadow.png b/oobe-wifi/edje/images/wifi_shadow.png
new file mode 100644 (file)
index 0000000..55972a2
Binary files /dev/null and b/oobe-wifi/edje/images/wifi_shadow.png differ
diff --git a/oobe-wifi/inc/app-control.h b/oobe-wifi/inc/app-control.h
new file mode 100644 (file)
index 0000000..670b8c7
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __APP_CONTROL_H__
+#define __APP_CONTROL_H__
+
+#include <app_control.h>
+#include <dlog.h>
+
+#ifndef  LOG_TAG
+#define LOG_TAG "app-control"
+#endif
+
+typedef void (*app_control_reply_received_cb)(const char *reply);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb);
+void app_control_save_reply_handler(app_control_h handler);
+void app_control_reply(const char *message);
+
+#endif /*__APP_CONTROL_H__ */
diff --git a/oobe-wifi/inc/oobe-wifi.h b/oobe-wifi/inc/oobe-wifi.h
new file mode 100644 (file)
index 0000000..6268e81
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __OOBE_WIFI_H__
+#define __OOBE_WIFI_H__
+
+#include <app.h>
+#include <Elementary.h>
+#include <system_settings.h>
+#include <efl_extension.h>
+#include <dlog.h>
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#endif
+#define LOG_TAG "oobe-wifi"
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.tizen.oobe-wifi"
+#endif
+
+#define __FREE(del, arg) do { \
+    if (arg) { \
+        /*cast any argument to (void*) to avoid build warring*/\
+        del((void *)(arg)); \
+        arg = NULL; \
+    } \
+} while (0)
+#define FREE(arg) __FREE(free, arg)
+
+#endif /* __OOBE_WIFI_H___ */
diff --git a/oobe-wifi/inc/view-defines.h b/oobe-wifi/inc/view-defines.h
new file mode 100644 (file)
index 0000000..915a1a7
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_DEFINES_H__
+#define __VIEW_DEFINES_H__
+
+#define EDJ_WIFI "edje/oobe-wifi.edj"
+#define GRP_WIFI "main"
+
+#define EDJ_POPUP "edje/oobe-wifi-popup.edj"
+#define GRP_POPUP "main"
+
+#define PART_BUTTON_BACK "part_button_back"
+#define PART_BUTTON_NEXT "part_button_next"
+
+#define PART_BUTTON_CANCEL "part_button_back"
+#define PART_BUTTON_CONFIRM "part_button_confirm"
+
+#define PART_BUTTON_NO "no_placeholder"
+#define PART_BUTTON_YES "yes_placeholder"
+
+#define PART_POPUP "popup_placeholder"
+
+#endif /* __VIEW_DEFINES_H__ */
diff --git a/oobe-wifi/inc/view.h b/oobe-wifi/inc/view.h
new file mode 100644 (file)
index 0000000..136c483
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __VIEW_H__
+#define __VIEW_H__
+
+#include <Elementary.h>
+
+typedef void (*button_clicked_cb)(const char *action);
+
+Eina_Bool view_create(void *user_data);
+void view_destroy(void);
+void view_set_callbacks(button_clicked_cb button_clicked_func);
+
+#endif /* __VIEW_H__ */
diff --git a/oobe-wifi/inc/wifi.h b/oobe-wifi/inc/wifi.h
new file mode 100644 (file)
index 0000000..899bd72
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 __WIFI_H__
+#define __WIFI_H__
+
+typedef enum {
+       WIFI_CONNECTED = 3,
+       WIFI_NOT_CONNECTED = 0,
+} wifi_state;
+
+typedef void(*wifi_state_changed_cb)(wifi_state state, void *user_data);
+
+void wifi_init();
+void wifi_deinit();
+wifi_state wifi_get_state();
+void wifi_subscribe_state_changed( wifi_state_changed_cb callback, void *user_data );
+
+#endif /* __WIFI_H__ */
diff --git a/oobe-wifi/project_def.prop b/oobe-wifi/project_def.prop
new file mode 100644 (file)
index 0000000..11b133d
--- /dev/null
@@ -0,0 +1,63 @@
+
+# Project Name
+APPNAME = oobe-wifi
+
+# Project Type
+type = app
+
+# Project Profile
+profile = mobile-5.0
+
+# C/CPP Sources
+USER_SRCS = src/*.c
+
+# EDC Sources
+USER_EDCS =  
+
+# PO Sources
+USER_POS = res/po/*.po
+
+# User Defines
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING 
+USER_CPP_DEFS = 
+
+# User Undefines
+USER_UNDEFS = 
+USER_CPP_UNDEFS = 
+
+# User Libraries
+USER_LIBS = 
+
+# User Objects
+USER_OBJS = 
+
+# User Includes
+## C Compiler
+USER_C_INC_DIRS = inc 
+USER_INC_FILES = 
+## C++ Compiler
+USER_CPP_INC_DIRS = 
+USER_CPP_INC_FILES = 
+
+USER_INC_DIRS = $(USER_C_INC_DIRS) $(USER_CPP_INC_DIRS)
+
+# User Library Path
+USER_LIB_DIRS = 
+
+# EDC Resource Path
+USER_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# EDC Flags
+USER_EXT_EDC_KEYS = EDC0 
+
+USER_EXT_EDC0_EDCS = res/edje/*.edc
+USER_EXT_EDC0_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
+USER_EXT_EDC0_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
+USER_EXT_EDC0_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
+
+# Resource Filter
+USER_RES_INCLUDE = 
+USER_RES_EXCLUDE = 
+
diff --git a/oobe-wifi/res/edje/oobe-wifi.edc b/oobe-wifi/res/edje/oobe-wifi.edc
new file mode 100644 (file)
index 0000000..bca7e06
--- /dev/null
@@ -0,0 +1,140 @@
+#include "../../inc/view-defines.h"
+
+#define BG_IMAGE "bg.png"
+#define BG_ICON "image_1.png"
+#define WIFI_SHADOW "list_bg.png"
+
+#define SAMSUNG_ONE_800 "SamsungOneUI-800_v1.0.ttf"
+
+collections {
+    base_scale: 1.8;
+    
+    fonts {
+        font: SAMSUNG_ONE_800 "samsung-one-800";
+    }
+    
+    styles {
+        style {
+            name: "style_title";
+            base: "font=samsung-one-800 font_size=36 align=center valign=center wrap=word color=#05180a";
+        }
+    }
+    group {
+        name: GRP_WIFI;
+
+        images {
+            image: BG_IMAGE COMP;
+            image: BG_ICON COMP;
+            image: WIFI_SHADOW COMP;
+        }
+
+        parts {
+            part {
+                    name: PART_WIFI_BG;
+                    type: RECT;
+                    description {
+                        state: "default" 0.0;
+                        rel1.relative: 0.0 0.0;
+                        rel2.relative: 1.0 1.0;
+                        color: 255 255 255 255;
+                    }
+                }
+            part {
+                name: PART_WIFI_BG_IMAGE;
+                type: IMAGE;
+                description {
+                    state: "default" 0.0;
+                    rel1.relative: 0.0 0.0;
+                    rel2.relative: 700/1280 1.0;
+                    image {
+                        normal: BG_IMAGE;
+                        middle: DEFAULT;
+                     }
+                }
+            }
+            part {
+                name: PART_WIFI_BG_ICON;
+                type: IMAGE;
+                description {
+                    state: "default" 0.0;
+                    rel1.relative: 87/1280 94/720;
+                    rel2.relative: (87+429)/1280 (94+322)/720;
+                    image {
+                        normal: BG_ICON;
+                        middle: DEFAULT;
+                     }
+                }
+            }
+            part {
+                name: PART_TERMS_TITLE_TEXT;
+                type: TEXTBLOCK;
+                description {
+                    rel1.relative: 170/1280 460/720;
+                    rel2.relative: (170+240)/1280 (460+85)/720;
+                    text {
+                        style: "style_title";
+                        text: "Select your Wi-Fi network";
+                    }
+                }
+            }
+
+                       part {
+                               name: "list_bg";
+                               type: IMAGE;
+                               description {
+                                       state: "default" 0.0;
+                                       image {
+                                               normal: WIFI_SHADOW;
+                                               border: 8 8 8 8;
+                                       }
+                                       rel.to: "elm.swallow.page";
+                                       rel1.offset: (-7-10) -8;
+                                       rel2.offset: (7+10) 7;
+                               }
+                       }
+
+            part { name: "elm.swallow.page";
+                type: SWALLOW;
+                description { state: "default" 0.0;
+                    rel1.relative: (700)/1280 (89)/720;
+                    rel2.relative: (1200)/1280 (89+500)/720;
+                }
+                description { state: "full" 0.0;
+                    inherit: "default";
+                    rel2 { to: PART_WIFI_BG; relative: 1.0 1.0; }
+                }
+            }
+            part {
+                name: PART_BUTTON_BACK;
+                type: SWALLOW;
+                description { state: "default" 0.0;
+                    rel1.relative: 64/1280 620/720;
+                    rel2.relative: (64+173)/1280 (620+60)/720;
+                }
+            }
+            part {
+                name: PART_BUTTON_NEXT;
+                type: SWALLOW;
+                description { state: "default" 0.0;
+                    rel1.relative: 1043/1280 620/720;
+                    rel2.relative: (1043+173)/1280 (620+60)/720;
+                }
+            }
+        }
+
+        programs {
+            program {
+                signal: "ug,page,full";
+                script {
+                    set_state(PART:"elm.swallow.page", "full", 0.0);
+                }
+            }
+            program {
+                signal: "ug,page,default";
+                script {
+                    set_state(PART:"elm.swallow.page", "default", 0.0);
+                }
+            }
+        }
+    }
+}
diff --git a/oobe-wifi/res/edje/oobe_button.edc b/oobe-wifi/res/edje/oobe_button.edc
new file mode 100644 (file)
index 0000000..1b7225f
--- /dev/null
@@ -0,0 +1 @@
+#include "../../../edje-common/oobe_button_definition.edc"
diff --git a/oobe-wifi/res/po/en_US.po b/oobe-wifi/res/po/en_US.po
new file mode 100644 (file)
index 0000000..f245625
--- /dev/null
@@ -0,0 +1,15 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "BACK"
+msgstr "Back"
+
+msgid "SKIP"
+msgstr "Skip"
+
+msgid "NEXT"
+msgstr "Next"
+
+msgid "SELECT_WIFI"
+msgstr "Select your Wi-Fi network"
+
diff --git a/oobe-wifi/res/po/pl_PL.po b/oobe-wifi/res/po/pl_PL.po
new file mode 100644 (file)
index 0000000..3eaaae0
--- /dev/null
@@ -0,0 +1,15 @@
+# This PO file is automatically generated by PO File Editor of Tizen Studio
+# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES CAN BE OVERWRITTEN
+
+msgid "BACK"
+msgstr "Wstecz"
+
+msgid "SKIP"
+msgstr "Pomiń"
+
+msgid "NEXT"
+msgstr "Dalej"
+
+msgid "SELECT_WIFI"
+msgstr "Wybierz swoją sieć Wi-Fi"
+
diff --git a/oobe-wifi/shared/res/oobe-wifi.png b/oobe-wifi/shared/res/oobe-wifi.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/oobe-wifi/shared/res/oobe-wifi.png differ
diff --git a/oobe-wifi/src/app-control.c b/oobe-wifi/src/app-control.c
new file mode 100644 (file)
index 0000000..e49587f
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 <app-control.h>
+#include <log.h>
+
+static struct app_control_info {
+       app_control_h handler;
+       app_control_reply_received_cb reply_cb;
+       app_control_h reply_handler;
+} ac_info = {
+       .handler = NULL,
+       .reply_cb = NULL,
+       .reply_handler = NULL
+};
+
+static void _app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data);
+
+void app_control_launch_app(const char *app_id, app_control_reply_received_cb reply_cb)
+{
+       int ret;
+
+       if (!ac_info.handler) {
+               ret = app_control_create(&ac_info.handler);
+
+               if (ret != APP_CONTROL_ERROR_NONE) {
+                   LOGE("app_control_create() failed. err = %d", ret);
+                   return;
+               }
+       }
+
+       ac_info.reply_cb = reply_cb;
+
+       app_control_set_operation(ac_info.handler, APP_CONTROL_OPERATION_DEFAULT);
+       app_control_set_launch_mode(ac_info.handler, APP_CONTROL_LAUNCH_MODE_GROUP);
+       app_control_set_app_id(ac_info.handler, app_id);
+       app_control_add_extra_data(ac_info.handler, "caller", "oobe-setup");
+
+       if (app_control_send_launch_request(ac_info.handler, _app_control_result_cb, NULL) != APP_CONTROL_ERROR_NONE) {
+               LOGE("Failed to launch %s", app_id);
+       }
+
+       app_control_destroy(ac_info.handler);
+       ac_info.handler = NULL;
+}
+
+void app_control_save_reply_handler(app_control_h handler)
+{
+       int ret;
+
+       ret = app_control_clone(&ac_info.reply_handler, handler);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_clone() failed. err = %d", ret);
+               return;
+       }
+}
+
+void app_control_reply(const char *message)
+{
+       int ret;
+       app_control_h reply;
+
+       ret = app_control_create(&reply);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_create() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_add_extra_data(reply, "reply", message);
+
+       ret = app_control_reply_to_launch_request(reply, ac_info.reply_handler, APP_CONTROL_RESULT_SUCCEEDED);
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_reply_to_launch_request() failed. err = %d", ret);
+               return;
+       }
+
+       app_control_destroy(reply);
+       app_control_destroy(ac_info.reply_handler);
+       ac_info.reply_handler = NULL;
+}
+
+static void
+_app_control_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+{
+       char *value;
+
+       if (result == APP_CONTROL_RESULT_SUCCEEDED) {
+               if (app_control_get_extra_data(reply, "reply", &value) == APP_CONTROL_ERROR_NONE) {
+                       ac_info.reply_cb(value);
+               }
+               else {
+                       LOGE("_app_control_result_cb Failed");
+           }
+       }
+       else {
+               LOGE("_app_control_result_cb APP_CONTROL_RESULT_FAILED.");
+       }
+}
diff --git a/oobe-wifi/src/oobe-wifi.c b/oobe-wifi/src/oobe-wifi.c
new file mode 100644 (file)
index 0000000..925960f
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "oobe-wifi.h"
+#include "app-control.h"
+#include "view.h"
+#include <log.h>
+#include <oobe-common.h>
+
+static void _button_clicked_cb(const char* action);
+
+// as root user:
+// mount -o rw,remount /
+// chsmack -r -a User::Home /usr/apps/wifi-efl-ug/res
+
+static bool app_create(void *user_data)
+{
+       utils_view_load_theme("edje/oobe_button.edj");
+
+       view_set_callbacks(_button_clicked_cb);
+
+       if (!view_create(NULL))
+               return false;
+
+       return true;
+}
+
+static void app_terminate(void *user_data)
+{
+       view_destroy();
+}
+
+static void app_control(app_control_h app_control, void *user_data)
+{
+       char* value;
+
+       app_control_get_extra_data(app_control, "caller", &value);
+       if (strcmp(value, "oobe-setup") != 0) {
+               LOGE("Failed running app due to wrong app_control caller.");
+               ui_app_exit();
+       }
+
+       app_control_save_reply_handler(app_control);
+}
+
+static void app_pause(void *user_data)
+{
+}
+
+static void app_resume(void *user_data)
+{
+}
+
+int
+main(int argc, char *argv[])
+{
+       int ret = 0;
+
+       ui_app_lifecycle_callback_s event_callback = {0,};
+
+       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;
+
+       ret = ui_app_main(argc, argv, &event_callback, NULL);
+       if (ret != APP_ERROR_NONE) {
+               LOGE("ui_app_main() failed. err = %d", ret);
+       }
+
+       return ret;
+}
+
+static void _button_clicked_cb(const char* action)
+{
+       app_control_reply(action);
+       ui_app_exit();
+}
diff --git a/oobe-wifi/src/view.c b/oobe-wifi/src/view.c
new file mode 100644 (file)
index 0000000..7408059
--- /dev/null
@@ -0,0 +1,359 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "view.h"
+#include "app-control.h"
+#include <log.h>
+#include "wifi.h"
+#include "oobe-wifi.h"
+#include "view-defines.h"
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <oobe-common.h>
+
+#define INFO_TEXT "<font_size=25 color=#102502 font=SamsungOne>Are You sure You want to skip this step?<br/><br/>You will be taken to partially functioning home screen until Wi-Fi is connected.</font>"
+
+static struct view_info {
+       Evas_Object *win;
+       Evas_Object *conform;
+       Evas_Object *layout_wifi;
+       Evas_Object *back_button;
+       Evas_Object *next_button;
+       ui_gadget_h ug;
+       button_clicked_cb button_clicked_func;
+       Evas_Object *skip_popup;
+       Evas_Object *skip_popup_confirm_button;
+       Evas_Object *skip_popup_cancel_button;
+} s_info = {
+       .win = NULL,
+       .conform = NULL,
+       .layout_wifi = NULL,
+       .ug = NULL,
+       .back_button = NULL,
+       .next_button = NULL,
+       .button_clicked_func = NULL,
+       .skip_popup = NULL,
+       .skip_popup_confirm_button = NULL,
+       .skip_popup_cancel_button = NULL
+};
+
+static Eina_Bool _create_wifi_layout(void);
+static Eina_Bool _create_wifi_ug(void);
+static void _update_next_skip_button(void);
+static void _create_ug_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void _destroy_ug_cb(ui_gadget_h ug, void *priv);
+static void _wifi_result_cb(ui_gadget_h ug, app_control_h result, void *priv);
+static void _back_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _next_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _skip_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object* _create_button(Evas_Object *parent, const char *style, const char *text, const char *part, Evas_Smart_Cb clicked_cb);
+static void _update_button(Evas_Object *button, const char *style, const char *text, Evas_Smart_Cb clicked_cb);
+static void _create_skip_popup(Evas_Object *parent);
+static void _skip_confirm_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _skip_cancel_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void _wifi_state_changed_cb(wifi_state state, void *user_data);
+
+Eina_Bool view_create(void *user_data)
+{
+       wifi_init();
+
+       /* Create the window */
+       s_info.win = utils_view_create_win(PACKAGE);
+       if (s_info.win == NULL) {
+               LOGE("failed to create a window.");
+               return EINA_FALSE;
+       }
+
+       if (elm_win_wm_rotation_supported_get(s_info.win)) {
+               int rots[] = { 0, 90, 180, 270 };
+               elm_win_wm_rotation_available_rotations_set(s_info.win, (const int *)(&rots), 4);
+       }
+
+       elm_win_indicator_opacity_set(s_info.win, ELM_WIN_INDICATOR_TRANSPARENT);
+
+       /* Create the conformant */
+       s_info.conform = utils_view_create_conformant(s_info.win);
+       if (s_info.conform == NULL) {
+               LOGE("failed to create a conformant");
+               return EINA_FALSE;
+       }
+
+       if (!_create_wifi_layout()) {
+               LOGE("failed to create wifi layout.");
+               return EINA_FALSE;
+       }
+
+       /* Show the window after main view is set up */
+       evas_object_show(s_info.win);
+       wifi_subscribe_state_changed(_wifi_state_changed_cb, NULL);
+
+       return EINA_TRUE;
+}
+
+void view_destroy(void)
+{
+       wifi_deinit();
+
+       if (s_info.win == NULL) {
+               return;
+       }
+
+       evas_object_del(s_info.win);
+}
+
+void view_set_callbacks(button_clicked_cb button_clicked_func)
+{
+       s_info.button_clicked_func = button_clicked_func;
+}
+
+static Eina_Bool _create_wifi_layout(void)
+{
+       s_info.layout_wifi= utils_view_create_set_layout(s_info.conform, EDJ_WIFI, GRP_WIFI, NULL);
+       if (!s_info.layout_wifi) {
+               return EINA_FALSE;
+       }
+
+       s_info.back_button = _create_button(s_info.layout_wifi, "back", i18n_get_text("BACK"), PART_BUTTON_BACK, _back_button_clicked_cb);
+       evas_object_size_hint_weight_set(s_info.back_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(s_info.back_button);
+
+       _update_next_skip_button();
+
+       elm_object_translatable_part_text_set(s_info.layout_wifi, "PART_TERMS_TITLE_TEXT", "SELECT_WIFI");
+
+       return _create_wifi_ug();
+}
+
+static Eina_Bool _create_wifi_ug(void)
+{
+       UG_INIT_EFL(s_info.win, UG_OPT_INDICATOR_DISABLE);
+
+       app_control_h ac;
+       app_control_create(&ac);
+       app_control_add_extra_data(ac, "caller", "pwlock");
+
+       struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
+       if (cbs == NULL) {
+               LOGE("cbs == NULL");
+               return EINA_FALSE;
+       }
+
+       cbs->layout_cb = _create_ug_cb;
+       cbs->result_cb = _wifi_result_cb;
+       cbs->destroy_cb = _destroy_ug_cb;
+       cbs->priv = NULL;
+
+       ui_gadget_h ug = ug_create(NULL, "wifi-efl-UG", UG_MODE_FRAMEVIEW, ac, cbs); //FULLVIEW
+       if (!ug) {
+               LOGE("ug == NULL");
+       }
+
+       s_info.ug = ug;
+
+       app_control_destroy(ac);
+       if (cbs)
+               FREE(cbs);
+
+       cbs = NULL;
+
+       return EINA_TRUE;
+}
+
+static void _create_ug_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       LOGD("[OOBE] _create_ug_cb");
+
+       Evas_Object *base;
+       if (!ug) {
+               LOGD("ug == NULL");
+               return;
+       } else {
+               base = (Evas_Object *)ug_get_layout(ug);
+       }
+
+       if (!base) {
+               LOGD("base == NULL");
+               return;
+       }
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(base);
+               break;
+       case UG_MODE_FRAMEVIEW:
+               elm_object_part_content_set(s_info.layout_wifi, "elm.swallow.page", base);
+               evas_object_show(base);
+               break;
+       default:
+               break;
+       }
+}
+
+static void _destroy_ug_cb(ui_gadget_h ug, void *priv)
+{
+       LOGD("[OOBE] _destroy_ug_cb");
+       if (ug) {
+               ug_destroy(ug);
+               ug = NULL;
+       }
+}
+
+static void _update_next_skip_button()
+{
+       char *name = NULL;
+       char *style = NULL;
+       Evas_Smart_Cb clicked_cb = NULL;
+       switch( wifi_get_state() )
+       {
+               case WIFI_CONNECTED:
+                       LOGD("wifi connected");
+                       style = "next";
+                       name = i18n_get_text("NEXT");
+                       clicked_cb = _next_button_clicked_cb;
+                       break;
+               case WIFI_NOT_CONNECTED:
+                       LOGD("wifi disconnected");
+                       style = "skip";
+                       name = i18n_get_text("SKIP");
+                       clicked_cb = _skip_button_clicked_cb;
+                       break;
+               default:
+                       break;
+       }
+       if( name != NULL && style != NULL ) {
+               if( s_info.next_button == NULL ) {
+                       s_info.next_button = _create_button(s_info.layout_wifi, style, name, PART_BUTTON_NEXT, clicked_cb);
+                       evas_object_size_hint_weight_set(s_info.next_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_show(s_info.next_button);
+               }
+               else
+                       _update_button(s_info.next_button, style, name, clicked_cb);
+       }
+}
+
+static void _wifi_result_cb(ui_gadget_h ug, app_control_h result, void *priv)
+{
+       LOGD("[OOBE] _wifi_result_cb");
+
+       char *msg = NULL;
+       app_control_get_extra_data(result, "result", &msg);
+       LOGD("result = %s", msg);
+
+       if (msg && !strcmp(msg, "rbutton_click")) {
+               LOGD("wifi next button clicked");
+               if (s_info.ug) {
+                       ug_destroy(s_info.ug);
+                       s_info.ug = NULL;
+               }
+       } else if (msg && !strcmp(msg, "lbutton_click")) {
+               LOGD("wifi eext callback");
+               if (s_info.ug) {
+                       ug_destroy(s_info.ug);
+                       s_info.ug = NULL;
+               }
+       } else if (msg && !strcmp(msg, "connected")) {
+               LOGD("wifi connected");
+               s_info.next_button = _create_button(s_info.layout_wifi, "next", "NEXT", PART_BUTTON_NEXT, _next_button_clicked_cb);
+               evas_object_size_hint_weight_set(s_info.next_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(s_info.next_button);
+       } else if (msg && !strcmp(msg, "disconnected")) {
+               LOGD("wifi disconnected");
+               s_info.next_button = _create_button(s_info.layout_wifi, "skip", "SKIP", PART_BUTTON_NEXT, _next_button_clicked_cb);
+               evas_object_size_hint_weight_set(s_info.next_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(s_info.next_button);
+       }
+}
+
+static void _back_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       s_info.button_clicked_func("back");
+}
+
+static void _next_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       s_info.button_clicked_func("next");
+}
+
+static void _skip_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       _create_skip_popup(s_info.conform);
+}
+
+static void _update_button(Evas_Object *button, const char *style, const char *text, Evas_Smart_Cb clicked_cb)
+{
+       if(text)
+               elm_object_text_set(button, text);
+
+       if(style)
+               elm_object_style_set(button, style);
+
+       if (clicked_cb != NULL)
+               evas_object_smart_callback_add(button, "clicked", clicked_cb, NULL);
+}
+
+static Evas_Object* _create_button(Evas_Object *parent, const char *style, const char *text, const char *part, Evas_Smart_Cb clicked_cb)
+{
+       Evas_Object *button = elm_button_add(parent);
+       
+       if(text)
+               elm_object_text_set(button, text);
+
+       if(style)
+               elm_object_style_set(button, style);
+
+    if(part)
+               elm_object_part_content_set(parent, part, button);
+
+       if (clicked_cb != NULL)
+               evas_object_smart_callback_add(button, "clicked", clicked_cb, NULL);
+
+       return button;
+}
+
+static void _create_skip_popup(Evas_Object *parent)
+{
+       LOGD("Creating popup...");
+       s_info.skip_popup = elm_popup_add(parent);
+
+       elm_object_part_text_set(s_info.skip_popup, "title,text", "");
+       elm_object_text_set(s_info.skip_popup, INFO_TEXT);
+
+       s_info.skip_popup_cancel_button = _create_button(s_info.skip_popup, "no", NULL, "button1", _skip_cancel_button_clicked_cb);
+       evas_object_size_hint_weight_set(s_info.skip_popup_cancel_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(s_info.skip_popup_cancel_button);
+
+       s_info.skip_popup_confirm_button = _create_button(s_info.skip_popup, "yes", NULL, "button2", _skip_confirm_button_clicked_cb);
+       evas_object_size_hint_weight_set(s_info.skip_popup_confirm_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(s_info.skip_popup_confirm_button);
+
+       evas_object_show(s_info.skip_popup);
+}
+
+static void _skip_confirm_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       s_info.button_clicked_func("next");
+}
+
+static void _skip_cancel_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       elm_popup_dismiss(s_info.skip_popup);
+       edje_object_signal_emit(s_info.layout_wifi, "skip,canceled", "");
+}
+
+static void _wifi_state_changed_cb(wifi_state state, void *user_data)
+{
+       _update_next_skip_button();
+}
diff --git a/oobe-wifi/src/wifi.c b/oobe-wifi/src/wifi.c
new file mode 100644 (file)
index 0000000..099a1d8
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ *
+ * 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 "wifi.h"
+#include <log.h>
+#include <wifi-manager.h>
+
+static void _wifi_connection_state_cb(wifi_manager_connection_state_e state, wifi_manager_ap_h ap, void *user_data);
+
+typedef struct
+{
+       wifi_state_changed_cb wifi_state_changed_callback;
+       void *user_data;
+       wifi_manager_h wifi_manager;
+} wifi_data_s;
+
+static wifi_data_s wifi_data = { NULL, NULL, NULL };
+
+void wifi_init()
+{
+       if(wifi_data.wifi_manager == NULL)
+       {
+               int ret = wifi_manager_initialize( &wifi_data.wifi_manager );
+               if(ret == WIFI_MANAGER_ERROR_NONE)
+               {
+                       int ret_cb = wifi_manager_set_connection_state_changed_cb( wifi_data.wifi_manager, _wifi_connection_state_cb, NULL );
+                       if(ret_cb != WIFI_MANAGER_ERROR_NONE)
+                               LOGE("wifi_manager_set_connection_state_changed_cb error: %d", ret_cb);
+               }
+               else
+                       LOGE("wifi_manager_initialize error: %d", ret);
+       }
+}
+
+void wifi_deinit()
+{
+       if(wifi_data.wifi_manager != NULL)
+       {
+               int ret_cb = wifi_manager_unset_connection_state_changed_cb(wifi_data.wifi_manager);
+               if(ret_cb == WIFI_MANAGER_ERROR_NONE)
+               {
+                       int ret = wifi_manager_deinitialize( wifi_data.wifi_manager );
+                       if(ret == WIFI_MANAGER_ERROR_NONE)
+                               wifi_data.wifi_manager = NULL;
+                       else
+                               LOGE("wifi_manager_deinitialize error: %d", ret);
+               }
+               else
+                       LOGE("wifi_manager_unset_connection_state_changed_cb error: %d", ret_cb);
+       }
+}
+
+void wifi_subscribe_state_changed( wifi_state_changed_cb callback, void *data )
+{
+       if(wifi_data.wifi_manager != NULL)
+       {
+               wifi_data.wifi_state_changed_callback = callback;
+               wifi_data.user_data = data;
+       }
+       else
+               LOGD("cannot subscribe to state, wifi is not initialized");
+}
+
+wifi_state to_wifi_state(wifi_manager_connection_state_e connection_state)
+{
+       LOGD("wifi connection state: %d", connection_state);
+       return connection_state == WIFI_MANAGER_CONNECTION_STATE_CONNECTED
+               ? WIFI_CONNECTED
+               : WIFI_NOT_CONNECTED;
+}
+
+wifi_state wifi_get_state()
+{
+       wifi_state result = WIFI_NOT_CONNECTED;
+       if (wifi_data.wifi_manager != NULL)
+       {
+               wifi_manager_connection_state_e connection_state;
+               wifi_manager_get_connection_state(wifi_data.wifi_manager, &connection_state);
+               result = to_wifi_state(connection_state);
+       }
+       else
+               LOGD("cannot get state, wifi is not initialized");
+       return result;
+}
+
+static void _wifi_connection_state_cb(wifi_manager_connection_state_e state, wifi_manager_ap_h ap, void *user_data)
+{
+       if(wifi_data.wifi_state_changed_callback != NULL)
+               wifi_data.wifi_state_changed_callback(to_wifi_state(state), wifi_data.user_data);
+}
diff --git a/oobe-wifi/tizen-manifest.xml b/oobe-wifi/tizen-manifest.xml
new file mode 100644 (file)
index 0000000..74c0272
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.tizen.oobe-wifi" version="1.0.0">
+    <profile name="mobile"/>
+    <ui-application appid="org.tizen.oobe-wifi" exec="oobe-wifi" launch_mode="caller" multiple="false" nodisplay="true" taskmanage="false" type="capp">
+        <label>oobe-wifi</label>
+        <icon>oobe-wifi.png</icon>
+    </ui-application>
+    <privileges>
+        <privilege>http://tizen.org/privilege/window.priority.set</privilege>
+        <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+        <privilege>http://tizen.org/privilege/network.set</privilege>
+        <privilege>http://tizen.org/privilege/wifi.admin</privilege>
+        <privilege>http://tizen.org/privilege/wifi.read</privilege>
+        <privilege>http://tizen.org/privilege/wifidirect</privilege>
+        <privilege>http://tizen.org/privilege/systemmanager</privilege>
+        <privilege>http://tizen.org/privilege/network.get</privilege>
+        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+        <privilege>http://tizen.org/privilege/wifi.wifidirect.admin</privilege>
+        <privilege>http://tizen.org/privilege/wifi.wifidirect.read</privilege>
+        <privilege>http://tizen.org/privilege/system</privilege>
+        <privilege>http://tizen.org/privilege/network.profile</privilege>
+        <privilege>http://tizen.org/privilege/wifimanager</privilege>
+    </privileges>
+</manifest>
diff --git a/sam_cli.cfg b/sam_cli.cfg
new file mode 100644 (file)
index 0000000..bcbddf2
--- /dev/null
@@ -0,0 +1,81 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2019 The SAM Tool Authors. All rights reserved.
+#
+#               SAM (S/W Architecture Maturity)
+#
+# Samsung Research,
+# Samsung Electronics Co., Ltd.
+#
+# This software and its documentation are confidential and proprietary
+# information of Samsung Electronics Co., Ltd.  No part of the software and
+# documents may be copied, reproduced, transmitted, translated, or reduced to
+# any electronic medium or machine-readable form without the prior written
+# consent of Samsung Electronics.
+#
+# Samsung Electronics makes no representations with respect to the contents,
+# and assumes no responsibility for any errors that might appear in the
+# software and documents. This publication and the contents here of are subject
+# to change without notice.
+#
+
+################################
+# Project Name
+################################
+SAM_PRJ_NAME="OOBE-HEADED"
+
+
+################################
+# Source Code
+################################
+BUILD_CMD="./build_all.sh"
+SRC_PATH="./"
+SRC_LANG="c"                             # Supported languages : c, cpp, auto_c_cpp, java, cs
+#SRC_SCOPE="config/src_scope.cfg"        # Scoping list
+#SRC_EXCLUDE="config/src_exclude.cfg"    # Excluding list
+
+
+################################
+# SCRA
+################################
+SCRA_SKIP=FALSE                             # Options : TRUE, FALSE
+SCRA_RAW_DATA_PATH=".scap/workspace/scra"
+SCRA_ROOT_TO_CUT=$SRC_PATH
+# SCRA_USE_PARAM=TRUE
+
+
+################################
+# ART_BEAN (Convert SCRA data)
+################################
+ART_BEAN_SKIP=FALSE                         # Options : TRUE, FALSE
+
+
+################################
+# PMD CPD (Duplicated Code)
+################################
+PMD_SKIP=FALSE                              # Options : TRUE, FALSE
+PMD_RAW_DATA_PATH=".scap/workspace/pmd"
+PMD_USE_BUILT_PATH=FALSE                    # Options : TRUE, FALSE
+PMD_ROOT_TO_CUT=$SRC_PATH
+#PMD_EXCLUDE_LIST="config/src_exclude.cfg"  # Excluding list of PMD
+#PMD_RESULT_DETAIL_MODE=FALSE               # Options : TRUE, FALSE
+#PMD_HEAP_SIZE=2048m
+#PMD_ENCODING="utf-8"
+
+
+################################
+# Metrix++ (Preprocessor)
+###############################
+MPP_SKIP=FALSE
+MPP_RAW_DATA_PATH=".scap/workspace/metrixpp"
+MPP_ROOT_TO_CUT=$SRC_PATH
+
+
+################################
+# Advanced Option
+################################
+#ADVANCED_SAM_OPTION="config/sam.cfg"
+#USE_EMBEDDED_LIB=TRUE
+
+SCAP_TOOL_PATH="hub/code-analysis-hub/bin/scap"
+SCAP=$SCAP_TOOL_PATH
diff --git a/terms-server/index.html b/terms-server/index.html
new file mode 100644 (file)
index 0000000..52bdb52
--- /dev/null
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="utf-8">
+        <link rel="stylesheet" href="css/style.css" />
+        <title>Available commands</title>
+    </head>
+    <body style="background: #333;color: #ddd; font-size: 40px">
+        <h2>Available Commands</h2>
+        <ul>
+          <li>/setversion/&lt;int&gt;</li>
+          <li>/setinterval/&lt;int&gt;</li>
+          <li>/setcount/&lt;int&gt;</li>
+          <li>/latest_version?current_version=&lt;int&gt;</li>
+        </ul>
+    </body>
+</html>
+
diff --git a/terms-server/index.js b/terms-server/index.js
new file mode 100644 (file)
index 0000000..e4c3d35
--- /dev/null
@@ -0,0 +1,177 @@
+const express = require('express');
+const path = require('path');
+
+const app = express();
+
+//Consts
+const PORT = 5001;
+//Variables
+var version = 2;
+var interval = 11;
+var count = 2;
+var language='en'
+
+app.get('/', (req,res) =>
+{
+    res.sendFile(path.join(__dirname, 'index.html'));
+})
+
+//Setter end-points
+{
+    app.get('/setversion/:version', (req,res) =>
+    {
+        result = req.params.version;
+        if(isNaN(result))
+        {
+            res.send('Not a number')
+        }
+        else
+        {
+            version = Number(result);
+            res.send('Version set to ' + version);
+        }
+    })
+
+    app.get('/setinterval/:interval', (req,res) =>
+    {
+        result = req.params.interval;
+        if(isNaN(result))
+        {
+            res.send('Not a number')
+        }
+        else
+        {
+            if (result < 5)
+            {
+                res.send('Interval must be bigger than 5');
+            }
+            else
+            {
+                interval = Number(result);
+                res.send('Interval set to ' + interval);
+            }
+        }
+    })
+
+    app.get('/setcount/:count', (req,res) =>
+    {
+        result = req.params.count;
+        if(isNaN(result))
+        {
+            res.send('Not a number')
+        }
+        else
+        {
+            if (result < 1)
+            {
+                res.send('Count must be bigger than 0');
+            }
+            else
+            {
+                count = Number(result);
+                res.send('Count set to ' + count);
+            }
+        }
+    })
+}
+
+terms_by_language = {
+    pl:
+    {
+        pp:
+        {
+                title : 'Polityka BezpieczeĹ„stwa',
+                is_required : false,
+                content : 'Polityka BezpieczeĹ„stwa lorem ipsum'
+        },
+        tnc:
+        {
+                title : 'Warunki',
+                is_required : true,
+                content : 'Warunki lorem ipsum'
+        },
+        fake_terms:
+        {
+            title : 'FaĹ‚szywy tytuĹ‚',
+            is_required : true,
+            content : 'FaĹ‚szywy content'
+        }
+    },
+    en:
+    {
+        pp:
+        {
+            title : 'Privacy policy',
+            is_required : false,
+            content : 'Privacy policy lorem ipsum'
+        },
+        tnc:
+        {
+            title : 'Terms and conditions',
+            is_required : true,
+            content : 'Terms and conditions lorem ipsum'
+        },
+        fake_terms:
+        {
+            title : 'Fake title',
+            is_required : true,
+            content : 'Fake content'
+        }
+    }
+}
+
+//Latest version end-point
+app.get('/latest_version', (req,res) =>
+{
+    if ("language" in req.query)
+    {
+        if (req.query.language in terms_by_language)
+        {
+            language = req.query.language;
+        }
+        else
+        {
+            language='en';
+        }
+    }
+
+    langTerms = terms_by_language[language];
+
+    members = [];
+    members.push(langTerms.pp);
+
+    if (count > 1)
+    {
+        members.push(langTerms.tnc);
+    }
+
+    if (count > 2)
+    {
+        for (var i = 0; i < count - 2; i++)
+        {
+            members.push(langTerms.fake_terms);
+        }
+    }
+
+    if ("current_version" in req.query)
+    {
+        current_version = parseInt(req.query.current_version)
+        if (!isNaN(current_version))
+        {
+            if(current_version >= version)
+            {
+                members = undefined;
+            }
+        }
+    }
+
+    response = {
+        latest_version: version,
+        check_interval: interval,
+        terms: members
+    }
+    res.json(response);
+})
+
+app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
+
diff --git a/terms-server/project.json b/terms-server/project.json
new file mode 100644 (file)
index 0000000..f253b3d
--- /dev/null
@@ -0,0 +1,19 @@
+{
+  "name": "JS",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "dependencies": {
+    "express": "^4.17.1",
+    "nodemon": "^1.19.2"
+  },
+  "devDependencies": {},
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "dev": "nodemon index"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC"
+}
+