diff options
author | Boyeon <boyeon.son@samsung.com> | 2019-08-23 20:34:04 +0900 |
---|---|---|
committer | Boyeon <boyeon.son@samsung.com> | 2019-08-23 20:34:04 +0900 |
commit | 96b942dd26500fd12c61b1597185c6a44180fd78 (patch) | |
tree | f68f00d197f803abf7254ae897061d6284e1f1c4 | |
parent | 9571c753b3c1f227a2d7a8ee0a77196c55732c23 (diff) | |
download | st-things-light-96b942dd26500fd12c61b1597185c6a44180fd78.tar.gz st-things-light-96b942dd26500fd12c61b1597185c6a44180fd78.tar.bz2 st-things-light-96b942dd26500fd12c61b1597185c6a44180fd78.zip |
Add two projects in master repository
Change-Id: If7464555bb65cb0504597c3ac327c335a2fbaf7c
-rwxr-xr-x | LICENSE.APLv2 | 202 | ||||
-rwxr-xr-x | NOTICE | 3 | ||||
m--------- | basic-interrupted | 8 | ||||
m--------- | basic-timer | 9 | ||||
-rw-r--r-- | inc/log.h | 97 | ||||
-rwxr-xr-x | inc/resource/resource_infrared_motion_sensor.h | 34 | ||||
-rwxr-xr-x | inc/resource/resource_led.h | 34 | ||||
-rw-r--r-- | inc/smartthings.h | 1656 | ||||
-rw-r--r-- | inc/smartthings_payload.h | 663 | ||||
-rw-r--r-- | inc/smartthings_resource.h | 364 | ||||
-rw-r--r-- | lib/libst_thing_master_api.so | bin | 111204 -> 0 bytes | |||
-rw-r--r-- | lib/libst_thing_resource_api.so | bin | 72524 -> 0 bytes | |||
-rw-r--r-- | project_def.prop | 11 | ||||
-rw-r--r-- | shared/res/master.json | 18 | ||||
-rw-r--r-- | shared/res/motion.png | bin | 57662 -> 0 bytes | |||
-rw-r--r-- | shared/res/resource.json | 52 | ||||
-rwxr-xr-x | src/controller.c | 645 | ||||
-rwxr-xr-x | src/resource/resource_infrared_motion_sensor.c | 66 | ||||
-rwxr-xr-x | src/resource/resource_led.c | 68 | ||||
-rw-r--r-- | tizen-manifest.xml | 21 |
20 files changed, 17 insertions, 3934 deletions
diff --git a/LICENSE.APLv2 b/LICENSE.APLv2 deleted file mode 100755 index d645695..0000000 --- a/LICENSE.APLv2 +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you 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. @@ -1,3 +0,0 @@ -Copyright (c) 2018 Samsung Electronics Co., Ltd. All rights reserved. -Except as noted, this software is licensed under Apache License, Version 2. -Please, see the LICENSE.APLv2 file for Apache License, Version 2 terms and conditions. diff --git a/basic-interrupted b/basic-interrupted new file mode 160000 +Subproject 71be3d8daf587a2a5221dcda7d16227577bd857 diff --git a/basic-timer b/basic-timer new file mode 160000 +Subproject 9860e2f54df01e11ed05c38d50a573a4e55a176 diff --git a/inc/log.h b/inc/log.h deleted file mode 100644 index eb89231..0000000 --- a/inc/log.h +++ /dev/null @@ -1,97 +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 __LOG_H__ -#define __LOG_H__ - -#include <dlog.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "MOTION_APP" - -#define _E(fmt, args...) dlog_print(DLOG_ERROR, LOG_TAG, "%s : %s(%d) > "fmt"\n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args) -#define _W(fmt, args...) dlog_print(DLOG_WARN, LOG_TAG, "%s : %s(%d) > "fmt"\n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args) -#define _I(fmt, args...) dlog_print(DLOG_INFO, LOG_TAG, "%s : %s(%d) > "fmt"\n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args) -#define _D(fmt, args...) dlog_print(DLOG_DEBUG, LOG_TAG, "%s : %s(%d) > "fmt"\n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args) - -#define FN_CALL dlog_print(DLOG_DEBUG, LOG_TAG, ">>>>>>>> %s() called\n", __func__) -#define FN_END dlog_print(DLOG_DEBUG, LOG_TAG, "<<<<<<<< %s() ended\n", __func__) - - -#define retvm_if(expr, val, fmt, arg...) do { \ - if (expr) { \ - _E(fmt, ##arg); \ - _E("(%s) -> %s() return", #expr, __FUNCTION__); \ - return val; \ - } \ -} while (0) - -#define retv_if(expr, val) do { \ - if (expr) { \ - _E("(%s) -> %s() return", #expr, __FUNCTION__); \ - return (val); \ - } \ -} while (0) - -#define retm_if(expr, fmt, arg...) do { \ - if (expr) { \ - _E(fmt, ##arg); \ - _E("(%s) -> %s() return", #expr, __FUNCTION__); \ - return; \ - } \ -} while (0) - -#define ret_if(expr) do { \ - if (expr) { \ - _E("(%s) -> %s() return", #expr, __FUNCTION__); \ - return; \ - } \ -} while (0) - -#define goto_if(expr, val) do { \ - if (expr) { \ - _E("(%s) -> goto", #expr); \ - goto val; \ - } \ -} while (0) - -#define break_if(expr) { \ - if (expr) { \ - _E("(%s) -> break", #expr); \ - break; \ - } \ -} - -#define continue_if(expr) { \ - if (expr) { \ - _E("(%s) -> continue", #expr); \ - continue; \ - } \ -} - -#ifdef __cplusplus -} -#endif - -#endif /* __LOG_H__ */ - diff --git a/inc/resource/resource_infrared_motion_sensor.h b/inc/resource/resource_infrared_motion_sensor.h deleted file mode 100755 index 49062e6..0000000 --- a/inc/resource/resource_infrared_motion_sensor.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 __POSITION_FINDER_RESOURCE_INFRARED_MOTION_SENSOR_H__ -#define __POSITION_FINDER_RESOURCE_INFRARED_MOTION_SENSOR_H__ - -/** - * @brief Reads value of gpio connected infrared motion sensor (HC-SR501) - * @param[in] pin_num The gpio pin number for the infrared motion sensor - * @param[out] out_value The value of the gpio (zero or non-zero) - * @return 0 on success, otherwise a negative error value - * @see If the gpio pin is not open, create gpio handle before reading the value - */ -extern int resource_read_infrared_motion_sensor(int pin_num, uint32_t *out_value); - -/** - * @brief Releases the gpio handle - */ -extern void resource_close_infrared_motion_sensor(void); - -#endif /* __POSITION_FINDER_RESOURCE_INFRARED_MOTION_SENSOR_H__ */ diff --git a/inc/resource/resource_led.h b/inc/resource/resource_led.h deleted file mode 100755 index 1a81a18..0000000 --- a/inc/resource/resource_led.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 __POSITION_FINDER_RESOURCE_LED_H__ -#define __POSITION_FINDER_RESOURCE_LED_H__ - -/** - * @brief Writes value of gpio connected led light - * @param[in] pin_num The gpio pin number for the led light - * @param[out] out_value The value of turniing the led light on/off - * @return 0 on success, otherwise a negative error value - * @see If the gpio pin is not open, create gpio handle before writing the value - */ -extern int resource_write_led(int pin_num, int write_value); - -/** - * @brief Releases the gpio handle - */ -extern void resource_close_led(void); - -#endif /* __POSITION_FINDER_RESOURCE_LED_H__ */ diff --git a/inc/smartthings.h b/inc/smartthings.h deleted file mode 100644 index 7206479..0000000 --- a/inc/smartthings.h +++ /dev/null @@ -1,1656 +0,0 @@ -/***************************************************************** - * - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - - -#ifndef __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__ -#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__ - -#include <stdlib.h> -#include <stdbool.h> -#include <tizen.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @addtogroup CAPI_SMARTTHINGS_THING_MASTER_MODULE - * @{ - */ - -/** - * @brief Definition for the max length of SSID for access point. - * @since_ses 1 - */ -#define SMARTTHINGS_SSID_LEN_MAX 32 - -/** - * @brief Definition for the max length of cloud information. - * @since_ses 1 - */ -#define SMARTTHINGS_CLOUD_INFO_LEN_MAX 128 - -/** - * @brief Enumeration for the SmartThings error. - * @since_ses 1 - */ -typedef enum { - SMARTTHINGS_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ - SMARTTHINGS_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ - SMARTTHINGS_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */ - SMARTTHINGS_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */ - SMARTTHINGS_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA, /**< No data */ - SMARTTHINGS_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */ - SMARTTHINGS_ERROR_OPERATION_FAILED = TIZEN_ERROR_UNKNOWN - 1, /**< Operation failed */ - SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE = TIZEN_ERROR_UNKNOWN -2 /**< Service unavailable */ -} smartthings_error_e; - -/** - * @brief Enumeration for SmartThings status. - * @since_ses 1 - */ -typedef enum { - SMARTTHINGS_STATUS_NOT_READY = -1, /**< Service agent is not ready */ - SMARTTHINGS_STATUS_INIT = 0, /**< Initial state of SmartThings Thing */ - SMARTTHINGS_STATUS_ES_STARTED, /**< Easy-setup is started */ - SMARTTHINGS_STATUS_ES_DONE, /**< Easy-setup is done */ - SMARTTHINGS_STATUS_ES_FAILED_ON_OWNERSHIP_TRANSFER, /**< Easy-setup failed due to Ownership-Transfer failure */ - SMARTTHINGS_STATUS_CONNECTING_TO_AP, /**< Connecting to target Wi-Fi access point */ - SMARTTHINGS_STATUS_CONNECTED_TO_AP, /**< Connected to target Wi-Fi access point */ - SMARTTHINGS_STATUS_CONNECTING_TO_AP_FAILED, /**< Failed to connect to target Wi-Fi access point */ - SMARTTHINGS_STATUS_REGISTERING_TO_CLOUD, /**< Trying to sign up, sign in and publish resources to cloud */ - SMARTTHINGS_STATUS_REGISTERED_TO_CLOUD, /**< Publish resources to cloud is complete. Now the thing is ready to be controlled via cloud */ - SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_SIGN_IN, /**< Failed to sign in to cloud */ - SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_PUB_RES /**< Failed to publish resources to cloud */ -} smartthings_status_e; - -/** - * @brief Enumeration for RPC connection status. - * @since_ses 1 - */ -typedef enum { - SMARTTHINGS_CONNECTION_STATUS_CONNECTED = 0, /**< Connection is connected */ - SMARTTHINGS_CONNECTION_STATUS_DISCONNECTED, /**< Connection is disconnected */ - SMARTTHINGS_CONNECTION_STATUS_REJECTED, /**< Connection is rejected */ -} smartthings_connection_status_e; - -/** - * @brief The Wi-Fi mode. - * @since_ses 1 - */ -typedef enum { - SMARTTHINGS_WIFI_MODE_11A = (1 << 0), /**< Wi-Fi 11A */ - SMARTTHINGS_WIFI_MODE_11B = (1 << 1), /**< Wi-Fi 11B */ - SMARTTHINGS_WIFI_MODE_11G = (1 << 2), /**< Wi-Fi 11G */ - SMARTTHINGS_WIFI_MODE_11N = (1 << 3), /**< Wi-Fi 11N */ - SMARTTHINGS_WIFI_MODE_11AC = (1 << 4) /**< Wi-Fi 11AC */ -} smartthings_wifi_mode_e; - -/** - * @brief The Wi-Fi frequency band. - * @since_ses 1 - */ -typedef enum { - SMARTTHINGS_WIFI_FREQ_24G = (1 << 0), /**< Wi-Fi 2.4GHz */ - SMARTTHINGS_WIFI_FREQ_5G = (1 << 1), /**< Wi-Fi 5GHz */ -} smartthings_wifi_freq_e; - -/** - * @brief The Wi-Fi authentication type of access point. - * @since_ses 1 - */ -typedef enum { - SMARTTHINGS_WIFI_AUTHTYPE_NONE = 0, /**< No authentication */ - SMARTTHINGS_WIFI_AUTHTYPE_WEP, /**< WEP */ - SMARTTHINGS_WIFI_AUTHTYPE_WPA_PSK, /**< WPA-PSK */ - SMARTTHINGS_WIFI_AUTHTYPE_WPA2_PSK /**< WPA2-PSK */ -} smartthings_wifi_authtype_e; - -/** - * @brief The Wi-Fi encryption type of access point. - * @since_ses 1 - */ -typedef enum { - SMARTTHINGS_WIFI_ENCTYPE_NONE = 0, /**< No encryption */ - SMARTTHINGS_WIFI_ENCTYPE_WEP_64, /**< WEP 64 */ - SMARTTHINGS_WIFI_ENCTYPE_WEP_128, /**< WEP 128 */ - SMARTTHINGS_WIFI_ENCTYPE_TKIP, /**< TKIP */ - SMARTTHINGS_WIFI_ENCTYPE_AES, /**< AES */ - SMARTTHINGS_WIFI_ENCTYPE_TKIP_AES /**< TKIP/AES */ -} smartthings_wifi_enctype_e; - -/** - * @brief The SmartThings handle. - * @since_ses 1 - */ -typedef struct smartthings_s *smartthings_h; - -/** - * @brief The access point information handle. - * @since_ses 1 - */ -typedef struct smartthings_ap_info_s *smartthings_ap_info_h; - -/** - * @brief The device provisioning information handle. - * @since_ses 1 - */ -typedef struct smartthings_device_prov_info_s *smartthings_device_prov_info_h; - -/** - * @brief The cloud information handle for cloud sign-up. - * @since_ses 1 - */ -typedef struct smartthings_cloud_info_s *smartthings_cloud_info_h; - -/** - * @brief The access point list handle. - * @since_ses 1 - */ -typedef struct smartthings_ap_list_s *smartthings_ap_list_h; - -/** - * @brief Callback for status of connection to SmartThings Thing agent. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user can see connection status as #smartthings_connection_status_e enumeration value. - * - * @param[in] result The result of connection operation - * @param[in] handle The SmartThings handle - * @param[in] status The status of connection - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_initialize() - */ -typedef void (*smartthings_connection_status_cb)(smartthings_h handle, smartthings_connection_status_e status, void *user_data); - -/** - * @brief Callback for SmartThings Thing status. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user can see SmartThings status as #smartthings_status_e enumeration value. - * - * @param[in] handle The SmartThings handle - * @param[in] status The status of SmartThings - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_status_changed_cb() - * @see smartthings_unset_status_changed_cb() - */ -typedef void (*smartthings_status_changed_cb)(smartthings_h handle, smartthings_status_e status, void *user_data); - -/** - * @brief Callback for getting user's input regarding mutual verification. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user can send a confirmation for mutual verification as true or false. - * - * @param[in] handle The SmartThings handle - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_user_confirm_cb() - * @see smartthings_unset_user_confirm_cb() - */ -typedef void (*smartthings_user_confirm_cb)(smartthings_h handle, void *user_data); - -/** - * @brief Callback for getting user's opinion regarding device reset. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user can sends a confirmation for reset as true or false. - * - * @param[in] handle The SmartThings handle - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_reset_confirm_cb() - * @see smartthings_unset_reset_confirm_cb() - */ -typedef void (*smartthings_reset_confirm_cb)(smartthings_h handle, void *user_data); - -/** - * @brief Callback for result of reset operation. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user can check reset operation succeeds or fails. - * - * @param[in] handle The SmartThings handle - * @param[in] result The result of reset - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_reset_result_cb() - * @see smartthings_unset_reset_result_cb() - */ -typedef void (*smartthings_reset_result_cb)(smartthings_h handle, bool result, void *user_data); - -/** - * @brief Callback for carrying the randomly generated PIN information. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks The @a pin can be used only in the callback. To use outside, make a copy. - * @remarks When callback is called, user can see PIN value and length. - * - * @param[in] handle The SmartThings handle - * @param[in] pin The PIN data in string format - * @param[in] size The PIN length of @a pin - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_pin_cb() - * @see smartthings_unset_pin_cb() - */ -typedef void (*smartthings_pin_generated_cb)(smartthings_h handle, const char* pin, size_t size, void *user_data); - -/** - * @brief Callback for informing the application to close the PIN display. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user can know PIN based ownership transfer is finished. - * - * @param[in] handle The SmartThings handle - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_pin_cb() - * @see smartthings_unset_pin_cb() - */ -typedef void (*smartthings_pin_display_close_cb)(smartthings_h handle, void *user_data); - -/** - * @brief Callback for informing Wi-Fi AP information to connect. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks The @a ap_info_h should not be released. - * @remarks The @a ap_info_h will be released when smartthings_unset_wifi_ap_provisioning_cb() is called. - * @remarks When callback is called, user can get Wi-Fi provisioning information. - * - * @param[in] handle The SmartThings handle - * @param[in] ap_info_h The AP information handle - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_wifi_ap_provisioning_cb() - * @see smartthings_unset_wifi_ap_provisioning_cb() - */ -typedef void (*smartthings_wifi_ap_provisioning_cb)(smartthings_h handle, smartthings_ap_info_h ap_info_h, void *user_data); - -/** - * @brief Callback for informing device provisioning information. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks The @a dev_prov_h should not be released. - * @remarks The @a dev_prov_h will be released when smartthings_unset_device_provisioning_cb() is called. - * @remarks When callback is called, user can get device provisioning information. - * - * @param[in] handle The SmartThings handle - * @param[in] dev_prov_h The device provisioning information handle - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_device_provisioning_cb() - * @see smartthings_unset_device_provisioning_cb() - */ -typedef void (*smartthings_device_provisioning_cb)(smartthings_h handle, smartthings_device_prov_info_h dev_prov_h, void *user_data); - -/** - * @brief Callback for informing the scan AP list request. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user scans access points, sets AP list and sends it to agent. - * - * @param[in] handle The SmartThings handle - * @param[in] req_id The request ID - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_scan_ap_cb() - * @see smartthings_unset_scan_ap_cb() - */ -typedef void (*smartthings_scan_ap_cb)(smartthings_h handle, int req_id, void *user_data); - -/** - * @brief Callback for informing the stop soft AP request. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user stops soft AP. - * - * @param[in] handle The SmartThings handle - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_set_stop_soft_ap_cb() - * @see smartthings_unset_stop_soft_ap_cb() - */ -typedef void (*smartthings_stop_soft_ap_cb)(smartthings_h handle, void *user_data); - -/** - * @brief Creates a handle and connects to agent. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks The @a handle must be released using smartthings_deinitialize(). - * @remarks Ths function returns #SMARTTHINGS_ERROR_PERMISSION_DENIED\n - * if the application has no app-defined privilege for 'http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master'. - * - * @param[out] handle The SmartThings handle to be newly created on success - * @param[in] connection_status_cb The RPC connection status callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_NOT_SUPPORTED Not supported - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_deinitialize() - */ -int smartthings_initialize(smartthings_h *handle, - smartthings_connection_status_cb connection_status_cb, - void *user_data); - -/** - * @brief Deinitializes a handle and disconnects from the agent. - * @since_ses 1 - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_initialize() - */ -int smartthings_deinitialize(smartthings_h handle); - -/** - * @brief Starts SmartThings Thing operation. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_stop() - */ -int smartthings_start(smartthings_h handle); - -/** - * @brief Stops SmartThings Thing operation. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_start() - */ -int smartthings_stop(smartthings_h handle); - -/** - * @brief Sets thing status changed callback. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks Callback is called when SmartThings status is changed. - * @remarks When callback is called, user can get SmartThings status as #smartthings_status_e enumeration value. - * - * @param[in] handle The SmartThings handle - * @param[in] status_cb The status changed callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_status_changed_cb() - */ -int smartthings_set_status_changed_cb(smartthings_h handle, - smartthings_status_changed_cb status_cb, - void *user_data); - -/** - * @brief Unsets thing status changed callback. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_status_changed_cb() - */ -int smartthings_unset_status_changed_cb(smartthings_h handle); - -/** - * @brief Sets test certificate files. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks These files should be placed in 'res' directory of application. - * @remarks This function is needed only for using test certificate. - * @remarks This function can be used before smartthings_start() - * - * @param[in] handle The SmartThings handle - * @param[in] certificate The certificate file - * @param[in] private_key The private key file - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - */ -int smartthings_set_certificate_file(smartthings_h handle, const char *certificate, const char *private_key); - -/** - * @brief Sets device property for Easy-setup. - * @since_ses 1 - * - * @remarks This function can be used before smartthings_start() - * - * @param[in] handle The SmartThings handle - * @param[in] dev_name The device name - * @param[in] wifi_mode The supported Wi-Fi mode (bit masked value for #smartthings_wifi_mode_e) - * @param[in] wifi_freq The supported Wi-Fi frequency (bit masked value for #smartthings_wifi_freq_e) - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - */ -int smartthings_set_device_property(smartthings_h handle, const char* dev_name, int wifi_mode, int wifi_freq); - -/** - * @brief Gets a device ID. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks The @a device_id should be released using free(). - * - * @param[in] handle The SmartThings handle - * @param[out] device_id The device ID - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - */ -int smartthings_get_device_id(smartthings_h handle, char **device_id); - -/** - * @brief Gets a Easy-setup status. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * @param[out] is_completed The status of Easy-setup whether it is completed or not - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - */ -int smartthings_get_easysetup_status(smartthings_h handle, bool *is_completed); - -/** - * @brief Starts Easy-setup mode. - * - * @details This function requests for turning on soft AP to SmartThings Thing agent. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing \n - * %http://tizen.org/privilege/softap - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_stop_easysetup() - */ -int smartthings_start_easysetup(smartthings_h handle); - -/** - * @brief Stops Easy-setup mode. - * - * @details This function requests for turning off soft AP to SmartThings Thing agent. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing \n - * %http://tizen.org/privilege/softap - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_start_easysetup() - */ -int smartthings_stop_easysetup(smartthings_h handle); - -/** - * @brief Sets callback for getting user confirmation for mutual verification based just work ownership transfer. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks Callback is called when it needs user's confirm for mutual verification based just work ownership transfer. - * @remarks When callback is called, user can send a confirmation for mutual verification based just work ownership transfer as true or false. - * - * @param[in] handle The SmartThings handle - * @param[in] confirm_cb The user confirm callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_user_confirm_cb() - */ -int smartthings_set_user_confirm_cb(smartthings_h handle, - smartthings_user_confirm_cb confirm_cb, - void *user_data); - -/** - * @brief Unsets user confirmation callback. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_user_confirm_cb() - */ -int smartthings_unset_user_confirm_cb(smartthings_h handle); - -/** - * @brief Sets reset confirmation callback. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks Callback is called when it needs user's confirm for reset. - * @remarks When callback is called, user can send a confirmation for reset as true or false. - * - * @param[in] handle The SmartThings handle - * @param[in] confirm_cb The reset confirm callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_reset_confirm_cb() - */ -int smartthings_set_reset_confirm_cb(smartthings_h handle, - smartthings_reset_confirm_cb confirm_cb, - void *user_data); - -/** - * @brief Unsets reset confirmation callback. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_reset_confirm_cb() - */ -int smartthings_unset_reset_confirm_cb(smartthings_h handle); - -/** - * @brief Sets reset result callback. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks Callback is called when reset operation returns its result. - * @remarks When callback is called, user can check reset operation succeeds or fails. - * - * @param[in] handle The SmartThings handle - * @param[in] reset_result_cb The reset result callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_reset_result_cb() - */ -int smartthings_set_reset_result_cb(smartthings_h handle, - smartthings_reset_result_cb reset_result_cb, - void *user_data); - -/** - * @brief Unsets reset result callback. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_reset_result_cb() - */ -int smartthings_unset_reset_result_cb(smartthings_h handle); - - -/** - * @brief Sets callback for getting randomly generated PIN for the PIN-based ownership transfer request. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks @a generated_cb callback is called when PIN is generated. - * @remarks @a close_cb callback is called when PIN based ownership transfer is finished. - * @remarks When @a generated_cb callback is called, user can see PIN value and length. - * @remarks When @a close_cb callback is called, user can know PIN based ownership transfer is finished. - * - * @param[in] handle The SmartThings handle - * @param[in] generated_cb The PIN generation callback to register - * @param[in] close_cb The PIN display close callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_pin_cb() - */ -int smartthings_set_pin_cb(smartthings_h handle, - smartthings_pin_generated_cb generated_cb, - smartthings_pin_display_close_cb close_cb, - void *user_data); - -/** - * @brief Unsets PIN callback. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_pin_cb() - */ -int smartthings_unset_pin_cb(smartthings_h handle); - -/** - * @brief Sets callback for getting Wi-Fi AP information during Easy-setup. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks Callback is called when Wi-Fi provisioning event occurs. - * @remarks When callback is called, user can get Wi-Fi provisioning information. - * - * @param[in] handle The SmartThings handle - * @param[in] wifi_ap_cb The Wi-Fi AP callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_wifi_ap_provisioning_cb() - */ -int smartthings_set_wifi_ap_provisioning_cb(smartthings_h handle, - smartthings_wifi_ap_provisioning_cb wifi_ap_cb, - void *user_data); - -/** - * @brief Unsets callback for getting Wi-Fi AP information during Easy-setup. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_wifi_ap_provisioning_cb() - */ -int smartthings_unset_wifi_ap_provisioning_cb(smartthings_h handle); - -/** - * @brief Sets callback for getting device provisioning information. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks Callback is called when device provisioning event occurs. - * @remarks When callback is called, user can get device provisioning information. - * - * @param[in] handle The SmartThings handle - * @param[in] dev_prov_cb The device provisioning callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_device_provisioning_cb() - */ -int smartthings_set_device_provisioning_cb(smartthings_h handle, - smartthings_device_provisioning_cb dev_prov_cb, - void *user_data); - -/** - * @brief Unsets callback for getting device provisioning information. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_device_provisioning_cb() - */ -int smartthings_unset_device_provisioning_cb(smartthings_h handle); - -/** - * @brief Sets callback for informing the scan AP list request. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks Callback is called when GET request for access point list. - * @remarks When callback is called, user scans access points, sets AP list and sends it to agent. - * - * @param[in] handle The SmartThings handle - * @param[in] scan_ap_cb The callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_scan_ap_cb() - * @see smartthings_send_ap_list() - */ -int smartthings_set_scan_ap_cb(smartthings_h handle, - smartthings_scan_ap_cb scan_ap_cb, - void *user_data); - -/** - * @brief Unsets callback for informing the scan AP list request. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_scan_ap_cb() - */ -int smartthings_unset_scan_ap_cb(smartthings_h handle); - -/** - * @brief Sets callback for informing the stop soft AP request. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @remarks Only one callback function can be set with this function. - * @remarks If multiple callbacks are set, the last one is registered only. - * @remarks Callback is called when POST request for stopping soft AP. - * @remarks When callback is called, user stops soft AP. - * - * @param[in] handle The SmartThings handle - * @param[in] stop_soft_ap_cb The callback to register - * @param[in] user_data The user data to be passed to the callback function - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_unset_stop_soft_ap_cb() - */ -int smartthings_set_stop_soft_ap_cb(smartthings_h handle, - smartthings_stop_soft_ap_cb stop_soft_ap_cb, - void *user_data); - -/** - * @brief Unsets callback for informing the stop soft AP request. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_stop_soft_ap_cb() - */ -int smartthings_unset_stop_soft_ap_cb(smartthings_h handle); - -/** - * @brief Sends a user confirmation for MUTUAL VERIFICATION BASED JUST WORK Ownership transfer. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing \n - * %http://tizen.org/privilege/internet - * - * @param[in] handle The SmartThings handle - * @param[in] confirm The user confirmation for OTM(ownership transfer method) - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_user_confirm_cb() - * @see smartthings_unset_user_confirm_cb() - */ -int smartthings_send_user_confirm(smartthings_h handle, bool confirm); - - -/** - * @brief Sends a reset confirmation. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing \n - * %http://tizen.org/privilege/internet - * - * @param[in] handle The SmartThings handle - * @param[in] confirm The reset confirmation - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_reset_confirm_cb() - * @see smartthings_unset_reset_confirm_cb() - */ -int smartthings_send_reset_confirm(smartthings_h handle, bool confirm); - -/** - * @brief Sends a reset command for resetting the device's Cloud signup and Easy-setup. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing \n - * %http://tizen.org/privilege/internet - * - * @param[in] handle The SmartThings handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_set_reset_result_cb() - * @see smartthings_unset_reset_result_cb() - */ -int smartthings_reset(smartthings_h handle); - -/** - * @brief Gets SSID of access point. - * @since_ses 1 - * - * @remarks The @a ssid should be released using free(). - * - * @param[in] ap_info_h The SmartThings AP information handle - * @param[out] ssid The SSID name - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_set_wifi_ap_provisioning_cb() - * @see smartthings_unset_wifi_ap_provisioning_cb() - */ -int smartthings_apinfo_get_ssid(smartthings_ap_info_h ap_info_h, char **ssid); - -/** - * @brief Gets password of access point. - * @since_ses 1 - * - * @remarks The @a pwd should be released using free(). - * - * @param[in] ap_info_h The SmartThings AP information handle - * @param[out] pwd The password - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_set_wifi_ap_provisioning_cb() - * @see smartthings_unset_wifi_ap_provisioning_cb() - */ -int smartthings_apinfo_get_password(smartthings_ap_info_h ap_info_h, char **pwd); - -/** - * @brief Gets authentification type of access point. - * @since_ses 1 - * - * @param[in] ap_info_h The SmartThings AP information handle - * @param[out] authtype The authentification type - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_set_wifi_ap_provisioning_cb() - * @see smartthings_unset_wifi_ap_provisioning_cb() - */ -int smartthings_apinfo_get_authtype(smartthings_ap_info_h ap_info_h, smartthings_wifi_authtype_e *authtype); - -/** - * @brief Gets encryption type of access point. - * @since_ses 1 - * - * @param[in] ap_info_h The SmartThings AP information handle - * @param[out] enctype The encryption type - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_set_wifi_ap_provisioning_cb() - * @see smartthings_unset_wifi_ap_provisioning_cb() - */ -int smartthings_apinfo_get_enctype(smartthings_ap_info_h ap_info_h, smartthings_wifi_enctype_e *enctype); - -/** - * @brief Gets channel information of access point. - * @since_ses 1 - * - * @param[in] ap_info_h The SmartThings AP information handle - * @param[out] channel The frequency channel - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_set_wifi_ap_provisioning_cb() - * @see smartthings_unset_wifi_ap_provisioning_cb() - */ -int smartthings_apinfo_get_channel(smartthings_ap_info_h ap_info_h, int *channel); - -/** - * @brief Gets language of device provisioing information. - * @since_ses 1 - * - * @remarks The @a language should be released using free(). - * - * @param[in] dev_prov_h The SmartThings device provisioning information handle - * @param[out] language The IETF language tag using ISO 639X - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_set_device_provisioning_cb() - * @see smartthings_unset_device_provisioning_cb() - */ -int smartthings_devinfo_get_language(smartthings_device_prov_info_h dev_prov_h, char **language); - -/** - * @brief Gets country of device provisioing information. - * @since_ses 1 - * - * @remarks The @a country should be released using free(). - * - * @param[in] dev_prov_h The SmartThings device provisioning information handle - * @param[out] country The ISO Country Code (ISO 3166-1 Alpha-2) - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_set_device_provisioning_cb() - * @see smartthings_unset_device_provisioning_cb() - */ -int smartthings_devinfo_get_country(smartthings_device_prov_info_h dev_prov_h, char **country); - -/** - * @brief Gets datetime of device provisioing information. - * @since_ses 1 - * - * @remarks The @a datetime should be released using free(). - * - * @param[in] dev_prov_h The SmartThings device provisioning information handle - * @param[out] datetime The date and time - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * - * @see smartthings_set_device_provisioning_cb() - * @see smartthings_unset_device_provisioning_cb() - */ -int smartthings_devinfo_get_datetime(smartthings_device_prov_info_h dev_prov_h, char **datetime); - -/** - * @brief Creates a SmartThings AP list handle. - * @since_ses 1 - * - * @remarks The @a ap_list_h must be released using smartthings_aplist_destroy(). - * - * @param[out] ap_list_h The SmartThings AP list handle to be newly created on success - * @param[in] count The count of AP - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory - * - * @see smartthings_aplist_destroy() - */ -int smartthings_aplist_create(smartthings_ap_list_h *ap_list_h, unsigned int count); - -/** - * @brief Destroys a SmartThings AP list handle. - * @since_ses 1 - * - * @param[in] ap_list_h The SmartThings AP list handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_aplist_create() - */ -int smartthings_aplist_destroy(smartthings_ap_list_h ap_list_h); - -/** - * @brief Sets SSID at the specific index of AP list handle. - * @since_ses 1 - * - * @param[in] ap_list_h The SmartThings AP list handle - * @param[in] idx The index - * @param[in] ssid The SSID of AP - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_aplist_create() - * @see smartthings_aplist_destroy() - */ -int smartthings_aplist_set_ssid(smartthings_ap_list_h ap_list_h, int idx, const char *ssid); - -/** - * @brief Sets BSSID at the specific index of AP list handle. - * @since_ses 1 - * - * @param[in] ap_list_h The SmartThings AP list handle - * @param[in] idx The index - * @param[in] bssid The BSSID of AP - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_aplist_create() - * @see smartthings_aplist_destroy() - */ -int smartthings_aplist_set_bssid(smartthings_ap_list_h ap_list_h, int idx, const char *bssid); - -/** - * @brief Sets authentification type at the specific index of AP list handle. - * @since_ses 1 - * - * @param[in] ap_list_h The SmartThings AP list handle - * @param[in] idx The index - * @param[in] authtype The authentification type of AP - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_aplist_create() - * @see smartthings_aplist_destroy() - */ -int smartthings_aplist_set_authtype(smartthings_ap_list_h ap_list_h, int idx, smartthings_wifi_authtype_e authtype); - -/** - * @brief Sets encryption type at the specific index of AP list handle. - * @since_ses 1 - * - * @param[in] ap_list_h The SmartThings AP list handle - * @param[in] idx The index - * @param[in] enctype The encryption type of AP - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_aplist_create() - * @see smartthings_aplist_destroy() - */ -int smartthings_aplist_set_enctype(smartthings_ap_list_h ap_list_h, int idx, smartthings_wifi_enctype_e enctype); - -/** - * @brief Sets frequency channel at the specific index of AP list handle. - * @since_ses 1 - * - * @param[in] ap_list_h The SmartThings AP list handle - * @param[in] idx The index - * @param[in] channel The frequency channel of AP - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_aplist_create() - * @see smartthings_aplist_destroy() - */ -int smartthings_aplist_set_channel(smartthings_ap_list_h ap_list_h, int idx, int channel); - -/** - * @brief Sets signal level at the specific index of AP list handle. - * @since_ses 1 - * - * @param[in] ap_list_h The SmartThings AP list handle - * @param[in] idx The index - * @param[in] signal_level The signal level of AP - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_aplist_create() - * @see smartthings_aplist_destroy() - */ -int smartthings_aplist_set_signal_level(smartthings_ap_list_h ap_list_h, int idx, int signal_level); - -/** - * @brief Sets max speed rate at the specific index of AP list handle. - * @since_ses 1 - * - * @param[in] ap_list_h The SmartThings AP list handle - * @param[in] idx The index - * @param[in] max_rate The max speed rate of AP - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_aplist_create() - * @see smartthings_aplist_destroy() - */ -int smartthings_aplist_set_max_rate(smartthings_ap_list_h ap_list_h, int idx, int max_rate); - -/** - * @brief Sends the scanned AP list. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing \n - * %http://tizen.org/privilege/internet - * - * @param[in] handle The SmartThings handle - * @param[in] ap_list_h The SmartThings AP list handle - * @param[in] req_id The request ID - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - * - * @see smartthings_aplist_create() - * @see smartthings_aplist_destroy() - * @see smartthings_set_scan_ap_cb() - */ -int smartthings_send_ap_list(smartthings_h handle, smartthings_ap_list_h ap_list_h, int req_id); - -/** - * @brief Creates a SmartThings cloud information handle. - * @since_ses 1 - * - * @remarks The @a cloud_info_h must be released using smartthings_cloudinfo_destroy(). - * - * @param[out] cloud_info_h The SmartThings cloud information handle to be newly created on success - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory - * - * @see smartthings_cloudinfo_destroy() - */ -int smartthings_cloudinfo_create(smartthings_cloud_info_h *cloud_info_h); - -/** - * @brief Destroys a SmartThings cloud information handle. - * @since_ses 1 - * - * @param[in] cloud_info_h The SmartThings cloud information handle - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see smartthings_cloudinfo_create() - */ -int smartthings_cloudinfo_destroy(smartthings_cloud_info_h cloud_info_h); - -/** - * @brief Sets region of cloud information. - * @since_ses 1 - * - * @remarks The @a region can be set to one of "global" or "china". - * @remarks If it doesn't use this function, the @a region will be set to "global" internally. - * - * @param[in] cloud_info_h The SmartThings cloud information handle - * @param[in] region The region name - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - */ -int smartthings_cloudinfo_set_region(smartthings_cloud_info_h cloud_info_h, const char *region); - -/** - * @brief Sets authentification provider of cloud information. - * @since_ses 1 - * - * @param[in] cloud_info_h The SmartThings cloud information handle - * @param[in] auth_provider The authentification provider - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - */ -int smartthings_cloudinfo_set_auth_provider(smartthings_cloud_info_h cloud_info_h, const char *auth_provider); - -/** - * @brief Sets access token of cloud information. - * @since_ses 1 - * - * @param[in] cloud_info_h The SmartThings cloud information handle - * @param[in] access_token The access token - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - */ -int smartthings_cloudinfo_set_access_token(smartthings_cloud_info_h cloud_info_h, const char *access_token); - -/** - * @brief Sets refresh token of cloud information. - * @since_ses 1 - * - * @param[in] cloud_info_h The SmartThings cloud information handle - * @param[in] refresh_token The refresh token - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - */ -int smartthings_cloudinfo_set_refresh_token(smartthings_cloud_info_h cloud_info_h, const char *refresh_token); - -/** - * @brief Sets user ID of cloud information. - * @since_ses 1 - * - * @param[in] cloud_info_h The SmartThings cloud information handle - * @param[in] user_id The user ID - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - */ -int smartthings_cloudinfo_set_user_id(smartthings_cloud_info_h cloud_info_h, const char *user_id); - -/** - * @brief Sets client ID of cloud information. - * @since_ses 1 - * - * @param[in] cloud_info_h The SmartThings cloud information handle - * @param[in] client_id The client ID - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - */ -int smartthings_cloudinfo_set_client_id(smartthings_cloud_info_h cloud_info_h, const char *client_id); - -/** - * @brief Requests to sign up to cloud. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing \n - * %http://tizen.org/privilege/internet - * - * @param[in] handle The SmartThings handle - * @param[in] cloud_info_h The handle for cloud signup - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - */ -int smartthings_sign_up_cloud(smartthings_h handle, smartthings_cloud_info_h cloud_info_h); - -/** - * @brief Sets preconfigured PIN. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * @param[in] pin The PIN code to preconfigure - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - */ -int smartthings_set_preconfigured_pin(smartthings_h handle, const char* pin); - -/** - * @brief Sets MOT(multiple ownership transfer) status. - * @since_ses 1 - * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n - * %http://tizen.org/privilege/appmanager.launch \n - * %http://tizen.org/privilege/datasharing - * - * @param[in] handle The SmartThings handle - * @param[in] enable The MOT(multiple ownership transfer) status - * - * @return @c 0 on success, - * otherwise a negative error value - * @retval #SMARTTHINGS_ERROR_NONE Successful - * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied - * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed - * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable - */ -int smartthings_set_mot_status(smartthings_h handle, bool enable); - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__ */ diff --git a/inc/smartthings_payload.h b/inc/smartthings_payload.h deleted file mode 100644 index 988585d..0000000 --- a/inc/smartthings_payload.h +++ /dev/null @@ -1,663 +0,0 @@ -/***************************************************************** - * - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - - -#ifndef __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_PAYLOAD_H__ -#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_PAYLOAD_H__ - -#include <stdio.h> -#include <stdlib.h> -#include <stdbool.h> - -#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 deleted file mode 100644 index 1968c50..0000000 --- a/inc/smartthings_resource.h +++ /dev/null @@ -1,364 +0,0 @@ -/***************************************************************** - * - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - - -#ifndef __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_RESOURCE_H__ -#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_RESOURCE_H__ - -#include <stdio.h> -#include <stdlib.h> -#include <stdbool.h> -#include <tizen.h> -#include <smartthings_payload.h> - -#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. - * @since_ses 1 - * - * @remarks The @a handle should not be released. - * @remarks The @a handle is the same object for which the callback was set/added. - * @remarks The @a handle will be released when smartthings_deinitialize() is called. - * @remarks When callback is called, user can see connection status as #smartthings_connection_status_e enumeration value. - * - * @param[in] result The result of connection operation - * @param[in] handle The SmartThings handle - * @param[in] status The status of connection - * @param[in] user_data The user data passed from the callback registration function - * - * @see smartthings_resource_initialize() - */ -typedef void (*smartthings_resource_connection_status_cb)(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/lib/libst_thing_master_api.so b/lib/libst_thing_master_api.so Binary files differdeleted file mode 100644 index aef594a..0000000 --- a/lib/libst_thing_master_api.so +++ /dev/null diff --git a/lib/libst_thing_resource_api.so b/lib/libst_thing_resource_api.so Binary files differdeleted file mode 100644 index 245093f..0000000 --- a/lib/libst_thing_resource_api.so +++ /dev/null diff --git a/project_def.prop b/project_def.prop deleted file mode 100644 index b6a64c2..0000000 --- a/project_def.prop +++ /dev/null @@ -1,11 +0,0 @@ -APPNAME = smart-light - -type = app -profile = iot-headed-5.0 - -USER_SRCS = src/smart-light.c -USER_DEFS = -USER_INC_DIRS = inc -USER_OBJS = -USER_LIBS = lib/libst_thing_master_api.so, lib/libst_thing_resource_api.so -USER_EDCS = diff --git a/shared/res/master.json b/shared/res/master.json deleted file mode 100644 index 7d27d0f..0000000 --- a/shared/res/master.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "devices": [ - { - "deviceType": "oic.d.light", - "deviceName": "***Your Device Name***", - "mnid": "***Your MNID***", - "vid": "***Your Vendor ID***" - } - ], - "configuration": { - "easySetup": { - "mode": 1, - "setupId": "***Your Setup ID***" - }, - "otm": 2, - "crtType": 1 - } -}
\ No newline at end of file diff --git a/shared/res/motion.png b/shared/res/motion.png Binary files differdeleted file mode 100644 index 9765b1b..0000000 --- a/shared/res/motion.png +++ /dev/null diff --git a/shared/res/resource.json b/shared/res/resource.json deleted file mode 100644 index 14d7ba5..0000000 --- a/shared/res/resource.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "resources": { - "single": [ - { - "uri": "/capability/motionSensor/main/0", - "types": [ - "oic.r.sensor.motion" - ], - "interfaces": [ - "oic.if.s", - "oic.if.baseline" - ] - }, - { - "uri": "/capability/switch/main/0", - "types": [ - "x.com.st.powerswitch" - ], - "interfaces": [ - "oic.if.a", - "oic.if.baseline" - ] - } - ] - }, - "resourceTypes": [ - { - "type": "oic.r.sensor.motion", - "properties": [ - { - "key": "value", - "type": "boolean", - "readOnly": 1, - "mandatory": false, - "isArray": false - } - ] - }, - { - "type": "x.com.st.powerswitch", - "properties": [ - { - "key": "power", - "type": "string", - "readOnly": 3, - "mandatory": true, - "isArray": false - } - ] - } - ] -}
\ No newline at end of file diff --git a/src/controller.c b/src/controller.c deleted file mode 100755 index b8d8985..0000000 --- a/src/controller.c +++ /dev/null @@ -1,645 +0,0 @@ -/* - * 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. - */ - -#include <tizen.h> -#include <service_app.h> -#include <string.h> -#include <stdlib.h> -#include <stdint.h> -#include <Ecore.h> - -#include "log.h" -#include "resource/resource_infrared_motion_sensor.h" -#include "resource/resource_led.h" - -// Timer duration -#define TIMER_GATHER_INTERVAL (5.0f) - -// Motion sensor information -#define SENSOR_MOTION_GPIO_NUMBER (46) - -// LED sensor information -#define SENSOR_LED_GPIO_NUMBER (130) -#define SENSOR_LED_ON "on" -#define SENSOR_LED_OFF "off" - -// For using SmartThings SDK -#define USE_ST_SDK -#ifdef USE_ST_SDK -#include "smartthings.h" -#include "smartthings_resource.h" -#include "smartthings_payload.h" - -// Certification file and private key file stored in the resource directory -#define CERT_FILE "certificate.pem" -#define PRIV_FILE "privatekey.der" - -// URI and key information -#define SENSOR_MOTION_URI "/capability/motionSensor/main/0" -#define SENSOR_MOTION_KEY "value" -#define SENSOR_LED_URI "/capability/switch/main/0" -#define SENSOR_LED_KEY "power" -#endif /* USE_ST_SDK */ - -typedef struct app_data_s { - Ecore_Timer *getter_timer; - uint32_t motion_data; - int led_data; -#ifdef USE_ST_SDK - smartthings_h st_master_h; - smartthings_resource_h st_res_h; - smartthings_status_e status; -#endif /* USE_ST_SDK */ -} app_data; - -static app_data *g_ad = NULL; - -#ifdef USE_ST_SDK -static const char * _resource_error_to_str(smartthings_resource_error_e error) -{ - 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; -} -#endif - -static Eina_Bool _get_motion_sensor_data(void *user_data) -{ - int ret = 0; - uint32_t value = 0; - app_data *ad = user_data; - - if (!ad) { - _E("failed to get app_data"); - return ECORE_CALLBACK_CANCEL; - } - - ret = resource_read_infrared_motion_sensor(SENSOR_MOTION_GPIO_NUMBER, &value); - if (ret != 0) { - _E("cannot read data from the infrared motion sensor"); - return ECORE_CALLBACK_CANCEL; - } - ad->motion_data = value; - - _D("Detected motion value is: %u", value); - -#ifdef USE_ST_SDK - int error = SMARTTHINGS_RESOURCE_ERROR_NONE; - smartthings_payload_h resp_payload = NULL; - - if (ad->status != SMARTTHINGS_STATUS_REGISTERED_TO_CLOUD) - return ECORE_CALLBACK_RENEW; - - error = smartthings_payload_create(&resp_payload); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE || !resp_payload) { - _E("smartthings_payload_create() failed, [%s]", - _resource_error_to_str(error)); - return ECORE_CALLBACK_CANCEL; - } - - error = smartthings_payload_set_bool(resp_payload, SENSOR_MOTION_KEY, (bool)ad->motion_data); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) - _E("smartthings_payload_set_bool() failed, [%s]", - _resource_error_to_str(error)); - - error = smartthings_resource_notify(ad->st_res_h, SENSOR_MOTION_URI, resp_payload); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) - _E("smartthings_resource_notify() failed, [%s]", - _resource_error_to_str(error)); - - if (smartthings_payload_destroy(resp_payload)) - _E("smartthings_payload_destroy() failed"); -#endif - - return ECORE_CALLBACK_RENEW; -} - -static int _set_led_data(app_data *ad, int state) { - int ret = 0; - - ad->led_data = state; - ret = resource_write_led(SENSOR_LED_GPIO_NUMBER, state); - if (ret != 0) { - _E("cannot write led data"); - return -1; - } - _I("LED : %d",state); - - return 0; -} - -#ifdef USE_ST_SDK -/* SmartThings resource functions */ -static bool _handle_get_motion(smartthings_payload_h resp_payload, void *user_data) -{ - int error = SMARTTHINGS_RESOURCE_ERROR_NONE; - app_data *ad = user_data; - - retv_if(!ad, false); - - _D("Received a GET request for MOTION"); - - error = smartthings_payload_set_bool(resp_payload, SENSOR_MOTION_KEY, (bool)ad->motion_data); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) - _E("smartthings_payload_set_bool() failed, [%s]", - _resource_error_to_str(error)); - - return true; -} - -static bool _handle_get_led(smartthings_payload_h resp_payload, void *user_data) -{ - app_data *ad = user_data; - int error = SMARTTHINGS_RESOURCE_ERROR_NONE; - char *str = NULL; - - retv_if(!ad, false); - - _D("Received a GET request for LED"); - - if (ad->led_data) - str = SENSOR_LED_ON; - else - str = SENSOR_LED_OFF; - - error = smartthings_payload_set_string(resp_payload, SENSOR_LED_KEY, str); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) - _E("smartthings_payload_set_string() failed, [%s]", - _resource_error_to_str(error)); - - _D("Power : %s", str); - - return true; -} - -static bool _handle_set_led(smartthings_payload_h payload, smartthings_payload_h resp_payload, void *user_data) -{ - app_data *ad = user_data; - char *str = NULL; - char *res_str = NULL; - int ret = 0; - int error = SMARTTHINGS_RESOURCE_ERROR_NONE; - - retv_if(!ad, false); - - _D("Received a SET request"); - - error = smartthings_payload_get_string(payload, SENSOR_LED_KEY, &str); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) - _E("smartthings_payload_get_string() failed, [%s]", - _resource_error_to_str(error)); - - if (strncmp(str, SENSOR_LED_ON, strlen(SENSOR_LED_ON))) { - ret = _set_led_data(ad, 0); - res_str = SENSOR_LED_OFF; - } else { - ret = _set_led_data(ad, 1); - res_str = SENSOR_LED_ON; - } - - free(str); - if (ret != 0) { - _E("cannot set LED"); - return false; - } - - error = smartthings_payload_set_string(resp_payload, SENSOR_LED_KEY, res_str); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) - _E("smartthings_payload_set_string() failed, [%s]", - _resource_error_to_str(error)); - - 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); - - error = smartthings_payload_create(&resp_payload); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE || ! resp_payload) - _E("smartthings_payload_create() failed, [%s]", - _resource_error_to_str(error)); - - if (req_type == SMARTTHINGS_RESOURCE_REQUEST_GET) { - if (!strncmp(uri, SENSOR_MOTION_URI, strlen(SENSOR_MOTION_URI))) - result = _handle_get_motion(resp_payload, user_data); - else if (!strncmp(uri, SENSOR_LED_URI, strlen(SENSOR_LED_URI))) - result = _handle_get_led(resp_payload, user_data); - else - _E("No matching Resource uri to get"); - } else if (req_type == SMARTTHINGS_RESOURCE_REQUEST_SET) { - if (!strncmp(uri, SENSOR_LED_URI, strlen(SENSOR_LED_URI))) - result = _handle_set_led(payload, resp_payload, user_data); - else - _E("No matching Resource uri to get"); - } else { - _E("Invalid request type - %d", req_type); - smartthings_payload_destroy(resp_payload); - return; - } - - error = smartthings_resource_send_response(handle, req_id, uri, resp_payload, result); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) { - _E("smartthings_resource_send_response() failed, [%s]", - _resource_error_to_str(error)); - smartthings_payload_destroy(resp_payload); - return; - } - - 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 (smartthings_payload_destroy(resp_payload)) - _E("smartthings_payload_destroy() failed"); - - return; -} - -static void _resource_connection_status_cb( - smartthings_resource_h handle, - smartthings_resource_connection_status_e status, void *user_data) -{ - app_data *ad = user_data; - - _D("status=[%d]", status); - - ret_if(!ad); - - if (status == SMARTTHINGS_RESOURCE_CONNECTION_STATUS_CONNECTED) { - int error = SMARTTHINGS_RESOURCE_ERROR_NONE; - error = smartthings_resource_set_request_cb(handle, _request_cb, ad); - if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) { - _E("smartthings_resource_set_request_cb() is failed"); - return; - } - } else { - _E("connection failed"); - } -} - -static int _init_resource(app_data *ad) -{ - smartthings_resource_h st_res_h = NULL; - int error = 0; - - 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; - - return 0; -} - -static int _fini_resource(app_data *ad) -{ - retv_if(!ad, -1); - - 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; - - return 0; -} - -/* SmartThings master functions */ -static const char *__master_error_to_str(smartthings_error_e error) -{ - 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 _user_confirm_cb(smartthings_h handle, void *user_data) -{ - if (smartthings_send_user_confirm(handle, true) != 0) - _E("smartthings_send_user_confirm() is failed"); -} - -static void _reset_confirm_cb(smartthings_h handle, void *user_data) -{ - if (smartthings_send_reset_confirm(handle, true) != 0) - _E("smartthings_send_reset_confirm() is failed"); -} - -static void _reset_result_cb(smartthings_h handle, bool result, void *user_data) -{ - _I("reset result = [%d]", result); -} - -static void _thing_status_cb( - smartthings_h handle, smartthings_status_e status, void *user_data) -{ - app_data *ad = user_data; - _D("status: [%d]", status); - ad->status = status; -} - -static void _things_connection_status_cb( - smartthings_h handle, smartthings_connection_status_e status, - void *user_data) -{ - _D("status = [%d]", status); - - if (status == SMARTTHINGS_CONNECTION_STATUS_CONNECTED) { - int err = 0; - bool is_es_completed = false; - const char* dev_name = "motion-light-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_set_device_property() is failed, [%s]", - __master_error_to_str(err)); - return; - } - - 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; - } - - 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_result_cb() is failed, [%s]", - __master_error_to_str(err)); - return; - } - - err = smartthings_set_status_changed_cb(handle, _thing_status_cb, user_data); - 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; - } - - _I("Easysetup is starting now"); - err = smartthings_start_easysetup(handle); - if (err) { - _E("smartthings_start_easysetup() is failed, [%s]", - __master_error_to_str(err)); - smartthings_stop(handle); - return; - } - } else { - _E("connection failed"); - } -} - -static int _init_master(app_data *ad) -{ - int err = 0; - smartthings_h st_handle = NULL; - - retv_if(!ad, -1); - - if (ad->st_master_h) { - _I("Already initialized!"); - return 0; - } - - err = smartthings_initialize(&st_handle, _things_connection_status_cb, ad); - if (err) { - _E("smartthings_initialize() is failed, [%s]", - __master_error_to_str(err)); - return -1; - } - - ad->st_master_h = st_handle; - - return 0; -} - -int _fini_master(app_data *ad) -{ - retv_if(!ad, -1); - - if (!ad->st_master_h) { - _I("handle is already NULL"); - return 0; - } - - 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); - - if (smartthings_deinitialize(ad->st_master_h) != 0) { - _E("smartthings_deinitialize() is failed"); - return -1; - } - ad->st_master_h = NULL; - - return 0; -} -#endif /* USE_ST_SDK */ - -static bool service_app_create(void *user_data) -{ -#ifdef USE_ST_SDK - app_data *ad = user_data; - - if (_init_master(ad)) - return false; - - if (_init_resource(ad)) { - _fini_master(ad); - return false; - } -#endif - - return true; -} - -static void service_app_control(app_control_h app_control, void *user_data) -{ - app_data *ad = user_data; - - if (ad->getter_timer) - ecore_timer_del(ad->getter_timer); - - ad->getter_timer = ecore_timer_add(TIMER_GATHER_INTERVAL, _get_motion_sensor_data, ad); - if (!ad->getter_timer) { - _E("Failed to add getter timer"); - return; - } -} - -static void service_app_terminate(void *user_data) -{ - app_data *ad = user_data; - -#ifdef USE_ST_SDK - _fini_resource(ad); - _fini_master(ad); -#endif - - // Turn off LED light with __set_led() - _set_led_data(ad, 0); - - // Close Motion and LED resources - resource_close_infrared_motion_sensor(); - resource_close_led(); - - // Free app data - free(ad); - - FN_END; -} - -int main(int argc, char *argv[]) -{ - app_data *ad = NULL; - service_app_lifecycle_callback_s event_callback; - - ad = calloc(1, sizeof(app_data)); - retv_if(!ad, -1); - - g_ad = ad; - - event_callback.create = service_app_create; - event_callback.terminate = service_app_terminate; - event_callback.app_control = service_app_control; - - return service_app_main(argc, argv, &event_callback, ad); -} diff --git a/src/resource/resource_infrared_motion_sensor.c b/src/resource/resource_infrared_motion_sensor.c deleted file mode 100755 index d0605e6..0000000 --- a/src/resource/resource_infrared_motion_sensor.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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. - */ - -#include <peripheral_io.h> - -#include "log.h" - -static peripheral_gpio_h g_sensor_h = NULL; -static int g_pin_num = -1; - -void resource_close_infrared_motion_sensor(void) -{ - if (!g_sensor_h) return; - - _I("Infrared Motion Sensor is finishing..."); - - peripheral_gpio_close(g_sensor_h); - - g_sensor_h = NULL; - g_pin_num = -1; -} - -int resource_read_infrared_motion_sensor(int pin_num, uint32_t *out_value) -{ - int ret = PERIPHERAL_ERROR_NONE; - - if (!g_sensor_h) { - peripheral_gpio_h temp = NULL; - - ret = peripheral_gpio_open(pin_num, &temp); - retv_if(ret, -1); - - ret = peripheral_gpio_set_direction(temp, PERIPHERAL_GPIO_DIRECTION_IN); - if (ret) { - peripheral_gpio_close(temp); - _E("peripheral_gpio_set_direction failed."); - return -1; - } - - g_sensor_h = temp; - g_pin_num = pin_num; - } - - if (g_pin_num != pin_num) { - _E("Invalid pin number."); - return -1; - } - - ret = peripheral_gpio_read(g_sensor_h, out_value); - retv_if(ret < 0, -1); - - return 0; -} diff --git a/src/resource/resource_led.c b/src/resource/resource_led.c deleted file mode 100755 index 242cf73..0000000 --- a/src/resource/resource_led.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * 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. - */ - -#include <peripheral_io.h> - -#include "log.h" - -static peripheral_gpio_h g_sensor_h = NULL; -static int g_pin_num = -1; - -void resource_close_led(void) -{ - if (!g_sensor_h) return; - - _I("LED is finishing..."); - - peripheral_gpio_close(g_sensor_h); - - g_sensor_h = NULL; - g_pin_num = -1; -} - -int resource_write_led(int pin_num, int write_value) -{ - int ret = PERIPHERAL_ERROR_NONE; - - if (!g_sensor_h) { - peripheral_gpio_h temp = NULL; - - ret = peripheral_gpio_open(pin_num, &temp); - retv_if(ret, -1); - - ret = peripheral_gpio_set_direction(temp, PERIPHERAL_GPIO_DIRECTION_OUT_INITIALLY_LOW); - if (ret) { - peripheral_gpio_close(temp); - _E("peripheral_gpio_set_direction failed."); - return -1; - } - - g_sensor_h = temp; - g_pin_num = pin_num; - } - - if (g_pin_num != pin_num) { - _E("Invalid pin number."); - return -1; - } - - ret = peripheral_gpio_write(g_sensor_h, write_value); - retv_if(ret < 0, -1); - - _I("LED Value : %s", write_value ? "ON":"OFF"); - - return 0; -} diff --git a/tizen-manifest.xml b/tizen-manifest.xml deleted file mode 100644 index 83d5397..0000000 --- a/tizen-manifest.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.example.smart-light" version="1.0.0"> - <profile name="iot-headed"/> - <service-application appid="org.example.smart-light" exec="smart-light" multiple="false" nodisplay="true" on-boot="true" taskmanage="false" type="capp"> - <label>smart-light</label> - <icon>smart-light.png</icon> - <metadata key="http://tizen.org/iot/metadata/master" value="shared/res/master.json"/> - <metadata key="http://tizen.org/iot/metadata/resource" value="shared/res/resource.json"/> - <background-category value="background-network"/> - <background-category value="iot-communication"/> - </service-application> - <privileges> - <privilege>http://tizen.org/privilege/appmanager.launch</privilege> - <privilege>http://tizen.org/privilege/softap</privilege> - <privilege>http://tizen.org/privilege/internet</privilege> - <privilege>http://tizen.org/privilege/datasharing</privilege> - <privilege>http://tizen.org/privilege/peripheralio</privilege> - <appdefined-privilege>http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource</appdefined-privilege> - <appdefined-privilege>http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master</appdefined-privilege> - </privileges> -</manifest> |