diff options
author | Boyeon <boyeon.son@samsung.com> | 2019-08-14 21:33:19 +0900 |
---|---|---|
committer | Boyeon <boyeon.son@samsung.com> | 2019-08-21 17:40:44 +0900 |
commit | 167afb497c6ab6109c00ac87bb5cce0c8f42138c (patch) | |
tree | 2f235e143d4398eed22c81625fa692a4f8a03eb6 | |
parent | be10d13b9edcf00e9ff5ab347de34063d86491d8 (diff) | |
download | st-things-light-167afb497c6ab6109c00ac87bb5cce0c8f42138c.tar.gz st-things-light-167afb497c6ab6109c00ac87bb5cce0c8f42138c.tar.bz2 st-things-light-167afb497c6ab6109c00ac87bb5cce0c8f42138c.zip |
Init basic-interrupted branch
10: Debug the app to be launched without failure
11: Change names of some variables
12/13: Create resource_infrared_motion_interrupted_data
14: Change how the interrupted_data is freed
15: Change the logic for interrupted_cb
Change-Id: I2c97a4469f55458cdeab234670e993690e2622ce
-rw-r--r-- | .project | 2 | ||||
-rwxr-xr-x | inc/resource/resource_infrared_motion.h | 64 | ||||
-rwxr-xr-x | inc/resource/resource_infrared_motion_sensor.h | 34 | ||||
-rwxr-xr-x | inc/resource/resource_led.h | 6 | ||||
-rw-r--r-- | inc/smartthings.h | 1656 | ||||
-rw-r--r-- | inc/smartthings_payload.h | 663 | ||||
-rw-r--r-- | inc/smartthings_resource.h | 364 | ||||
-rwxr-xr-x | src/controller.c | 61 | ||||
-rwxr-xr-x | src/resource/resource_infrared_motion.c | 169 | ||||
-rwxr-xr-x | src/resource/resource_infrared_motion_sensor.c | 66 |
10 files changed, 251 insertions, 2834 deletions
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <projectDescription> - <name>smart-light-basic</name> + <name>smart-light-basic-interrupt</name> <comment></comment> <projects> </projects> diff --git a/inc/resource/resource_infrared_motion.h b/inc/resource/resource_infrared_motion.h new file mode 100755 index 0000000..993a973 --- /dev/null +++ b/inc/resource/resource_infrared_motion.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __RESOURCE_INFRARED_MOTION_H__ +#define __RESOURCE_INFRARED_MOTION_H__ + +typedef enum { + PERIPHERAL_HANDLE_ERROR_NONE = 0, /**< Successful */ + PERIPHERAL_HANDLE_ERROR_NOT_OPEN, + PERIPHERAL_HANDLE_ERROR_INVALID_PIN +} peripheral_handle_error_e; + +typedef void (*resource_infrared_motion_interrupted_cb) (uint32_t motion_value, void *user_data); + +typedef struct resource_infrared_motion_interrupted_data_s { + resource_infrared_motion_interrupted_cb interrupted_cb; + void *interrupted_cb_user_data; + uint32_t motion_value; + int is_called_first_time; +} resource_infrared_motion_interrupted_data; + +/** + * @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(int pin_num, uint32_t *out_value); + +/** + * @brief Releases the gpio handle + */ +extern void resource_close_infrared_motion(void); + +/** + * @brief Sets an interrupted callback to be invoked when interrupt is triggered on motion sensor + * @param[in] pin_num The gpio pin number for the infrared motion sensor + * @param[in] interrupted_cb interrupted user callback to be invoked + * @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_set_interrupted_cb_infrared_motion(int pin_num, resource_infrared_motion_interrupted_cb interrupted_cb, void *user_data); + +/** + * @brief Unsets the interrupted callback for motion sensor + * @param[in] pin_num The gpio pin number for the infrared motion sensor + */ +extern int resource_unset_interrupted_cb_infrared_motion(int pin_num); + +#endif /* __RESOURCE_INFRARED_MOTION_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 index 1a81a18..4adf22f 100755 --- a/inc/resource/resource_led.h +++ b/inc/resource/resource_led.h @@ -14,8 +14,8 @@ * limitations under the License. */ -#ifndef __POSITION_FINDER_RESOURCE_LED_H__ -#define __POSITION_FINDER_RESOURCE_LED_H__ +#ifndef __RESOURCE_LED_H__ +#define __RESOURCE_LED_H__ /** * @brief Writes value of gpio connected led light @@ -31,4 +31,4 @@ extern int resource_write_led(int pin_num, int write_value); */ extern void resource_close_led(void); -#endif /* __POSITION_FINDER_RESOURCE_LED_H__ */ +#endif /* __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/src/controller.c b/src/controller.c index bbb2110..83d2f25 100755 --- a/src/controller.c +++ b/src/controller.c @@ -22,7 +22,7 @@ #include <Ecore.h> #include "log.h" -#include "resource/resource_infrared_motion_sensor.h" +#include "resource/resource_infrared_motion.h" #include "resource/resource_led.h" // Timer duration @@ -34,10 +34,6 @@ // LED sensor information #define SENSOR_LED_GPIO_NUMBER (24) -typedef struct app_data_s { - Ecore_Timer *getter_timer; -} app_data; - static int _change_led_state(int state) { int ret = 0; @@ -52,31 +48,17 @@ static int _change_led_state(int state) { return 0; } -static Eina_Bool _get_motion_set_led() +static void motion_interrupted_cb(uint32_t motion_value, void *user_data) { - int ret = 0; - uint32_t value = 0; - - if (!ad) { - _E("failed to get app_data"); - return ECORE_CALLBACK_CANCEL; - } - - // Get value from motion sensor - 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; - } - - _D("Detected motion value is: %u", value); + _D("Detected motion value is: %u", motion_value); // Set LED light with value - _change_led_state(value); + _change_led_state(motion_value); - return ECORE_CALLBACK_RENEW; + return; } + static bool service_app_create(void *user_data) { return true; @@ -84,52 +66,37 @@ static bool service_app_create(void *user_data) static void service_app_control(app_control_h app_control, void *user_data) { - app_data *ad = user_data; - - // Delete old timer if there is one - if (ad->getter_timer) - ecore_timer_del(ad->getter_timer); + int ret = 0; - // Create a timer to call the given function in given period of time - ad->getter_timer = ecore_timer_add(TIMER_GATHER_INTERVAL, _get_motion_set_led, ad); - if (!ad->getter_timer) { - _E("Failed to add getter timer"); + // Set an interrupted user callback to be invoked when interrupt is triggered on motion sensor + ret = resource_set_interrupted_cb_infrared_motion(SENSOR_MOTION_GPIO_NUMBER, motion_interrupted_cb, NULL); + if (ret != 0) { + _E("cannot set interrupted callback for motion sensor"); return; } } static void service_app_terminate(void *user_data) { - app_data *ad = user_data; - - // Delete timer - if (ad->getter_timer) - ecore_timer_del(ad->getter_timer); + resource_unset_interrupted_cb_infrared_motion(SENSOR_MOTION_GPIO_NUMBER); // Turn off LED light with __set_led() _change_led_state(0); // Close Motion and LED resources - resource_close_infrared_motion_sensor(); + resource_close_infrared_motion(); 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); - 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); + return service_app_main(argc, argv, &event_callback, NULL); } diff --git a/src/resource/resource_infrared_motion.c b/src/resource/resource_infrared_motion.c new file mode 100755 index 0000000..2879221 --- /dev/null +++ b/src/resource/resource_infrared_motion.c @@ -0,0 +1,169 @@ +/* + * 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 <stdlib.h> + +#include "resource/resource_infrared_motion.h" +#include "log.h" + +static peripheral_gpio_h g_sensor_h = NULL; +static int g_pin_num = -1; +static resource_infrared_motion_interrupted_data *g_interrupted_data = NULL; + +int _resource_validate_infrared_motion(int pin_num) +{ + int ret = PERIPHERAL_HANDLE_ERROR_NONE; + + if (!g_sensor_h) + { + ret = PERIPHERAL_HANDLE_ERROR_NOT_OPEN; + } else if (g_pin_num != pin_num) { + ret = PERIPHERAL_HANDLE_ERROR_INVALID_PIN; + } + + return ret; +} + +int resource_open_infrared_motion(int pin_num) +{ + peripheral_gpio_h temp = NULL; + + int ret = peripheral_gpio_open(pin_num, &temp); + if (ret) { + peripheral_gpio_close(temp); + _E("peripheral_gpio_open failed."); + return -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; + + return 0; +} + +int resource_read_infrared_motion(int pin_num, uint32_t *out_value) +{ + int ret = PERIPHERAL_ERROR_NONE; + + if (_resource_validate_infrared_motion(pin_num) == PERIPHERAL_HANDLE_ERROR_NOT_OPEN) { + resource_open_infrared_motion(pin_num); + } + if (_resource_validate_infrared_motion(pin_num) == PERIPHERAL_HANDLE_ERROR_INVALID_PIN) { + _E("Invalid pin number."); + return -1; + } + + ret = peripheral_gpio_read(g_sensor_h, out_value); + retv_if(ret < 0, -1); + + return 0; +} + +void resource_close_infrared_motion(void) +{ + if (!g_sensor_h) return; + + _I("Infrared Motion Sensor is finishing..."); + + peripheral_gpio_close(g_sensor_h); + + if (g_interrupted_data != NULL) { + free(g_interrupted_data); + g_interrupted_data = NULL; + } + g_sensor_h = NULL; + g_pin_num = -1; +} + +void _resoucre_motion_interrupted_cb (peripheral_gpio_h gpio, peripheral_error_e error, void *user_data) +{ + if (!g_sensor_h) return; + + if (g_interrupted_data->is_called_first_time) { + error = peripheral_gpio_read(g_sensor_h, &g_interrupted_data->motion_value); + if (error) { + return; + } + + g_interrupted_data->is_called_first_time = 0; + } else { + // toggle g_interrupted_data->motion_value + g_interrupted_data->motion_value = !g_interrupted_data->motion_value; + } + + g_interrupted_data->interrupted_cb(g_interrupted_data->motion_value, g_interrupted_data->interrupted_cb_user_data); +} + +int resource_set_interrupted_cb_infrared_motion(int pin_num, resource_infrared_motion_interrupted_cb interrupted_cb, void *user_data) +{ + int ret = PERIPHERAL_ERROR_NONE; + if (g_interrupted_data == NULL) { + g_interrupted_data = calloc(1, sizeof(resource_infrared_motion_interrupted_data)); + } + + if (_resource_validate_infrared_motion(pin_num) == PERIPHERAL_HANDLE_ERROR_NOT_OPEN) { + resource_open_infrared_motion(pin_num); + } + if (_resource_validate_infrared_motion(pin_num) == PERIPHERAL_HANDLE_ERROR_INVALID_PIN) { + _E("Invalid pin number."); + return -1; + } + + g_interrupted_data->interrupted_cb = interrupted_cb; + g_interrupted_data->interrupted_cb_user_data = user_data; + g_interrupted_data->motion_value = 0; + g_interrupted_data->is_called_first_time = 1; + + ret = peripheral_gpio_set_edge_mode(g_sensor_h, PERIPHERAL_GPIO_EDGE_BOTH); + retv_if(ret < 0, -1); + + ret = peripheral_gpio_set_interrupted_cb(g_sensor_h, _resoucre_motion_interrupted_cb, g_interrupted_data); + retv_if(ret < 0, -1); + + return 0; +} + +int resource_unset_interrupted_cb_infrared_motion(int pin_num) +{ + int ret = PERIPHERAL_ERROR_NONE; + + if (g_interrupted_data != NULL) { + free(g_interrupted_data); + g_interrupted_data = NULL; + } + + if (_resource_validate_infrared_motion(pin_num) == PERIPHERAL_HANDLE_ERROR_NOT_OPEN) { + _E("No open handle."); + return -1; + } + else if (_resource_validate_infrared_motion(pin_num) == PERIPHERAL_HANDLE_ERROR_INVALID_PIN) { + _E("Invalid pin number."); + return -1; + } + + ret = peripheral_gpio_unset_interrupted_cb(g_sensor_h); + retv_if(ret < 0, -1); + + return 0; +} 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; -} |