From 8d033dfa4ea245d902b83c3cfb4a88d868edc265 Mon Sep 17 00:00:00 2001 From: Jeonghoon Park Date: Wed, 14 Nov 2018 19:21:58 +0900 Subject: [PATCH] update for iot-5.0 Change-Id: I3a1267fd836d8cf97c881dccf4b2d502bcf33765 --- .cproject | 137 ++-- .project | 6 + .tproject | 2 +- inc/sensor-data.h | 1 + inc/smartthings.h | 1658 +++++++++++++++++++++++++++++++++++++++ inc/smartthings_payload.h | 660 ++++++++++++++++ inc/smartthings_resource.h | 367 +++++++++ inc/st_things.h | 299 ------- inc/st_things_types.h | 321 -------- lib/liboicdastack.so | Bin 499340 -> 0 bytes lib/libsdkapi.so | Bin 79944 -> 0 bytes lib/libst_thing_master_api.so | Bin 0 -> 111232 bytes lib/libst_thing_resource_api.so | Bin 0 -> 72552 bytes res/device_def.json | 81 -- shared/res/master.json | 18 + shared/res/resource.json | 37 + src/co2.c | 615 +++++++++++---- src/sensor-data.c | 7 + tizen-manifest.xml | 14 +- 19 files changed, 3320 insertions(+), 903 deletions(-) create mode 100644 inc/smartthings.h create mode 100644 inc/smartthings_payload.h create mode 100644 inc/smartthings_resource.h delete mode 100644 inc/st_things.h delete mode 100644 inc/st_things_types.h delete mode 100644 lib/liboicdastack.so delete mode 100644 lib/libsdkapi.so create mode 100644 lib/libst_thing_master_api.so create mode 100644 lib/libst_thing_resource_api.so delete mode 100644 res/device_def.json create mode 100644 shared/res/master.json create mode 100644 shared/res/resource.json diff --git a/.cproject b/.cproject index 170c0f1..538fe32 100644 --- a/.cproject +++ b/.cproject @@ -16,27 +16,31 @@ - + - + - - + + + + + + + + + diff --git a/.project b/.project index b8898b8..2daec97 100644 --- a/.project +++ b/.project @@ -6,6 +6,11 @@ + org.tizen.nativecore.apichecker.apicheckerbuilder + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder @@ -22,6 +27,7 @@ org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + org.tizen.nativecore.apichecker.apicheckernature diff --git a/.tproject b/.tproject index f857534..7bd616a 100644 --- a/.tproject +++ b/.tproject @@ -2,7 +2,7 @@ - iot-headless-4.0 + iot-headless-5.0 diff --git a/inc/sensor-data.h b/inc/sensor-data.h index 916ce6c..f486551 100644 --- a/inc/sensor-data.h +++ b/inc/sensor-data.h @@ -41,6 +41,7 @@ int sensor_data_set_bool(sensor_data *data, bool value); int sensor_data_set_double(sensor_data *data, double value); int sensor_data_set_string(sensor_data *data, const char *value, unsigned int size); +sensor_data_type_e sensor_data_get_type(sensor_data *data); int sensor_data_get_int(sensor_data *data, int *value); int sensor_data_get_uint(sensor_data *data, unsigned int *value); int sensor_data_get_bool(sensor_data *data, bool *value); diff --git a/inc/smartthings.h b/inc/smartthings.h new file mode 100644 index 0000000..f1b6edc --- /dev/null +++ b/inc/smartthings.h @@ -0,0 +1,1658 @@ + /* + * 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/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 +#include +#include + +#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. + * @details The following error codes can be received: \n + #SMARTTHINGS_ERROR_NONE: Success \n + #SMARTTHINGS_ERROR_PERMISSION_DENIED: Permission denied \n + #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE: Service unavailable \n + * @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 result as #smartthings_error_e enumeration value. + * @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_error_e result, 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/inc/smartthings_payload.h b/inc/smartthings_payload.h new file mode 100644 index 0000000..b4612c1 --- /dev/null +++ b/inc/smartthings_payload.h @@ -0,0 +1,660 @@ + /* + * 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/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_PAYLOAD_H__ +#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_PAYLOAD_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file smartthings_payload.h + */ + +/** + * @addtogroup CAPI_SMARTTHINGS_THING_PAYLOAD_MODULE + * @{ + */ + +/** + * @brief The SmartThings payload handle. + * @since_ses 1 + */ +typedef struct smartthings_payload_s *smartthings_payload_h; + +/** + * @brief Creates a SmartThings payload handle. + * @since_ses 1 + * + * @remarks The @a payload must be released using smartthings_payload_destroy(). + * @remarks If the @a payload is set to parent payload as an object or object array + * using smartthings_payload_set_object() or smartthings_payload_set_object_array(), + * the @a payload must not be released. + + * @param[out] payload The SmartThings payload handle to be newly created on success + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * + * @see smartthings_payload_destroy() + */ +int smartthings_payload_create(smartthings_payload_h *payload); + +/** + * @brief Destroys a SmartThings payload handle and releases all its resources. + * @since_ses 1 + * + * @remarks If the @a payload has child payload, its child payload will be released as well. + * + * @param[in] payload The SmartThings payload handle + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see smartthings_payload_create() + */ +int smartthings_payload_destroy(smartthings_payload_h payload); + +/** + * @brief Sets an integer value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing value for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] value The value to set + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_int(smartthings_payload_h payload, const char *attr_name, int value); + +/** + * @brief Sets a boolean value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing value for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] value The value to set + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_bool(smartthings_payload_h payload, const char *attr_name, bool value); + +/** + * @brief Sets a double value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing value for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] value The value to set + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_double(smartthings_payload_h payload, const char *attr_name, double value); + +/** + * @brief Sets a string value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing value for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] value The value to set + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_string(smartthings_payload_h payload, const char *attr_name, const char *value); + +/** + * @brief Sets a byte string value and length for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing value for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] value The value to set + * @param[in] length The size of value + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + */ +int smartthings_payload_set_byte_string(smartthings_payload_h payload, const char *attr_name, const char *value, unsigned int length); + +/** + * @brief Sets an object value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a value is SmartThings payload handle. + * @remarks The function replaces any existing value for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] value The value to set + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_object(smartthings_payload_h payload, const char *attr_name, smartthings_payload_h value); + +/** + * @brief Sets an integer array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing array for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] array The array associated with the given attribute name + * @param[in] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_int_array(smartthings_payload_h payload, const char *attr_name, const int *array, unsigned int length); + +/** + * @brief Sets a boolean array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing array for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] array The array associated with the given attribute name + * @param[in] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_bool_array(smartthings_payload_h payload, const char *attr_name, const bool *array, unsigned int length); + +/** + * @brief Sets a double array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing array for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] array The array associated with the given attribute name + * @param[in] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_double_array(smartthings_payload_h payload, const char *attr_name, const double *array, unsigned int length); + +/** + * @brief Sets a string array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing array for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] array The array associated with the given attribute name + * @param[in] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_set_string_array(smartthings_payload_h payload, const char *attr_name, const char **array, unsigned int length); + +/** + * @brief Sets an object array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The function replaces any existing array for the given @a attr_name. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[in] array The array associated with the given attribute name + * @param[in] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + */ +int smartthings_payload_set_object_array(smartthings_payload_h payload, const char *attr_name, smartthings_payload_h *array, unsigned int length); + +/** + * @brief Adds a payload for child resource of collection resource. + * @since_ses 1 + * + * @remarks The @a resource_uri is key value, one of several child resources of the collection resource. + * @remarks The @a value is SmartThings payload handle. + * @remarks The function replaces any existing payload for the given @a resource_uri. + * + * @param[in] payload The SmartThings payload handle + * @param[in] resource_uri The resource URI of child resource + * @param[in] value The payload associated with the given resource URI + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + */ +int smartthings_payload_add_collection_object(smartthings_payload_h payload, const char *resource_uri, smartthings_payload_h value); + +/** + * @brief Gets an integer value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] value The value associated with the given attribute name + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + */ +int smartthings_payload_get_int(smartthings_payload_h payload, const char *attr_name, int *value); + +/** + * @brief Gets a boolean value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] value The value associated with the given attribute name + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + */ +int smartthings_payload_get_bool(smartthings_payload_h payload, const char *attr_name, bool *value); + +/** + * @brief Gets a double value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] value The value associated with the given attribute name + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + */ +int smartthings_payload_get_double(smartthings_payload_h payload, const char *attr_name, double *value); + +/** + * @brief Gets a string value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a value should be released using free(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] value The value associated with the given attribute name + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + */ +int smartthings_payload_get_string(smartthings_payload_h payload, const char *attr_name, char **value); + +/** + * @brief Gets a byte string value and length for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a value should be released using free(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] value The value associated with the given attribute name + * @param[out] length The size of value + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + */ +int smartthings_payload_get_byte_string(smartthings_payload_h payload, const char *attr_name, char **value, unsigned int *length); + +/** + * @brief Gets an object value for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a value is SmartThings payload handle. + * @remarks The @a value must be released using smartthings_payload_release_object(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] value The value associated with the given attribute name + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + */ +int smartthings_payload_get_object(smartthings_payload_h payload, const char *attr_name, smartthings_payload_h *value); + +/** + * @brief Gets an integer array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a array must be released using smartthings_payload_release_int_array(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] array The array associated with the given attribute name + * @param[out] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + * + * @see smartthings_payload_release_int_array() + */ +int smartthings_payload_get_int_array(smartthings_payload_h payload, const char *attr_name, int **array, unsigned int *length); + +/** + * @brief Gets a boolean array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a array must be released using smartthings_payload_release_bool_array(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] array The array associated with the given attribute name + * @param[out] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + * + * @see smartthings_payload_release_bool_array() + */ +int smartthings_payload_get_bool_array(smartthings_payload_h payload, const char *attr_name, bool **array, unsigned int *length); + +/** + * @brief Gets a double array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a array must be released using smartthings_payload_release_double_array(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] array The array associated with the given attribute name + * @param[out] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + * + * @see smartthings_payload_release_double_array() + */ +int smartthings_payload_get_double_array(smartthings_payload_h payload, const char *attr_name, double **array, unsigned int *length); + +/** + * @brief Gets a string array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a array must be released using smartthings_payload_release_string_array(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] array The array associated with the given attribute name + * @param[out] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + * + * @see smartthings_payload_release_string_array() + */ +int smartthings_payload_get_string_array(smartthings_payload_h payload, const char *attr_name, char ***array, unsigned int *length); + +/** + * @brief Gets an object array for the attribute name. + * @since_ses 1 + * + * @remarks The @a attr_name is key value, one of several properties of the resource type. + * @remarks The @a array is a list of SmartThings payload handle. + * @remarks The @a array must be released using smartthings_payload_release_object_array(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] attr_name The attribute name + * @param[out] array The array associated with the given attribute name + * @param[out] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + * + * @see smartthings_payload_release_object_array() + */ +int smartthings_payload_get_object_array(smartthings_payload_h payload, const char *attr_name, smartthings_payload_h **array, unsigned int *length); + +/** + * @brief Gets a payload for child resource of collection resource. + * @since_ses 1 + * + * @remarks The @a resource_uri is key value, one of several child resources of the collection resource. + * @remarks The @a value is SmartThings payload handle. + * @remarks The @a value must be released using smartthings_payload_release_object(). + * + * @param[in] payload The SmartThings payload handle + * @param[in] resource_uri The resource URI of child resource + * @param[out] value The payload associated with the given resource URI + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data + */ +int smartthings_payload_get_collection_object(smartthings_payload_h payload, const char *resource_uri, smartthings_payload_h *value); + +/** + * @brief Releases an integer array of the SmartThings payload. + * @since_ses 1 + * + * @param[in] array The array to release + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see smartthings_payload_get_int_array() + */ +int smartthings_payload_release_int_array(int *array); + +/** + * @brief Releases a boolean array of the SmartThings payload. + * @since_ses 1 + * + * @param[in] array The array to release + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see smartthings_payload_get_bool_array() + */ +int smartthings_payload_release_bool_array(bool *array); + +/** + * @brief Releases a double array of the SmartThings payload. + * @since_ses 1 + * + * @param[in] array The array to release + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see smartthings_payload_get_double_array() + */ +int smartthings_payload_release_double_array(double *array); + +/** + * @brief Releases a string array of the SmartThings payload. + * @since_ses 1 + * + * @param[in] array The array to release + * @param[in] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see smartthings_payload_get_string_array() + */ +int smartthings_payload_release_string_array(char **array, unsigned int length); + +/** + * @brief Releases an object array of the SmartThings payload. + * @since_ses 1 + * + * @param[in] array The array to release + * @param[in] length The length of @a array + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see smartthings_payload_get_object_array() + */ +int smartthings_payload_release_object_array(smartthings_payload_h *array, unsigned int length); + +/** + * @brief Releases a SmartThings payload. + * @since_ses 1 + * + * @remarks The function is different with smartthings_payload_destroy(). + * @remarks The function releases only payload value that is obtained by smartthings_payload_get_object(). + * + * @param[in] payload The payload to release + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see smartthings_payload_get_object() + */ +int smartthings_payload_release_object(smartthings_payload_h payload); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_PAYLOAD_H__ */ diff --git a/inc/smartthings_resource.h b/inc/smartthings_resource.h new file mode 100644 index 0000000..962339b --- /dev/null +++ b/inc/smartthings_resource.h @@ -0,0 +1,367 @@ + /* + * 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/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_RESOURCE_H__ +#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_RESOURCE_H__ + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file smartthings_resource.h + */ + +/** + * @addtogroup CAPI_SMARTTHINGS_THING_RESOURCE_MODULE + * @{ + */ + +/** + * @brief Enumeration for the SmartThings resource error. + * @since_ses 1 + */ +typedef enum { + SMARTTHINGS_RESOURCE_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ + SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ + SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */ + SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */ + SMARTTHINGS_RESOURCE_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA, /**< No data */ + SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */ + SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED = TIZEN_ERROR_UNKNOWN - 1, /**< Operation failed */ + SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE = TIZEN_ERROR_UNKNOWN -2 /**< Service unavailable */ +} smartthings_resource_error_e; + +/** + * @brief Enumeration for the request type of resource and collection resource. + * @since_ses 1 + */ +typedef enum { + SMARTTHINGS_RESOURCE_REQUEST_GET = 0, /**< Get request type */ + SMARTTHINGS_RESOURCE_REQUEST_SET = 1, /**< Set request type */ + SMARTTHINGS_RESOURCE_REQUEST_COLLECTION_GET = 2, /**< Get request type for collection */ + SMARTTHINGS_RESOURCE_REQUEST_COLLECTION_SET = 3 /**< Set request type for collection */ +} smartthings_resource_req_type_e; + +/** + * @brief Enumeration for RPC connection status. + * @since_ses 1 + */ +typedef enum { + SMARTTHINGS_RESOURCE_CONNECTION_STATUS_CONNECTED = 0, /**< Connection is connected */ + SMARTTHINGS_RESOURCE_CONNECTION_STATUS_DISCONNECTED, /**< Connection is disconnected */ + SMARTTHINGS_RESOURCE_CONNECTION_STATUS_REJECTED, /**< Connection is rejected */ +} smartthings_resource_connection_status_e; + +/** + * @brief The SmartThings resource handle. + * @since_ses 1 + */ +typedef struct smartthings_resource_s *smartthings_resource_h; + +/** + * @brief Callback for status of connection to SmartThings Thing agent. + * @details The following error codes can be received: \n + #SMARTTHINGS_RESOURCE_ERROR_NONE: Success \n + #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED: Permission denied \n + #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE: Service unavailable \n + * @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 result as #smartthings_resource_error_e enumeration value. + * @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_resource_initialize() + */ +typedef void (*smartthings_resource_connection_status_cb)(smartthings_resource_error_e result, smartthings_resource_h handle, smartthings_resource_connection_status_e status, void *user_data); + + +/** + * @brief Callback for handling request(GET/SET) messages. + * @since_ses 1 + * + * @remarks The @a payload is NULL when @a req_type is #SMARTTHINGS_RESOURCE_REQUEST_GET. + * @remarks The @a payload can be used only in the callback. To use outside, make a copy. + * @remarks The @a st_h should not be released. + * @remarks The @a st_h is the same object for which the callback was set/added. + * @remarks The @a st_h will be released when smartthings_resource_deinitialize() is called. + * @remarks The @a payload should not be released. + * @remarks The @a uri can be used only in the callback. To use outside, make a copy. + * + * @param[in] st_h The SmartThings resource handle + * @param[in] req_id The request ID of request message + * @param[in] uri The resource URI + * @param[in] req_type The request type for request message + * @param[in] payload The payload for SET request message + * @param[in] user_data The user data passed from the callback registration function + * + * @see smartthings_resource_set_request_cb() + * @see smartthings_resource_unset_request_cb() + */ +typedef void (*smartthings_resource_request_cb)(smartthings_resource_h st_h, int req_id, const char *uri, + smartthings_resource_req_type_e req_type, + smartthings_payload_h payload, void *user_data); + +/** + * @brief Callback for status of resource registration to cloud. + * @since_ses 1 + * + * @remarks This callback will be called when status of resource registration is changed. + * @remarks The @a st_h should not be released. + * @remarks The @a st_h is the same object for which the callback was set/added. + * @remarks The @a st_h will be released when smartthings_resource_deinitialize() is called. + * @remarks The @a is_registered will be true when resources are registered to cloud. + * + * @param[in] st_h The SmartThings resource handle + * @param[in] is_registered The status of resource registration to cloud + * @param[in] user_data The user data passed from the callback registration function + * + * @see smartthings_resource_set_cloud_registration_status_cb() + * @see smartthings_resource_unset_cloud_registration_status_cb() + */ +typedef void (*smartthings_resource_cloud_registration_status_cb)(smartthings_resource_h st_h, bool is_registered, void *user_data); + + +/** + * @brief Initializes a resource handle and connects to agent. + * @since_ses 1 + * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n + * %http://tizen.org/privilege/appmanager.launch \n + * %http://tizen.org/privilege/datasharing + * + * @remarks The @a st_h must be released using smartthings_resource_deinitialize(). + * @remarks Ths function returns #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED\n + * if the application has no app-defined privilege for 'http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource'. + * + * @param[out] st_h The SmartThings resource handle to be newly created on success + * @param[in] connection_status_cb The 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_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory + * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + * @retval #SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED Not supported + * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable + * + * @see smartthings_resource_deinitialize() + */ +int smartthings_resource_initialize(smartthings_resource_h *st_h, + smartthings_resource_connection_status_cb connection_status_cb, + void *user_data); + +/** + * @brief Deinitializes a resource handle and disconnects from the agent. + * @since_ses 1 + * + * @param[in] st_h The SmartThings resource handle + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see smartthings_resource_initialize() + */ +int smartthings_resource_deinitialize(smartthings_resource_h st_h); + +/** + * @brief Sets resource request callback. + * @since_ses 1 + * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n + * %http://tizen.org/privilege/appmanager.launch \n + * %http://tizen.org/privilege/datasharing + * + * @param[in] st_h The SmartThings resource handle + * @param[in] req_cb The request 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_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable + * + * @see smartthings_resource_unset_request_cb() + */ +int smartthings_resource_set_request_cb(smartthings_resource_h st_h, + smartthings_resource_request_cb req_cb, + void *user_data); + +/** + * @brief Unsets resource request callback. + * @since_ses 1 + * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n + * %http://tizen.org/privilege/appmanager.launch \n + * %http://tizen.org/privilege/datasharing + * + * @param[in] st_h The SmartThings resource handle + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable + * + * @see smartthings_resource_set_request_cb() + */ +int smartthings_resource_unset_request_cb(smartthings_resource_h st_h); + +/** + * @brief Sends response for resource request message. + * @since_ses 1 + * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n + * %http://tizen.org/privilege/appmanager.launch \n + * %http://tizen.org/privilege/datasharing \n + * %http://tizen.org/privilege/internet + * + * @param[in] st_h The SmartThings resource handle + * @param[in] req_id The request ID of request message + * @param[in] uri The resource URI + * @param[in] payload The payload of response message + * @param[in] result The result of response + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable + */ +int smartthings_resource_send_response(smartthings_resource_h st_h, int req_id, const char *uri, smartthings_payload_h payload, bool result); + +/** + * @brief Notifies resource change. + * @since_ses 1 + * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n + * %http://tizen.org/privilege/appmanager.launch \n + * %http://tizen.org/privilege/datasharing \n + * %http://tizen.org/privilege/internet + * + * @param[in] st_h The SmartThings resource handle + * @param[in] uri The resource URI + * @param[in] payload The payload of response message + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable + */ +int smartthings_resource_notify(smartthings_resource_h st_h, const char *uri, smartthings_payload_h payload); + +/** + * @brief Gets resource URIs. + * @since_ses 1 + * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n + * %http://tizen.org/privilege/appmanager.launch \n + * %http://tizen.org/privilege/datasharing + * + * @remarks The @a uris should be released using free(). + * + * @param[in] st_h The SmartThings resource handle + * @param[out] count The resource count + * @param[out] uris The resource URI list + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable + */ +int smartthings_resource_get_uris(smartthings_resource_h st_h, int *count, char ***uris); + +/** + * @brief Sets cloud registration callback. + * @since_ses 1 + * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n + * %http://tizen.org/privilege/appmanager.launch \n + * %http://tizen.org/privilege/datasharing + * + * @param[in] st_h The SmartThings resource handle + * @param[in] reg_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_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable + * + * @see smartthings_resource_unset_cloud_registration_status_cb() + */ +int smartthings_resource_set_cloud_registration_status_cb(smartthings_resource_h st_h, + smartthings_resource_cloud_registration_status_cb reg_cb, + void *user_data); + +/** + * @brief Unsets cloud registration callback. + * @since_ses 1 + * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n + * %http://tizen.org/privilege/appmanager.launch \n + * %http://tizen.org/privilege/datasharing + * + * @param[in] st_h The SmartThings resource handle + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful + * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied + * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed + * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable + * + * @see smartthings_resource_set_cloud_registration_status_cb() + */ +int smartthings_resource_unset_cloud_registration_status_cb(smartthings_resource_h st_h); + + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_RESOURCE_H__ */ diff --git a/inc/st_things.h b/inc/st_things.h deleted file mode 100644 index 92015d7..0000000 --- a/inc/st_things.h +++ /dev/null @@ -1,299 +0,0 @@ -/* **************************************************************** - * - * Copyright 2017 Samsung Electronics 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 __ST_THINGS_H__ -#define __ST_THINGS_H__ - -#include -#include - -#ifdef __ST_THINGS_RTOS__ -#include -#else -#include "st_things_types.h" -#endif // __ST_THINGS_RTOS__ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @brief Set prefix paths (ReadOnly and ReadWrite) for configuration files for the device. - * This is Optional API, and should be used if relative location is used in - * filePath variable in JSON Configuration file. - * @param[in] ro_path Prefix Path for Read Only directory location. - * @param[in] rw_path Prefix Path for Read Write directory location. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter(both ro_path and rw_path are NULL). - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #ST_THINGS_ERROR_STACK_ALREADY_INITIALIZED Stack already initialized. - * To set Prefix Paths, stack should be deinitilized first by calling st_things_deinitialize(). - * @retval #ST_THINGS_ERROR_STACK_RUNNING Stack is currently running. - * To set Prefix Paths, stack should be stopped first by calling st_things_stop() - * and then deinitialized by calling st_things_deinitialize(). - */ -int st_things_set_configuration_prefix_path(const char* ro_path, const char* rw_path); - -/** - * @brief Initializes things stack and returns whether easy-setup is completed or not. - * Easy-setup enable users to acquire the ownership of things and to connect the things with the cloud. - * After performing easy-setup, users can access things from anywhere through the cloud. - * In things stack, easy-setup is a primary and the first operation to be performed on the thing. - * Application running on the thing can know whether easy-setup is done already or not. - * If easy-setup is done, app can start the things stack by calling st_things_start(). - * If easy-setup is not done, app can either wait for the user interaction before starting the things stack or - * start the things stack directly without waiting for any events(This case is for those things which doesn't - * support input capability and for all other unknown cases). - * To use a new json file after initialization, stack should be deinitialized - * and stopped(if its started already). - * @param[in] json_path Path to Json file which defines a thing. Definition includes the device information, - * resources and their properties, configuration info for connectivity and easy-setup, etc. - * @param[out] easysetup_complete Indicates whether easysetup is completed already or not. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #ST_THINGS_ERROR_STACK_ALREADY_INITIALIZED Stack already initialized. - * To initialize again, stack should be deinitilized first by calling st_things_deinitialize(). - * @retval #ST_THINGS_ERROR_STACK_RUNNING Stack is currently running. - * To initialize again, stack should be stopped first by calling st_things_stop() - * and then deinitialized by calling st_things_deinitialize(). - */ -int st_things_initialize(const char *json_path, bool *easysetup_complete); - -/** - * @brief Deinitializes things stack. - * Stack should have been initialized before calling this API. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not initialized. - * Initialize the stack by calling st_things_initialize(). - * @retval #ST_THINGS_ERROR_STACK_RUNNING Stack is currently running. - * Before deinitialize, stack needs to be stopped by calling st_things_stop(). - */ -int st_things_deinitialize(void); - -/** - * @brief Callback for handling GET request. - * @param[in] req_msg GET request message. - * @param[out] resp_rep Representation that will be set to payload of response. - * @return @c true in case of success, otherwise @c false - */ -typedef bool (*st_things_get_request_cb)(st_things_get_request_message_s *req_msg, st_things_representation_s *resp_rep); - -/** - * @brief Callback for handling SET(POST) request. - * @param[in] req_msg SET request message. - * @param[out] resp_rep Representation that will be set to payload of response. - * @return @c true in case of success, otherwise @c false - */ -typedef bool (*st_things_set_request_cb)(st_things_set_request_message_s *req_msg, st_things_representation_s *resp_rep); - -/** - * @brief Callback registration function for handling request messages. - * @details The callbacks ensure that a request message will be carried with one of the resource uris from json file of st_things_start(). - * @remarks Only one callback function can be set with this API.\n - * If multiple callbacks are set, the last one is registered only.\n - * And the callbacks are called in the internal thread, which is not detached,\n - * so application should return it to get the next callbacks. - * @param[in] get_cb Reference of the callback function to handle GET request. - * @param[in] set_cb Reference of the callback function to handle SET(POST) request. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - */ -int st_things_register_request_cb(st_things_get_request_cb get_cb, st_things_set_request_cb set_cb); - -/** - * @brief Starts things stack. - * Parses the thing definition(whose path is passed to st_things_initialize(), configures the thing, - * creates the resources and prepares it for easy-setup. - * If easy-setup is not done yet, onboarding will be started using either SoftAP or BLE connection. - * Onboarding creates an ad-hoc network between the thing and the client for performing easy-setup. - * If easy-setup is already done, thing will be connected with the cloud. - * Application can know whether easy-setup is done or not through st_things_initialize API. - * Stack should have been initialized before calling this API. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful. - * It is also used for the case that the stack is started already. - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not initialized. - * Initialize the stack by calling st_things_initialize(). - */ -int st_things_start(void); - -/** - * @brief Stops things stack. - * Removes all the data being used internally and releases all the memory allocated for the stack. - * Stack should have been initialized and started before calling this API. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not initialized. - * Initialize the stack by calling st_things_initialize(). - * @retval #ST_THINGS_ERROR_STACK_NOT_STARTED Stack is not started. - * Start the stack by calling st_things_start(). - */ -int st_things_stop(void); - -/** - * @brief Callback for getting user's opinion regarding device reset. - * @return @c true to confirm, otherwise @c to deny - */ -typedef bool (*st_things_reset_confirm_cb)(void); - -/** - * @brief Callback for carrying the result of reset. - * @param[in] is_success Result of Stack-reset. (true : success, false : failure) - */ -typedef void (*st_things_reset_result_cb)(bool is_success); - -/** - * @brief Callback registration function for Reset-Confirmation and Reset-Result functions. - * @remarks Only one callback function can be set with this API.\n - * If multiple callbacks are set, the last one is registered only.\n - And the callbacks are called in the internal thread, which is not detached,\n - * so application should return it to get the next callbacks. - * @param[in] confirm_cb Callback function that will be called to get the user's input when reset is triggered. - * @param[in] result_cb Callback function that will be called after the reset process is done. - * This parameter can be NULL if notification for result of reset is not needed. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - */ -int st_things_register_reset_cb(st_things_reset_confirm_cb confirm_cb, st_things_reset_result_cb result_cb); - -/** - * @brief Reset all the data related to security and cloud being used in the stack. - * Stack should have been initialized and started before calling this API. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not intialized. - * Initialize the stack by calling st_things_initialize(). - * @retval #ST_THINGS_ERROR_STACK_NOT_STARTED Stack is not started. - * Start the stack by calling st_things_start(). - */ -int st_things_reset(void); - -/** - * @brief Callback for carrying the randomly generated PIN info. - * @details Device should show the PIN on display. - * @param[in] pin_data PIN data in string format. - * @param[in] pin_size Length of the PIN String. - */ -typedef void (*st_things_pin_generated_cb)(const char *pin_data, const size_t pin_size); - -/** - * @brief Callback for informing the application to close the PIN display. - */ -typedef void (*st_things_pin_display_close_cb)(void); - -/** - * @brief Callback registration function for getting randomly generated PIN for the PIN-Based Ownership Transfer Request. - * @remarks Only one callback function can be set with this API.\n - * If multiple callbacks are set, the last one is registered only.\n - * And the callbacks are called in the internal thread, which is not detached,\n - * so application should return it to get the next callbacks. - * @param[in] generated_cb Callback function that will be called when device receives a Ownership Transfer request from client. - * @param[in] close_cb Callback function that will be called when Ownership Transfer is done so device can stop showing PIN on display. - * This parameter can be NULL if stop triggering is not needed. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - */ -int st_things_register_pin_handling_cb(st_things_pin_generated_cb generated_cb, st_things_pin_display_close_cb close_cb); - -/** - * @brief Callback for getting user's input regarding mutual verification. - * @return @c true true in cse of confirmed, otherwise @c false - */ -typedef bool (*st_things_user_confirm_cb)(void); - -/** - * @brief Callback registration function for getting user confirmation for MUTUAL VERIFICATION BASED JUST WORK Ownership transfer. - * @remarks Only one callback function can be set with this API.\n - * If multiple callbacks are set, the last one is registered only.\n - * And the callbacks are called in the internal thread, which is not detached,\n - * so application should return it to get the next callbacks. - * @param[in] confirm_cb Callback function that will be called when device receives a confirm request from client. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - */ -int st_things_register_user_confirm_cb(st_things_user_confirm_cb confirm_cb); - -/** - * @brief Callback for getting the current state of ST Things. - * @param[in] things_status ST Things State - */ -typedef void (*st_things_status_change_cb)(st_things_status_e things_status); - -/** - * @brief Callback registration function for getting notified when ST Things state changes. - * @remarks Only one callback function can be set with this API.\n - * If multiple callbacks are set, the last one is registered only.\n - * And the callbacks are called in the internal thread, which is not detached,\n - * so application should return it to get the next callbacks. - * @param[in] status_cb Refernce of the callback function to get ST Things status - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - */ -int st_things_register_things_status_change_cb(st_things_status_change_cb status_cb); - -/** - * @brief Notify the observers of a specific resource. - * Stack should have been initialized and started before calling this API. - * @param[in] resource_uri Resource URI of the resource which will be notified to observers. - * @return @c 0 on success, otherwise a negative error value - * @retval #ST_THINGS_ERROR_NONE Successful - * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not intialized. - * Initialize the stack by calling st_things_initialize(). - * @retval #ST_THINGS_ERROR_STACK_NOT_STARTED Stack is not started. - * Start the stack by calling st_things_start(). - */ -int st_things_notify_observers(const char *resource_uri); - -/** - * @brief Create an instance of representation. - * @remarks To destroy an instance, st_things_destroy_representation_inst() should be used. - * @return a pointer of the created representation, otherwise a null pointer if the memory is insufficient. - */ -st_things_representation_s *st_things_create_representation_inst(void); - -/** - * @brief Destroy an instance of representation. - * @param[in] rep Representation that will be destroyed. - */ -void st_things_destroy_representation_inst(st_things_representation_s *rep); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __ST_THINGS_H__ */ diff --git a/inc/st_things_types.h b/inc/st_things_types.h deleted file mode 100644 index 58f75b2..0000000 --- a/inc/st_things_types.h +++ /dev/null @@ -1,321 +0,0 @@ -/* **************************************************************** - * - * Copyright 2017 Samsung Electronics 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 __ST_THINGS_TYPES_H__ -#define __ST_THINGS_TYPES_H__ - -#include -#include -#include - -/** - * @brief Enumeration for ST Things error code. - */ -typedef enum { - ST_THINGS_ERROR_NONE = 0, /**< Successful */ - ST_THINGS_ERROR_INVALID_PARAMETER = -1, /**< Invalid parameter (If parameter is null or empty)*/ - ST_THINGS_ERROR_OPERATION_FAILED = -2, /**< Operation Failed */ - ST_THINGS_ERROR_STACK_NOT_INITIALIZED = -3, /**< Stack is not yet initialized*/ - ST_THINGS_ERROR_STACK_ALREADY_INITIALIZED = -4, /**< Stack is already initialized*/ - ST_THINGS_ERROR_STACK_NOT_STARTED = -5, /**< Stack is not yet started*/ - ST_THINGS_ERROR_STACK_RUNNING = -6, /**< Stack is currently running*/ -} st_things_error_e; - -/** - * @brief Enumeration for ST Things status. - */ -typedef enum { - ST_THINGS_STATUS_INIT = 0, /**< Initial state of ST Things */ - ST_THINGS_STATUS_ES_STARTED, /**< Easy-setup is started */ - ST_THINGS_STATUS_ES_DONE, /**< Easy-setup is done */ - ST_THINGS_STATUS_ES_FAILED_ON_OWNERSHIP_TRANSFER, /**< Easy-setup failed due to Ownership-Transfer failure */ - ST_THINGS_STATUS_CONNECTING_TO_AP, /**< Connecting to target Wi-Fi access point */ - ST_THINGS_STATUS_CONNECTED_TO_AP, /**< Connected to target Wi-Fi access point */ - ST_THINGS_STATUS_CONNECTING_TO_AP_FAILED, /**< Failed to connect to target Wi-Fi access point */ - ST_THINGS_STATUS_REGISTERING_TO_CLOUD, /**< Trying to Sign-up/Sign-in/Publish-Resource(s) to Cloud */ - ST_THINGS_STATUS_REGISTERED_TO_CLOUD, /**< Publish resource(s) to cloud is complete. Now the Thing is ready to be controlled via Cloud */ - ST_THINGS_STATUS_REGISTERING_FAILED_ON_SIGN_IN, /**< Failed to sign-in to Cloud */ - ST_THINGS_STATUS_REGISTERING_FAILED_ON_PUB_RES /**< Failed to publish resources to Cloud */ -} st_things_status_e; - -/** - * @brief Structure for Representation. - */ -typedef struct _st_things_representation -{ - void* payload; /**< Payload of representation */ - - /** - * @brief API for getting the value of string type property with a key. - * @remarks This API will return deep-copied string value as out parameter, so application must free it after use. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[out] value String value - * @return @c true if value exist, otherwise @c false - */ - bool (*get_str_value) (struct _st_things_representation* rep, const char* key, char** value); - - /** - * @brief API for getting the value of boolean type property with a key. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[out] value Bool value - * @return @c true if value exist, otherwise @c false - */ - bool (*get_bool_value) (struct _st_things_representation* rep, const char* key, bool* value); - - /** - * @brief API for getting the value of integer type property with a key. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[out] value Integer value - * @return @c true if value exist, otherwise @c false - */ - bool (*get_int_value) (struct _st_things_representation* rep, const char* key, int64_t* value); - - /** - * @brief API for getting the value of double type property with a key. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[out] value Double value - * @return @c true if value exist, otherwise @c false - */ - bool (*get_double_value) (struct _st_things_representation* rep, const char* key, double* value); - - /** - * @brief API for getting the value of byte array type property with a key. - * @remarks This API will return deep-copied byte value as out parameter, so application must free it after use. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[out] value Byte value - * @param[out] size Size of Byte value - * @return @c true if value exist, otherwise @c false - */ - bool (*get_byte_value) (struct _st_things_representation* rep, const char* key, uint8_t** value, size_t* size); - - /** - * @brief API for getting the value of object type property with a key. - * @remarks This API will return deep-copied object value as out parameter, so application must free it after use.\n - * To free an object, st_things_destroy_representation_inst() in st_things.h should be used. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[out] value Object value - * @return @c true if value exist, otherwise @c false - */ - bool (*get_object_value) (struct _st_things_representation* rep, const char* key, struct _st_things_representation** value); - - /** - * @brief API for setting the value of string type property with a key. - * @remarks This API will deep-copy the string value inside, so application still has an ownership of memory for the string value. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the value. - * @param[in] value String value. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_str_value) (struct _st_things_representation* rep, const char* key, const char* value); - - /** - * @brief API for setting the value of boolean type property with a key. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the value. - * @param[in] value Bool value. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_bool_value) (struct _st_things_representation* rep, const char* key, bool value); - - /** - * @brief API for setting the value of integer type property with a key. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the value. - * @param[in] value Integer value. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_int_value) (struct _st_things_representation* rep, const char* key, int64_t value); - - /** - * @brief API for setting the value of double type property with a key. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the value. - * @param[in] value Double value. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_double_value) (struct _st_things_representation* rep, const char* key, double value); - - /** - * @brief API for setting the value of byte array type property with a key. - * @remarks This API will deep-copy the byte value inside, so application still has an ownership of memory for the byte value. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the value. - * @param[in] value Byte value. - * @param[in] size Size of Byte value. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_byte_value) (struct _st_things_representation* rep, const char* key, const uint8_t* value, size_t size); - - /** - * @brief API for setting the value of object type property with a key. - * @remarks This API will deep-copy the object value inside, so application still has an ownership of memory for the object value. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the value. - * @param[in] value Object value. - * @return @c true if value exist, otherwise @c false - */ - bool (*set_object_value) (struct _st_things_representation* rep, const char* key, const struct _st_things_representation* value); - - /** - * @brief API for getting the value of string array type property with a key. - * @remarks This API will return deep-copied array value as out parameter, so application must free it after use. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the array type of value. - * @param[out] array Reference of the string array to where the value will be copied. - * @param[out] length Total number of elements in the array. - * @return @c true if value exist, otherwise @c false - */ - bool (*get_str_array_value) (struct _st_things_representation* rep, const char* key, char*** array, size_t* length); - - /** - * @brief API for getting the value of integer array type property with a key. - * @remarks This API will return deep-copied array value as out parameter, so application must free it after use. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the array type of value. - * @param[out] array Reference of the integer array where the value will be copied. - * @param[out] length Total number of elements in the array. - * @return @c true if value exist, otherwise @c false - */ - bool (*get_int_array_value) (struct _st_things_representation* rep, const char* key, int64_t** array, size_t* length); - - /** - * @brief API for getting the value of double array type property with a key. - * @remarks This API will return deep-copied array value as out parameter, so application must free it after use. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which will represent the array type of value. - * @param[out] array Reference of the double array where the value will be copied. - * @param[out] length Total number of elements in the array. - * @return @c true if value exist, otherwise @c false - */ - bool (*get_double_array_value) (struct _st_things_representation* rep, const char* key, double** array, size_t* length); - - /** - * @brief API for getting the value of object array type property with a key. - * @remarks This API will return deep-copied array value as out parameter, so application must free it after use.\n - * To free each object in array, st_things_destroy_representation_inst() in st_things.h should be used. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the array type of value. - * @param[out] array Reference of the object array where the value will be copied. - * @param[out] length Total number of elements in the array. - * @return @c true if value exist, otherwise @c false - */ - bool (*get_object_array_value) (struct _st_things_representation* rep, const char* key, struct _st_things_representation*** array, size_t* length); - - /** - * @brief API for setting the value of string array type property with a key. - * @remarks This API will deep-copy the array value inside, so application still has an ownership of memory for the array value. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[in] array String array type value. - * @param[in] length Total number of elements in the array. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_str_array_value) (struct _st_things_representation* rep, const char* key, const char** array, size_t length); - - /** - * @brief API for setting the value of integer array type property with a key. - * @remarks This API will deep-copy the array value inside, so application still has an ownership of memory for the array value. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[in] array Integer array type value. - * @param[in] length Total number of elements in the array. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_int_array_value) (struct _st_things_representation* rep, const char* key, const int64_t* array, size_t length); - - /** - * @brief API for setting the value of double array type property with a key. - * @remarks This API will deep-copy the array value inside, so application still has an ownership of memory for the array value. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[in] array Double array type value. - * @param[in] length Total number of elements in the array. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_double_array_value) (struct _st_things_representation* rep, const char* key, const double* array, size_t length); - - /** - * @brief API for setting the value of object array type property with a key. - * @remarks This API will deep-copy the array value inside, so application still has an ownership of memory for the array value. - * @param[in] rep Instance of Representation. - * @param[in] key Property Name which represents the value. - * @param[in] array Object array type value. - * @param[in] length Total number of elements in the array. - * @return @c true if setting value is successful, otherwise @c false - */ - bool (*set_object_array_value) (struct _st_things_representation* rep, const char* key, const struct _st_things_representation** array, size_t length); - -} st_things_representation_s; - -/** - * @brief Structure for representing the Get Request Message. - */ -typedef struct _st_things_get_request_message -{ - char* resource_uri; /**< Resource URI */ - char* query; /**< One or more query parameters of the request message. Ex: key1=value1;key2=value2;... */ - char* property_key; /**< One or more property key that application needs to set a value for response. Ex: key1;key2;... */ - - /** - * @brief API for getting the value of a specific query from the query parameters of the request. - * @param[in] req_msg Instance of get request message. - * @param[in] key Name of the query.(ex: key1, key2, etc) - * @param[out] value Value of the query.(value1, value2, etc) - * @return @c true if query exist, otherwise @c false - */ - bool (*get_query_value) (struct _st_things_get_request_message* req_msg, const char* key, char** value); - - /** - * @brief API for checking whether the request has a specific property key or not. - * @param[in] req_msg Instance of get request message. - * @param[in] key Name of the property. - * @return @c true if the property key exists, otherwise @c false - */ - bool (*has_property_key) (struct _st_things_get_request_message* req_msg, const char* key); - -} st_things_get_request_message_s; - -/** - * @brief Structure for representing the Set Request Message. - */ -typedef struct _st_things_set_request_message -{ - char* resource_uri; /**< Resource URI */ - char* query; /**< One or more query parameters of the request message. Ex: key1=value1?key2=value2?... */ - struct _st_things_representation* rep; /**< Representation of the set request message */ - - /** - * @brief API for getting the value of a specific query from the query parameters of the request. - * @param[in] req_msg Instance of request message. - * @param[in] key Name of the query.(ex: key1, key2, etc) - * @param[out] value Value of the query.(value1, value2, etc) - * @return @c true if query exist, otherwise @c false - */ - bool (*get_query_value) (struct _st_things_set_request_message* req_msg, const char* key, char** value); - -} st_things_set_request_message_s; - -#endif /* __ST_THINGS_TYPES_H__ */ diff --git a/lib/liboicdastack.so b/lib/liboicdastack.so deleted file mode 100644 index 4a5cc91959210624be86d284642481a30d40d577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499340 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 DHn0_%qkg7D zviD)+Qs2a$w11<8@-=2_CT`rL>o*0|C*0wkNqpHJNQ@H?=hBcM|fvx zi>GyVB}$uZ;5(RG8XXt%r}@)t^GCABvA^xriTh2#efbWhc0cUTn%M~NkNfLpsw5I{n{D zqVqE2+dECBPMTfu@ywYGT-cf)&%4ioZy%zLe2y_|FQjL`l{w#{_d#_&2YTe2h;M&p z^mHfa=`ecs2K2mHxQuVFL3TpEsed8gZepBktxcZ`?L31#VmqS!r!Bq*8q%Cf(7ft4 z2by1GV|*-Ovkse$oiESx?j~rx78+*!d7F>dC1@D4`ymbct!#sD-Uc+>>~dyhK7NJv zLa&7eoy%)0fTKBqqcOnYdi1vqm)l*(Rb~CHEYJ7%k>Jw)lJxh+9>J%uQB&*@0JYe| zdTdoGWwKc*pq}z-paR&7{X2loY9u|)_24J5i@*?&lTD>;igY!Q22y}*ZmH}X>EU~^ zsX!MniQU_ejZ@jlzvX-mFbkw9Ps-AZS)e!V@?eR}Uycx7*O-|OnE zj&P{H{7kR!bgI7YhqNospl|Ml{sG?#iu{8!;T5f#pVEa>AC2Q4PJ`OfTxBnPyJU-g z$M4XhL&EvemhkIZEH6Ft4wKu#SAWiuM^Im0@Knbw=aq6L8 zTF?_JDI?^#NE5G-1l9l_7&U2BKSDd4)e6fJ6 zR59kIz}m;KBj}4>59Ea)6 zs~NX&eyjT}FLY1)I5n(C)lQaY^=@;N zrp(U>hkfvU6z@ZOpld#9^UZCG_o2{P{sr0KmHe6gu6vmOKr^t4ZkS{2dq|Ie6h8qN z0J2tokhI5Bt1Nb1|BU#Xy&dppp0>l72mammD)U*xzIfco`{I7B#^Y1gmlYc$@5?cp ztGV*LP5f}|PaJ&(V<6tmMs
wDPBPg%aw@)MTNSpIEEx+6H8Ot|YzQXb?mM^vZ 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

OG!) zuyl0q$o`5yV^#$L|)2E|`p$p;<1)PvA(|wN0CQ#;{u}?SmX8yY&`J|E| z2mK|!YtMN(c<^ErF(7RL|du3vTlJymeHkC{bV z-N)fC)gt5Q5ALxwR+Q(dqPGo4riSoL)o{Zv?&WoErswS=wB5qov55t9Hy>Vw{o)-Y z?zGa>2f2@17v|aj2+vf7@h2E(xRW*SPOqST4E;O%>7TUyTYdd|z$p;O7W7QoOzO{~ ze?ve0^&Gy&pWy4CrT<{Y*Kub&TCg@b15K<|+FUhKGSfI;ZD@SH^*dJ*$cH4kWUk{evqf zT7$|9*CD{3%eY2Qkk^X7dNxA% zudw*@3_y1hoF@~SZ{gco%p*?NL2&WsIV13w+^+?9%|keP_;0R&e~vQwUOS07@6I(F zeB6G*;RVx&Ga5S=J zAlZ2{{8(IJKHsFQoFA7};K%$5{8)U9{21-yM+}_n3A=9QjV5@KA*^FA{mnynh~kZ3 zt}d-Gk55o0ADdtGE}qMHnv>}0L|oo9RG8DJD$Hr!G0y3A#?u;+jBN)0l;*&kw!oj) z2yZYieP==Mnogbu{;6~>#=hnr)}iEUJkRcFZxiJGiRdZFag4MB?~y^tu%0Q%us@dH z?jRG@^n2dSduHKWXrkxpMwevPs++ah}^{VChBjWzo}$VdkKL>IsQ+=JfPr1fj{=LXt%>vk?< zdHS;p7(WKa%6?$n;)5YuD&cJvY7_v2$@R;m_F~JApB4EhQ$gkMb4&9*H z4nmr+mi$cO6$JerW&`myxm9$79)3IXOYo~?XLyFCUpw|?Vte`E|# z2ZX?R54gW^6W=6+mir0Kiz(CEJD<3coq3PxQ<{tH%>Oc%ayv8ptfl#* z*_o}t(mZ5m#DfWhDD&70Pew71odiAC0#AnZVE4i2u;q9(?O~lZF!zB& zoI*U>*I&2}KE~+l`3sUy`3vEsYh&d%NPo%Zegc@HfzB2VYQFGu6Y;ntyo44JXpw*} zm2~=B1I{t)^m$kG)#)EGb2(h6KPXz2>GaoCmT-0YT0_f{PJa(L97(57Vx0bT`e{FQ zj;Pbe(bv=I!+zes{+CXF2W>r_KJ*A}rPJR=Tj{qI(04mwQyXhvw1>{pPa7qF1f4IK z_js|H0c2uq6L;=W&eLM6v!k)8x~mLgD@S2RjZH--%U%Yf?(<;|{1%_97*A(+BhVAP zk6+v_8m8iT-enl+ePc}aVYiVJx9`df^R@kD=g@zJ9{L5d?AdwdO!`LWYC3N_K0_>- zWPdk`z3dv`blCnLE}o4Qtlt60v}b?ZYR6n^+v~YDV_O+dZC}us_8D27k!b9y2)+dE zYOoXI7*Fr}Dz9(Ad3cO}m1ltPw;GV+R%oivRuT-Vdxh>FF{>tXN zSu+WI1L(UE-$i#iqHh}d%6EAhoC0arcc@OLbEEVQXq0i|tBUeJgtzEFe)B`cFN?

y7(7uSAW=N~-pLwPuJzieP` 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 #include #include -#include +#include -#include "st_things.h" #include "log.h" #include "sensor-data.h" #include "co2-sensor.h" -#define JSON_NAME "device_def.json" -#define SENSOR_URI_CO2 "/capability/airQualitySensor/main/0" -#define SENSOR_KEY_CO2 "airQuality" -#define SENSOR_KEY_RANGE "range" - #define SENSOR_CH_CO2 (0) -#define SENSOR_GATHER_INTERVAL (0.05f) +#define SENSOR_GATHER_INTERVAL (50) //50ms #define SENSOR_GATHER_COUNT (60) //#define USE_ST_SDK +#ifdef USE_ST_SDK + +#include "smartthings.h" +#include "smartthings_resource.h" +#include "smartthings_payload.h" + +/* You have to FIX IT !!! */ +#define CERT_FILE "certificate.pem" // cert file name in 'res' directory +#define PRIV_FILE "privatekey.der" // private key file name in 'res' directory + + +#define SENSOR_URI_CO2 "/capability/airQualitySensor/main/0" +#define SENSOR_KEY_CO2 "airQuality" + +#endif /* USE_ST_SDK */ + typedef struct app_data_s { - Ecore_Timer *getter_co2; + guint getter_co2; sensor_data *co2_data; +#ifdef USE_ST_SDK + smartthings_h st_master_h; + smartthings_resource_h st_res_h; + smartthings_resource_connection_status_e st_res_conn_status; +#endif /* USE_ST_SDK */ } app_data; static app_data *g_ad = NULL; -static Eina_Bool __get_co2(void *data) +#ifdef USE_ST_SDK + +/* smartthings resource functions */ +static const char * +__resource_error_to_str(smartthings_resource_error_e error) { - int ret = 0; + const char *err_str = NULL; + + switch (error) { + case SMARTTHINGS_RESOURCE_ERROR_NONE: + err_str = "SMARTTHINGS_RESOURCE_ERROR_NONE"; + break; + case SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER: + err_str = "SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER"; + break; + case SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY: + err_str = "SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY"; + break; + case SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED: + err_str = "SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED"; + break; + case SMARTTHINGS_RESOURCE_ERROR_NO_DATA: + err_str = "SMARTTHINGS_RESOURCE_ERROR_NO_DATA"; + break; + case SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED: + err_str = "SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED"; + break; + case SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED: + err_str = "SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED"; + break; + case SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE: + err_str = "SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE"; + break; + default: + err_str = "Unknown error"; + break; + } + + return err_str; +} + +static bool +handle_get_co2(smartthings_payload_h resp_payload, void *user_data) +{ + app_data *ad = user_data; unsigned int value = 0; - static unsigned int sum = 0; - static unsigned int count = 0; - app_data *ad = data; + retv_if(!ad, false); - if (!ad) { - _E("failed to get app_data"); - service_app_exit(); - return ECORE_CALLBACK_CANCEL; + sensor_data_get_uint(ad->co2_data, &value); + smartthings_payload_set_int(resp_payload, SENSOR_KEY_CO2, (int)value); + + return true; +} + +static void +_request_cb(smartthings_resource_h handle, int req_id, + const char *uri, smartthings_resource_req_type_e req_type, + smartthings_payload_h payload, void *user_data) +{ + smartthings_payload_h resp_payload = NULL; + bool result = false; + int error = SMARTTHINGS_RESOURCE_ERROR_NONE; + + _D("request on %s, type[%d], id[%d]", uri, req_type, req_id); + + smartthings_payload_create(&resp_payload); + if (!resp_payload) { + _E("Response payload is NULL"); + return; } - if (!ad->co2_data) { - _E("failed to get co2_data"); - service_app_exit(); - ad->getter_co2 = NULL; - return ECORE_CALLBACK_CANCEL; + if (req_type == SMARTTHINGS_RESOURCE_REQUEST_GET) { + if (0 == g_strcmp0(uri, SENSOR_URI_CO2)) + result = handle_get_co2(resp_payload, user_data); + else + _E("No matching Resource uri to get"); + } else if (req_type == SMARTTHINGS_RESOURCE_REQUEST_SET) { + _E("No matching Resource uri to set"); + } else { + _E("Invalid request type - %d", req_type); + smartthings_payload_destroy(resp_payload); + return; } - ret = co2_sensor_read(SENSOR_CH_CO2, &value); - retv_if(ret != 0, ECORE_CALLBACK_RENEW); + error = smartthings_resource_send_response(handle, req_id, uri, resp_payload, result); + if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) { + smartthings_payload_destroy(resp_payload); + _E("smartthings_resource_send_response() failed, [%s]", + __resource_error_to_str(error)); + return; + } - count++; - sum += value; + if (req_type == SMARTTHINGS_RESOURCE_REQUEST_SET) { + error = smartthings_resource_notify(handle, uri, resp_payload); + if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) + _E("smartthings_resource_notify() failed, [%s]", + __resource_error_to_str(error)); + } - if (count == SENSOR_GATHER_COUNT) { - unsigned int avg = 0; - avg = sum/SENSOR_GATHER_COUNT; + if (smartthings_payload_destroy(resp_payload)) + _E("smartthings_payload_destroy failed"); - _D("co2 avg - [%u], [%u ppm]", avg, co2_sensor_value_to_ppm(avg)); + return; +} - sensor_data_set_uint(ad->co2_data, avg); +static void +_resource_connection_status_cb(smartthings_resource_error_e error, + smartthings_resource_h handle, + smartthings_resource_connection_status_e status, void *user_data) +{ + app_data *ad = user_data; -#ifdef USE_ST_SDK - st_things_notify_observers(SENSOR_URI_CO2); -#endif - count = 0; - sum = 0; + _D("result [%s], status=[%d]", __resource_error_to_str(error), status); + + ret_if(!ad); + + ad->st_res_conn_status = status; + + if (status == SMARTTHINGS_RESOURCE_CONNECTION_STATUS_CONNECTED) { + if (smartthings_resource_set_request_cb(handle, _request_cb, ad)) { + _E("smartthings_resource_set_request_cb() is failed"); + return; + } + } else { + _E("connection failed"); + } + return; +} + +static int +st_thing_notify_resource(app_data *ad, const char *uri, const char *key, sensor_data *data) +{ + smartthings_resource_h handle = NULL; + smartthings_payload_h payload = NULL; + int error = SMARTTHINGS_RESOURCE_ERROR_NONE; + sensor_data_type_e data_type = SENSOR_DATA_TYPE_NONE; + + retv_if(!ad, -1); + retv_if(!ad->st_res_h, -1); + retv_if(ad->st_res_conn_status != SMARTTHINGS_RESOURCE_CONNECTION_STATUS_CONNECTED, -1); + retv_if(!uri, -1); + retv_if(!key, -1); + retv_if(!data, -1); + + handle = ad->st_res_h; + + data_type = sensor_data_get_type(data); + retv_if(data_type == SENSOR_DATA_TYPE_NONE, -1); + + smartthings_payload_create(&payload); + if (!payload) { + _E("failed to create payload is NULL"); + return -1; + } + + switch (data_type) { + case SENSOR_DATA_TYPE_INT: + { + int value = 0; + sensor_data_get_int(data, &value); + smartthings_payload_set_int(payload, key, value); + } + break; + case SENSOR_DATA_TYPE_UINT: + { + unsigned int value = 0; + sensor_data_get_uint(data, &value); + smartthings_payload_set_int(payload, key, (int)value); + } + break; + case SENSOR_DATA_TYPE_BOOL: + { + bool value = 0; + sensor_data_get_bool(data, &value); + smartthings_payload_set_bool(payload, key, value); + } + break; + case SENSOR_DATA_TYPE_DOUBLE: + { + double value = 0; + sensor_data_get_double(data, &value); + smartthings_payload_set_double(payload, key, value); + } + break; + case SENSOR_DATA_TYPE_STR: + { + const char *value = NULL; + sensor_data_get_string(data, &value); + smartthings_payload_set_string(payload, key, value); + } + break; + case SENSOR_DATA_TYPE_NONE: + default: + _E("unsupport data type"); + break; } - return ECORE_CALLBACK_RENEW; + error = smartthings_resource_notify(handle, uri, payload); + if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) + _E("smartthings_resource_notify() failed, [%s]", + __resource_error_to_str(error)); + + smartthings_payload_destroy(payload); + + return 0; } -static void gathering_stop(void *data) +static int st_thing_resource_init(app_data *ad) { - app_data *ad = data; - ret_if(!ad); + smartthings_resource_h st_res_h = NULL; + int error = 0; - if (ad->getter_co2) { - ecore_timer_del(ad->getter_co2); - ad->getter_co2 = NULL; + retv_if(!ad, -1); + if (ad->st_res_h) { + _I("Already initialized!"); + return 0; } + + error = smartthings_resource_initialize(&st_res_h, + _resource_connection_status_cb, ad); + if (error) { + _E("smartthings_resource_initialize() is failed, [%s]", + __resource_error_to_str(error)); + return -1; + } + + ad->st_res_h = st_res_h; + ad->st_res_conn_status = SMARTTHINGS_RESOURCE_CONNECTION_STATUS_DISCONNECTED; + + return 0; } -static void gathering_start(void *data) +static int st_thing_resource_fini(app_data *ad) { - app_data *ad = data; - ret_if(!ad); + retv_if(!ad, -1); - ad->getter_co2 = ecore_timer_add(SENSOR_GATHER_INTERVAL, __get_co2, ad); - if (!ad->getter_co2) - _E("Failed to add getter_co2"); + if (!ad->st_res_h) + return 0; + + smartthings_resource_unset_request_cb(ad->st_res_h); + smartthings_resource_deinitialize(ad->st_res_h); + + ad->st_res_h = NULL; + ad->st_res_conn_status = SMARTTHINGS_RESOURCE_CONNECTION_STATUS_DISCONNECTED; + + return 0; } -#ifdef USE_ST_SDK -static bool handle_reset_request(void) +/* smartthings master functions */ +static const char *__master_error_to_str(smartthings_error_e error) { - _D("Received a request for RESET."); - return false; + const char *err_str = NULL; + + switch (error) { + case SMARTTHINGS_ERROR_NONE: + err_str = "SMARTTHINGS_ERROR_NONE"; + break; + case SMARTTHINGS_ERROR_INVALID_PARAMETER: + err_str = "SMARTTHINGS_ERROR_INVALID_PARAMETER"; + break; + case SMARTTHINGS_ERROR_OUT_OF_MEMORY: + err_str = "SMARTTHINGS_ERROR_OUT_OF_MEMORY"; + break; + case SMARTTHINGS_ERROR_PERMISSION_DENIED: + err_str = "SMARTTHINGS_ERROR_PERMISSION_DENIED"; + break; + case SMARTTHINGS_ERROR_NO_DATA: + err_str = "SMARTTHINGS_ERROR_NO_DATA"; + break; + case SMARTTHINGS_ERROR_NOT_SUPPORTED: + err_str = "SMARTTHINGS_ERROR_NOT_SUPPORTED"; + break; + case SMARTTHINGS_ERROR_OPERATION_FAILED: + err_str = "SMARTTHINGS_ERROR_OPERATION_FAILED"; + break; + case SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE: + err_str = "SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE"; + break; + default: + err_str = "Unknown error"; + break; + } + + return err_str; } -static void handle_reset_result(bool result) +static void _user_confirm_cb(smartthings_h handle, void *user_data) { - _D("Reset %s.\n", result ? "succeeded" : "failed"); + if (smartthings_send_user_confirm(handle, true) != 0) + _E("smartthings_send_user_confirm() is failed"); } -static bool handle_ownership_transfer_request(void) +static void _reset_confirm_cb(smartthings_h handle, void *user_data) { - _D("Received a request for Ownership-transfer."); - return true; + if (smartthings_send_reset_confirm(handle, true) != 0) + _E("smartthings_send_reset_confirm() is failed"); } -static void handle_things_status_change(st_things_status_e things_status) +static void _reset_result_cb(smartthings_h handle, bool result, void *user_data) { - _D("Things status is changed: %d\n", things_status); + _I("reset result = [%d]", result); +} - if (things_status == ST_THINGS_STATUS_REGISTERED_TO_CLOUD) - ecore_main_loop_thread_safe_call_async(gathering_start, g_ad); - else - ecore_main_loop_thread_safe_call_async(gathering_stop, g_ad); +static void +_thing_status_cb( + smartthings_h handle, smartthings_status_e status, void *user_data) +{ + _D("status: [%d]", status); } -static bool handle_get_request(st_things_get_request_message_s* req_msg, st_things_representation_s* resp_rep) +static void +_things_connection_status_cb(smartthings_error_e error, + smartthings_h handle, smartthings_connection_status_e status, + void *user_data) { - _D("resource_uri [%s]", req_msg->resource_uri); - retv_if(!g_ad, false); + _D("result [%s], status = [%d]", __master_error_to_str(error), status); + + if (status == SMARTTHINGS_CONNECTION_STATUS_CONNECTED) { + int err = 0; + bool is_es_completed = false; + const char* dev_name = "co2-app"; + 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; + + err = smartthings_set_device_property( + handle, dev_name, wifi_mode, wifi_freq); + if (err) { + _E("smartthings_initialize() is failed, [%s]", + __master_error_to_str(err)); + return; + } - if (0 == strcmp(req_msg->resource_uri, SENSOR_URI_CO2)) { - _D("query : %s, property: %s", req_msg->query, req_msg->property_key); + err = smartthings_set_certificate_file(handle, CERT_FILE, PRIV_FILE); + if (err) { + _E("smartthings_set_certificate_file() is failed, [%s]", + __master_error_to_str(err)); + return; + } - if (req_msg->has_property_key(req_msg, SENSOR_KEY_CO2)) { - unsigned int value = 0; - sensor_data_get_uint(g_ad->co2_data, &value); - resp_rep->set_int_value(resp_rep, SENSOR_KEY_CO2, value); + err = smartthings_set_user_confirm_cb(handle, _user_confirm_cb, NULL); + if (err) { + _E("smartthings_set_user_confirm_cb() is failed, [%s]", + __master_error_to_str(err)); + return; + } + + err = smartthings_set_reset_confirm_cb(handle, _reset_confirm_cb, NULL); + if (err) { + _E("smartthings_set_reset_confirm_cb() is failed, [%s]", + __master_error_to_str(err)); + return; + } + + err = smartthings_set_reset_result_cb(handle, _reset_result_cb, NULL); + if (err) { + _E("smartthings_set_reset_confirm_cb() is failed, [%s]", + __master_error_to_str(err)); + return; + } + + err = smartthings_set_status_changed_cb(handle, _thing_status_cb, NULL); + if (err) { + _E("smartthings_set_status_changed_callback() is failed, [%s]", + __master_error_to_str(err)); + return; + } + + err = smartthings_start(handle); + if (err) { + _E("smartthings_start() is failed, [%s]", + __master_error_to_str(err)); + return; + } + + err = smartthings_get_easysetup_status(handle, &is_es_completed); + if (err) { + _E("smartthings_get_easysetup_status() is failed, [%s]", + __master_error_to_str(err)); + return; + } + + if (is_es_completed == true) { + _I("Easysetup is already done"); + return; } - if (req_msg->has_property_key(req_msg, SENSOR_KEY_RANGE)) { - const double range[2] = { 0.0, 1024.0 }; - resp_rep->set_double_array_value(resp_rep, SENSOR_KEY_RANGE, range, 2); + + err = smartthings_start_easysetup(handle); + if (err) { + _E("smartthings_start_easysetup() is failed, [%s]", + __master_error_to_str(err)); + smartthings_stop(handle); + return; } - return true; + } else { + _E("connection failed"); } - _E("not supported uri"); - return false; + return; } -static bool handle_set_request(st_things_set_request_message_s* req_msg, st_things_representation_s* resp_rep) +static int st_thing_master_init(app_data *ad) { - _D("resource_uri [%s]", req_msg->resource_uri); - return false; -} + int err = 0; + smartthings_h st_handle = NULL; -static int __things_init(void) -{ - bool easysetup_complete = false; - char app_json_path[128] = {'\0', }; - char *app_res_path = NULL; - char *app_data_path = NULL; - - app_res_path = app_get_resource_path(); - if (!app_res_path) { - _E("app_res_path is NULL!!"); - return -1; - } + retv_if(!ad, -1); - app_data_path = app_get_data_path(); - if (!app_data_path) { - _E("app_data_path is NULL!!"); - free(app_res_path); - return -1; + if (ad->st_master_h) { + _I("Already initialized!"); + return 0; } - if (0 != st_things_set_configuration_prefix_path(app_res_path, app_data_path)) { - _E("st_things_set_configuration_prefix_path() failed!!"); - free(app_res_path); - free(app_data_path); + err = smartthings_initialize(&st_handle, _things_connection_status_cb, NULL); + if (err) { + _E("smartthings_initialize() is failed, [%s]", + __master_error_to_str(err)); return -1; } - free(app_data_path); - snprintf(app_json_path, sizeof(app_json_path), "%s%s", app_res_path, JSON_NAME); - free(app_res_path); + ad->st_master_h = st_handle; - if (0 != st_things_initialize(app_json_path, &easysetup_complete)) { - _E("st_things_initialize() failed!!"); - return -1; + return 0; +} + +int st_thing_master_fini(app_data *ad) +{ + retv_if(!ad, -1); + + if (!ad->st_master_h) { + _I("handle is already NULL"); + return 0; } - _D("easysetup_complete:[%d] ", easysetup_complete); + smartthings_unset_user_confirm_cb(ad->st_master_h); + smartthings_unset_reset_confirm_cb(ad->st_master_h); + smartthings_unset_reset_result_cb(ad->st_master_h); + smartthings_unset_status_changed_cb(ad->st_master_h); + + smartthings_stop_easysetup(ad->st_master_h); + smartthings_stop(ad->st_master_h); - st_things_register_request_cb(handle_get_request, handle_set_request); - st_things_register_reset_cb(handle_reset_request, handle_reset_result); - st_things_register_user_confirm_cb(handle_ownership_transfer_request); - st_things_register_things_status_change_cb(handle_things_status_change); + if (smartthings_deinitialize(ad->st_master_h) != 0) { + _E("smartthings_deinitialize() is failed"); + return -1; + } + ad->st_master_h = NULL; return 0; } -static int __things_deinit(void) +#endif /* USE_ST_SDK */ + +static gboolean __get_co2(gpointer user_data) { - st_things_deinitialize(); - return 0; + int ret = 0; + unsigned int value = 0; + static unsigned int sum = 0; + static unsigned int count = 0; + + app_data *ad = user_data; + + if (!ad) { + _E("failed to get app_data"); + service_app_exit(); + return FALSE; + } + + if (!ad->co2_data) { + _E("failed to get co2_data"); + service_app_exit(); + ad->getter_co2 = 0; + return FALSE; + } + + ret = co2_sensor_read(SENSOR_CH_CO2, &value); + retv_if(ret != 0, TRUE); + + count++; + sum += value; + + if (count == SENSOR_GATHER_COUNT) { + unsigned int avg = 0; + avg = sum/SENSOR_GATHER_COUNT; + + _D("co2 avg - [%u], [%u ppm]", avg, co2_sensor_value_to_ppm(avg)); + + sensor_data_set_uint(ad->co2_data, avg); + +#ifdef USE_ST_SDK + st_thing_notify_resource(ad, SENSOR_URI_CO2, SENSOR_KEY_CO2, ad->co2_data); +#endif + count = 0; + sum = 0; + } + + return TRUE; } -static int __things_start(void) +static void gathering_stop(void *data) { - st_things_start(); - return 0; + app_data *ad = data; + ret_if(!ad); + + if (ad->getter_co2) { + g_source_remove(ad->getter_co2); + ad->getter_co2 = 0; + } } -static int __things_stop(void) +static void gathering_start(void *data) { - st_things_stop(); - return 0; + app_data *ad = data; + ret_if(!ad); + ad->getter_co2 = g_timeout_add(SENSOR_GATHER_INTERVAL, __get_co2, ad); + if (!ad->getter_co2) + _E("Failed to add getter_co2"); } -#endif /* USE_ST_SDK */ static bool service_app_create(void *user_data) { @@ -243,8 +590,13 @@ static bool service_app_create(void *user_data) return false; #ifdef USE_ST_SDK - if (__things_init()) + if (st_thing_master_init(ad)) + return false; + + if (st_thing_resource_init(ad)) { + st_thing_master_fini(ad); return false; + } #endif return true; @@ -252,13 +604,8 @@ static bool service_app_create(void *user_data) static void service_app_control(app_control_h app_control, void *user_data) { -#ifdef USE_ST_SDK - __things_stop(); - __things_start(); -#else gathering_stop(user_data); gathering_start(user_data); -#endif } static void service_app_terminate(void *user_data) @@ -269,8 +616,8 @@ static void service_app_terminate(void *user_data) return; #ifdef USE_ST_SDK - __things_stop(); - __things_deinit(); + st_thing_resource_fini(ad); + st_thing_master_fini(ad); #endif sensor_data_free(ad->co2_data); diff --git a/src/sensor-data.c b/src/sensor-data.c index 7f82784..1435e18 100644 --- a/src/sensor-data.c +++ b/src/sensor-data.c @@ -129,6 +129,13 @@ int sensor_data_set_string(sensor_data *data, const char *value, unsigned int si return 0; } +sensor_data_type_e sensor_data_get_type(sensor_data *data) +{ + retv_if(!data, SENSOR_DATA_TYPE_NONE); + + return data->type; +} + int sensor_data_get_int(sensor_data *data, int *value) { retv_if(!data, -1); diff --git a/tizen-manifest.xml b/tizen-manifest.xml index a82ae23..9c71576 100644 --- a/tizen-manifest.xml +++ b/tizen-manifest.xml @@ -1,17 +1,21 @@ - + co2.png + + + - http://tizen.org/privilege/network.get - http://tizen.org/privilege/network.set + http://tizen.org/privilege/appmanager.launch + http://tizen.org/privilege/softap http://tizen.org/privilege/internet - http://tizen.org/privilege/alarm.set - http://tizen.org/privilege/network.profile + http://tizen.org/privilege/datasharing http://tizen.org/privilege/peripheralio + http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource + http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master -- 2.7.4

`Lb{!tY2|UWf-|?-ckRzrI1_^YE#xGZlNJ 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%0AYV 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 diff --git a/lib/libst_thing_master_api.so b/lib/libst_thing_master_api.so new file mode 100644 index 0000000000000000000000000000000000000000..2e258c901c8bac9c841d9bd8cc38f4d59e406f64 GIT binary patch literal 111232 zcmcef4}9Iz{r^8n(>5yX(jY41vdm%&f{u~_O4AS>n0^AT8$}! zTEn`jt*o1{*lL0zD6+{YYSP@^35t%|Iy(71U!QwU@5v{hdy{^D+wypvywB(JIp=-e z|IYio&!5ldUh&Ow-^$9$^6cLruh`R7-8VgNBrx^>SJ~d+kzUjr%(D^R-u`o2UU2Ds zS$-Pq-^}u#C+}r*Kig{<_et-NUM1--mvpM1^Soz)t4WueYgFj}-D#k}%cO%y3DO@)OG%fI^fxaF zyd}WBNRr`Oq-#j`k^V}WP3j^&PtxBq(%1c*=luq_iIiuqe+PVz^k>rVN#7>v?}#Mu z#sgm2F*TcwYtXN?JpjZtlGf{F=$H1zutD%Yhe= zeop$ExhL=nX%Oi_(vc+ny+k_E&v{;(fi1xENVk&Kk$y_j-yG7lqzSsIpW%#?B z)Jj@K(qA*_HPSChi%A_M`*#nSCUdbTu-@d)GO!c)1gVA;B~2pf?>W-Gq?x4kB>mlx z1m07?%SdmN?k8PE`U^>aQ%Dz*PSM5x=r3mn+ZkrcM*{VBcdozS0oJ(#b0ubFL>l`C2D`wv#V*^5;8wWgAF`k*1NpNDBUym>ahP zzfUS69d7Ow0#7#iFB^D{fxiHrLHdEY7N{cqg!F6D#U%ZGh4fw0ex$2O?q3BLx0o9% zfn!OJk#08kjxz8j;JGIMTi|h|$4PgP=9BdIFzHItB3+w+fc)1%TJv;rTok@P1>_|^ZU3TVRv_a1!CC$o zsPgU5KOP6YfM>eCU4_h_=>75jo>y{zQXdg-Pp<-b*ZeCvhN}E)`!N2zlaklJar6y4 zBVX$3c}FgN{;OGDossudAnkVOy?~CjWot4PQTZ1r*RW@n*J{e2g`?X1WQxD@0{oo` zgKO`EMkD_v$Ty08tTOFa<$K;XI?5(<{Ya7(u0$Vxkbh;18NW^aNnEdJNa;HV2Uz?< zN`tnDP%IkMg~dp23$b01_DSKIjeCr(f zUd(k$-g|iCXs4td-$J{R&ojG1-xXY&_VZ|OIi0!KTrV36@7s`>&)?48!`xptDa+%Q zU;iEGt*fT*n({|6fUP+q%WE<8<%eu=I2D5cnJ<;n`y5H`sU&+ZTpwf-kR)`J>FhO4DvzBo~Bd2@bi@Z4u}3V z7t+TKzR}PfJ0}^#sQp9G*DCa7``0gh%9H=3Z@Q{C?h7e@u?+jFS(CD_8>v6819~YZ ze7Oi<#Z@VP@?^5(%Qj3fXy{`i8pXj*>`ycyRs{NyJm>qvh zwSNHpXX95=^j?Br@xGMhRU3VMjJ(=E!k*0aK|Jp~D^>mz?4ujU+hN-OQox_=fj+Bt zP09Z`~+{!RZ*$^Ytret$!M-847VUt@vi3V8m+{AA>0k4p zMf_d^KWm>&&f9c71O2t1lG5jvA;@A%s(HjINyFX0P|7G;EjltIHe*yN9 zm*?mQ|FDvvq}#Ord;D?tttol!LVN4>N!33Udl;Rcy1p+U?`!G*xm#2I;AxDk@b9Vq zzKZ(xPxiMDe$)Qxx)6Pj{|7c?L0_W(vIYPKZSCC0uIyup7ghs(G6w6}Ra{??R#1$@yz zQU@q}f5m@}XKiG&xo!;5+X_D=`=<1(airsXe7M1PH|3s$t ztIzYi0#pCZfPQ{W{hH@f{2xbq%TG&R(g#e3AO= zrRdzyyO938X-KL+?}Yw5uC2X(9eQ(bNYPt^zgW|lqUY8Cy$hhHePhah6b1O3OS>!1 zVEi-kJ&5`ncS*JXL;TIWBUAdrw6_06$yEmMJ;c3^>MU<9Q1-h5`E066(f3#6zwpcy zzH_mc=8GBMt-g@&>dC3=*~qW{$Ep7EOn|?y!(UrGCGRct|1CW!e?J9(R`-5N{)Z#~ z@{?2jg|6c*e-RlOdiTaYJD*GW&s}K0_(!Sn{n{u6&7bUZ5&RUKp0fY1Vy`VFDgO3E zu1&kKHfiL$H~oEWU5cLv@h77?iHX4@d5yzgv`kI$|EoQ*-=!(}<->2@Evf6n4J`su z(%IP0(wr=R?N9hB;WzRT_;{x4cLMqv8o1sSedSlC?D>~MYW~FUEA;;+l)Heu@ckKi ztvEI%&u;W%=X<*|-}_kO7fx-PDgPAomC^s_n(G&#Z^@F>{NQ=Uo2`$h%I}K3S3i}~ z?=0k4Iv)KPc^-*=$I&^gKi-}GudCVvPnkBmcJi!>Q%|ay zIb(9g#0zUCC!d8sshl)-q7Y21nRYn^zkNyN83w~iH4|sgo;=&Du9-QdGB#`4j9PD2 zY*J-xCXL2s&76A~1XNC+sKzR%&A4Rd#gi+i&90mitDaapxpLOziPe{RQ!1xb*G#UQ zSY4gIYW3vVwX`MlK zuuthEW|uG|UOO!*vq=+cYGzJKwHuVpBxF(R(ADSp%o#H#Ppb7|6DM6faSB2d!={qk zWc6gHQTKsw2kF~4x=EJmU2kS=0M#hetJdV&%1M)F)lR!;+9YZEqG=e|^vTm_Ppm(FY%9fe3d9Vecv~M*m5_ zR3%Hf^+ZBaca@W-PMk4ia&_gT3)AE2Q?#;r+U(fO*-nQ}xxv1L`|JF+bA}S-l09d} z4iauKr>p1U7G_u183ht3m`NPLqB|grK-FFyKgm+CM1Nybc&(rqdf8h>IRr~)5=5V} zJ0OW*-4IdqDKaow^r;pu42sREq1$HYBuPx$3-&LHRM8!l#P+Ib1(7PTBXUU93W^~% zZAM1!^?b_Y8IxyeIGl80U+#k=zADIz)J(jrlF(vyc&(IM2{sUvS?`j4Fb9hV$#Hy; zVbzsDvfr2o0~2Tn7P**92^kd8(f%dVW>1?rgAgyHVAE9SE8vs>(pA|38KglGVs7b5 z4ophvYP-Uph$x8$6-3OQ?FKKs3ngR5?WKA@+>RkeJb&rTSxyMlyI=}S?9%F9>^fvj zoKris_Oh5e{Ds8pB1I)D{i3~_*-p>o8IuNviGmpsX&j$1xh6G;_iix7mo4Z%mu05H z$blJVc==3rnWn}Lm}NMIUTR8q)iebMW|V0vy8=@YYm_wvP;;2Hgp1xmmeRrYD(P@e znmK1i?W{Bt!cdg9Mmmg|k=9O|z9Up_uj1nLBd|#mXUK_V8V+Y~FO$h6oKibr2B}&h zs&^g^Ox;cem(hu_8Ws`kBy>Bf-bIosHKg}`_f&E!k^^Nm8*t8^NS z(3dO`(vxtM-au!jrTcj_kCeuFcf0DkVgoT+l zf!v&G-!TTsc3JaFrR_N>9JYl}8*q@=a(&wHDUn#T>^E~pO5A-)CaH0X_9?L)m){5c z@QsDW0io<&BLn71lP1reU0KU2;=pK~=vGLNch=;K2<(YN28_6Ojr5rP`DeP2%+Zhp zYs;p`HmPPB%V8{+4oIr0(k@2zVAfwXrI_R3Nf+)@dVAqsXdpN?YqGygGiA;!)<+0J zQ)Hz>7g{Tbclu1b_%a}bPVpe7*|n@)&7OG?{l1^Um@*Xc%ZE+QQga7kb4mugaR$bF z*9;q&2TE=4RhwP}vA8)mHl^~yiFm7tZZH#@$Wm)f<)yQxG5=)!lWCPBUH2ht_(vSh zGORz;%$huX<|UKK&$!s$qOUl<-Qd+yK0ZP4fE`R#LE)7tNYE z-QP{|kniSWCXp)~r`XTqogDTJ5WNKBw0?i-i5xOHE}5P`1~= z8d5$vXa=348NW1JV8kRus+>NjcJkaxwtqE*rf$rc;onO7Nz5Us9y`jiODYW8Z91t^ z)0m4!`@O+p?4@f5O*_U!W=!pf8vCwAs1!OISixD7zu!MLn43K961Pd0(n&RwC(g3` zDT=7PXikkg^7{jL8ly2(dNtE7oWx4w!N}*LOZETYNi(N&(BY8TGY=^ZJT;r;2Tz|k zgXO1Ly^APB3f9#rhV7-M(A2?)A5yyg2D&&{p@nW7<~OC>kzVCwhM|^0lgFKM;z^ZKd1l6KRwZ3>RGae{cmd~ zOW3D9#UfY_v`z%~Qd8rW`NA?NyqKWbo+fyD-Tz&$vxl_N;OT)`sFZwZcuZowJQE%-;ykqN%a zd81!udwX&oY>Oc0VYdo$E^M1%E)D()$T_ndLC)vp3g&@Vkn?I0LC%@w3v!;SK#+4z zg@T-CiVAY>sz?y}iUm0*RU*jws8T`BL5&pTyw@l}&T)+vCQ#mIp_1+PK>g4d#d!Rye!;PvQVa3T5^7kmu; z3$`Lw!6(qa;M3?|@EP`WM`U{srGh-(?5Cb5oZ0UT)o^-8r2HCvrNM zC3fvx+?l)ikBP>Mvpw(W#a#zJx3H`6v(*WkZ*cMpoP3>=pX=mfPJXJBuX6I^oqV~I zAM51Hoct&!U+UzGoqW{E7dZKdlh1YXo|E7DX^P*?PQKg8cRKlXPQKmAw>kM%C*R`a zS2_6=PQJ;>H#+$SC%?eS*E#vQPCn-3r#ks6CqLfFmpl2fPQJ{^k8<**PQKX5N1c3u zlaDz0Tqo~2`K|wQU*Y7NoP48`Z*cMpoP3>= zpX=mfPJXJBuX6I^oqV~IAM51Hoct&!U+UzGoqW{E7dZKdlh1YXo|E6Y)serG?{@N? zPJW$}Z+G%-PQKO2w>bG#PJV@xZ*uaDPQJm(FL3g8PJXVFk2(3NPQJ>?k9YFrPJXPD zFLUyvoP4R1FLv@#Ctu*?BThco$$L(I>pva&JNa%W-|6JnIr(-c-{$07oqUUvU*+Ui zIQb?g-{|BUocsbOUq?Q_bXg)lx-2oMba7{P^yasDdp*8y&!Jgg>gjp6Vsf@u!jLkO zG9$fYnNrH~^@z?vrB`)%r6*Bmapw^4Ox3xmfO3OMe*zBwI%{~(p&RB-$@XHTLU2XF zH7c?!F$!E+k;R?DD_maW1n@2HJYlz{4R`N1zw`0Pstux{fVQ$rMNbGxi`pL_V)Ro_q^BE)AL>-*ICh~xaxb+ zCle9I)%6$g%^2_(QlW|bQj%yEKA+xbgWsNHMMO5@S!5M;X#KROXPDYO0{$aqk9I%K z^Gz2*H#kedx%q^H-^p!1wX5_5+AeR}P%?2@;&-J@@tm^7okc%bmKajCxHG4$zN>Km zWr?9N@}-NQndhZV8-_%hHh8f`3CVo~^n2b}al-Xsd@&&L19KEa7$t^_;aHquW7@st-$t0U7JsMw7U>qmVoCE zroP3O)IYR=>mRi5m!JP=ca3SY-IN#IDy#NX_C3l*%0y#DJO>)pc6PKWuJ#9Kb;d{1 zUWvENr$;ikbbS5uo_A|`XLc#6ju&_)09TMa(&huRye&hKFS5@=zDvr`S5?!7hS;*i z&kyr_`7S6oGDW_1&^Wlfw|w)c@GDepM8 z$f`5_274-Zc$PmHVR+6(uLVZOyOPgEZ-vpMecFCw?Q?hroecq>?Z5MQ4}Cdl!H6s` z1}r04`*i!&z60!6)eh~F+k5{`^{c3%UHz&k65g*4$UyfxaM^yf`hYBNBdLw=HZ%bj zkizKx&hhx6vc;YK`GdIux*v7uE_UcHNkjMW7n3#@W;4HZ=+1%85>f=ZyZ6uX+DT#d za`X<^%R+~C*~^WFcG*j*q21cc$TaqHTn4#c4nAuyeG@h4-%YYHlAL5749-!Qt z9NJ|sm5$s;J8~~eBlmM&N-y_uj@%bUv%F?f<6hV~a6D=ANy+hJ1^qO;p=rZ%`sug# zPxjNL^wXT^qU5;D7}8++s`|6~s`T9A&@Q=){zDD@4AjF$;a~Y0SUf_0rzm4A{k069 zG@fktvnM6TT#YHGWzfOimY1s@?e5r*v4pgqZ>+2WE+mE7&}}EXKg4KdP_<9(7%nbeJv@>hHf=uM1OsEokP2H@S>r82((rXgdhiGiOqqVR7Xv{!I@zp*a#zl?&jOAmYGe)Y|gFXx_5Z(Ct2rGX@O~kXv^px+`cd4IyWl4R?9>41IdQQ9weYH@hXw{-F zPj=UOtsmbPwk}FUNkhG#bPx4z=&p%0#TnJ&JHxA2Ro-me?7*k)~@BL!wO^ zG>^$|xQ6)6Z)Zbc>7uS(RUUiUpLs!{cNaEtP2zO!4fbNhLroi4cBem-$G;5Rg?o8r zorAJY=p0@GO~>u-#fxb}b}yQ9B8w8I9C~F}!EV?!JgdEk_+>trOKhcioyvU-ezjEu zkMe6#uBDfevbn{Nc6VZPl1r|K+>BiI&GwRQa8K<)Lwp1EKEU?WhrFt5ecf6dP2kw$ z3GB8kX}7}T)7YApufC#+;`)Hyz&h@pU^aDFuXoV znF{cIEc-}8W{1KJpCCOTJs#dtP!UbZB1kbzgTHPm=zi&A(qB|B^oM zS4ND3pL_h%qz)bfu7=0erOOicVoO$^XQR)Rk(54{Q%3sK*k$#31$Y~%=SA&Y`6_Jw zszfd+j}#&0lL|4by7VweQDqsHZRNYQJSpETv1N%%kgsI9sVwDlH;O;{r=3^J z4lC)OJ}u~8ayiM!H|ofj?XzLKdbhr_NYChhJ9E7hTsOj3ZdK9-b3FR1v1j2CU!|1a z#k(Y)HL-KJ`ht~5HFd9X>{s<%`=xw*f9n1n8H}dvWf{uuQPmmWld^xKY#}lkLn>x+ zp^v%LA)6x7TFJ}UpyC*>Dme$amzYd4YA8#|NOO>&jP^dQw~Ri;o@9fPi^kJtT^qS* zO@=M2jB?!XG>d-xaMtUmc2&$;mMEbwmEVIuUd5Od zTiiMJ!exm^4)Ef`n$T^OIe6^au2Bah$5;7}d~}mlM_Keejd5p~^n~7I=aT!=K0g(4 zw%_3AeBy%f!&#rfO*9Rk#J%FOMO~Zlg;`%kUeuLs`~DAKdo6V%hI=wS~yV~&b6K&MZ13nGh30!M{gMnGEFX}2WKG&uDd_$XP@#$OTuLW)RuAwUj zy7CNN&4w=7`xf;2)&S_54W4!AFu(M!L{4iyej*YBB0O{scayDp^PJar@66<(=`$uPzx6tfy_oc>hFhS+S%p2Q@Tpn1v0>21Jt`yJU++(4loP%?~{9ocP|r z948h!RdQnt%OMsTijEWJI=87lk=Ia<&#jkDC)e(-eYCrZ_SMd(Mpm{h`6k79xwN-O zX=hx1MzOET_M|EMZ`x8>`I(i(M;)XVzL~WE*g*W7gKQKN7HFJfOp}i(n!hYDd{EL4 z7c%x)xoDj8eT+xHj3srawl5FFN}b{lKl3#sk9~m!jOFqMK0Aj;n5*S|KQ`=4)3j)ev46U4qt;P-3L=K62RM=^lyXRXw?e(G)bmfzmzN$id? zqSwk(vXo5azaFH{M#{=>@7Yh;6_kCAvP+01R+F0eM$Q6YIX32z@`<;tOxGK~y^gW% zCHjkOt-UPex7%oMyG-j+GM(>?Z?dr)e3_i>uN}Lx%qpFjcuCKYCF`;y_9}f78MleA z4OV7TY2&nj%z|UyY;ahay$^4)tK%Ix1jjnb>>}z&W@W@sQ%U3akk?3H47F9cgf9dr*hJQPD{mAevA1A+ZaX>EiQy z{qR{rU4Kj`j;SV%9m+Td+=QNs(0dr4a|X!gO#wc43-Ear_AlL9KCkJA&#Vl5{#E|e z^noyaenea1vw}Ee9;s?bmNyDG0X|2gS37rXGy2qe_cwM;+VpBipUqaEUTQs5Iz7;d zN2KRh#2bD>b7c7j^~*5V?N)k?7(XGs-rSE~A2$5f5U(sD%^eKSz#43K zoMKk9CgAe>E9g-l9tgj~PEEyM;`fdae(wzM`=Q3vs`Rnxbs6}5pdWrOH~h|HoLo*? zkV9VuwqwH+&~um_KRrM@{;H!}_18+ntL?8R|FgFpzuJ#pzZ>Aw#^BQHv;FW{X82sl zw*;F>jf3D5SO%Z9=vV87n%B)`ywiGNE#n;%Fki1V6Y&1i8_hW(8LN0dSe7{9 zIO3wR#hsc*`une}^KKR$^iw-$)cp0~z?}SHpZ~Kp_a0`}{o(~>*ZB1cfnMYmVzbjX zXx&b7TKf;=RdzM{x;1g3>Xwyv?Z&f(v~^Iv7he$2!NcfauA>8uQ~tV3S!&(o7Vzxi z)oSfzxI6b&{41J=uR-RDv9Sl)+4h*FtTTQMb>*+Si9aI9X^V%<$d4JD%{OKlr^rtw z6(GBX$k*EaJY)BB=Pyfqy(nq-G3?N_`|ADs+Wli8c0bvdVMY9SUq?aX)DLIoRQm!j0`mvHhYnw*Sq2oBG)PV*{}Lqrk1TmW$A-wSBdj z&i0R$9@5x;5x892AC;l(-jtQ?uOwD#CpGtQCKBkKob6R4dV1QwmF?wlubmiUGie+C zsv94@4n2n1{=|{qfNcMnfbIWNw#?Y;+J4m7ei1MyVEcche2%gGXZ(JUvi-|LZ2y@7 z*#0ZN?9ERDZT&YgBR}?=*-N-%Y_jftCf4@H$+_~8P zy|is@Uu~wd{Tnmb^JH+jwtroQvgc7&w!exvtAo_CjdQ@joH6{SQ@p3A(OJF?f-Uww*Okd_D4y!0oyM&wqF9w4cPvVkyEa*{oBdAe*gIp+kb5U zw!arNWb*qDWw8BR>dN*v6W0_Vr){4iGxFn3%=YTZmn+^O)#LM*Am1?Ce{~0JzbnM= zzb!eWvHiS&?O#pVFu(r-_k*^dhaG;hC29Mm*#5{gw*OIx?RO2p?>|DDdDwn8ZCKk^ zo9S%-tqk`33vju%|9Xb9cT!fi-%MPyj# zyO;lGXD8J52Yr2De*fKo?Oz5RnQT8VVEcPYUdHxYRM&}l3is$6^SnC%+aC{}OtwGd zsq`_=Db$tiE7mDQPTp2zM!x*`Y;VCou}Jc@q|uC*jmXzu^NTfYSWC>K{oS^kh#QIJ z6&tn^^X$}+T=Ua@o^0`;!L0e!nKi$rrVSrEYkoVK7)&w$S0oGU{|poNXzh6n`C1eE zL;`)_``FtA^DIB`>|maa$x6)$MnkLS1RrzXk71)t{#+sAU7aYRoSrrEEP}3x**CC9 z1FWz1-(w7 zY)L<5+bH`SWm|}oI!SB(!Hfx*b6mF9eJtlT-|FdU0hY6oxb_p?DfyiDK}hT9Ps{O_ zORx_+o|H(|WlbB3f518reM<6o<;-9NDwDV&Ia_C+jE=(Q8?s^bJ^e;U8)@Yh z-s=HwJBIVUq&%+IF@A3)O=Zk3L??FaX-3YPYpbJ7FQPkI&4B2q$Vad5lL7-1QjryO*0s zn+1$n$Iylyv(#pA%&McV?DHnWyXAX(KVzQ$FK}qg8gI%j%ux0N%4*CSg+3>c%0A{j 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 z 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