summaryrefslogtreecommitdiff
path: root/include/feedback.h
blob: 1309165ce7e23f68d47af83d0039dfd4cc6f898b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
/*
 * libfeedback
 * Copyright (c) 2012 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 __FEEDBACK_H__
#define __FEEDBACK_H__

#include <tizen.h>
#include <tizen_error.h>
#include "feedback-ids.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @file feedback.h
 * @brief This file contains the feedback API
 */

/**
 * @addtogroup CAPI_SYSTEM_FEEDBACK_MODULE
 * @{
 */

/**
 * @brief Enumerations of error codes for the Feedback API.
 * @since_tizen 2.4
 */
typedef enum
{
    FEEDBACK_ERROR_NONE                = TIZEN_ERROR_NONE,                /**< Successful */
    FEEDBACK_ERROR_OPERATION_FAILED    = TIZEN_ERROR_NOT_PERMITTED,       /**< Operation failed */
    FEEDBACK_ERROR_INVALID_PARAMETER   = TIZEN_ERROR_INVALID_PARAMETER,   /**< Invalid parameter */
    FEEDBACK_ERROR_NOT_SUPPORTED       = TIZEN_ERROR_NOT_SUPPORTED,       /**< Not supported in this device */
    FEEDBACK_ERROR_PERMISSION_DENIED   = TIZEN_ERROR_PERMISSION_DENIED,   /**< Permission denied */
    FEEDBACK_ERROR_NOT_INITIALIZED     = TIZEN_ERROR_FEEDBACK | 0x01,     /**< Not initialized */
} feedback_error_e;

/**
 * @brief Initializes feedback API.
 *
 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
 *
 * @remarks
 * If this function is not called in advance, other function will return #FEEDBACK_ERROR_NOT_INITIALIZED.
 * And for controlling haptic device, the privilege should be set to, %http://tizen.org/privilege/haptic.
 * If you don't have the haptic privilege, this function initializes only sound.
 * It does not return any error in this case.
 *
 * @return 0 on success, otherwise a negative error value.
 * @retval #FEEDBACK_ERROR_NONE               Successful
 *
 * @post feedback_deinitialize()
 *
 * @see feedback_deinitialize()
 */
int feedback_initialize(void);

/**
 * @brief Deinitializes feedback API.
 * @details This function must be called when feedback functions are no longer needed.
 *
 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
 *
 * @remarks
 * If you don't want to use feedback anymore, you need to deinitialize with this function.
 * And for controlling haptic device, the privilege should be set to, %http://tizen.org/privilege/haptic.
 * If you don't have the haptic privilege, this function deinitializes only sound.
 * It does not return any error in this case.
 *
 * @return 0 on success, otherwise a negative error value.
 * @retval #FEEDBACK_ERROR_NONE                 Successful
 * @retval #FEEDBACK_ERROR_NOT_INITIALIZED      Not initialized
 *
 * @pre feedback_initialize()
 *
 * @see feedback_initialize()
 */
int feedback_deinitialize(void);

/**
 * @brief Plays various types of reactions that are pre-defined.
 * @details
 * This functon can be used to react to pre-defined actions. \n
 * It play various types of system pre-defined media or vibration patterns.
 *
 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
 *
 * @remarks
 * Currently, there are two types of reactions: sound and vibration. \n
 * Depending on the settings, some types cannot operate.
 * For example, when set to silent mode, the device doesn't produce any sound.
 * If to play one of devices is successful, this function regards as success.
 * And for controlling haptic device, the privilege should be set to, %http://tizen.org/privilege/haptic.
 * If you don't have the haptic privilege, it only works sound operation.
 * It does not return any error in this case.
 *
 * @param[in] pattern   The pre-defined pattern
 *
 * @return 0 on success, otherwise a negative error value.
 * @retval #FEEDBACK_ERROR_NONE                 Successful
 * @retval #FEEDBACK_ERROR_OPERATION_FAILED     Operation not permitted
 * @retval #FEEDBACK_ERROR_INVALID_PARAMETER    Invalid parameter
 * @retval #FEEDBACK_ERROR_NOT_SUPPORTED        Not supported device
 * @retval #FEEDBACK_ERROR_NOT_INITIALIZED      Not initialized
 *
 * @pre feedback_initialize()
 */
int feedback_play(feedback_pattern_e pattern);

/**
 *
 * @brief Plays specific type of reactions that are pre-defined.
 * @details
 * This function can be used to react to pre-defined actions. \n
 * It play specific type of system pre-defined pattern.
 *
 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
 *
 * @remarks
 * Currently, there are two types of reactions: sound and vibration. \n
 * Depending on the settings, some types cannot operate.
 * For example, when set to silent mode, the device doesn't produce any sound.
 * And for controlling haptic device, the privilege should be set to, %http://tizen.org/privilege/haptic.
 * If you don't have the haptic privilege, it returns FEEDBACK_ERROR_PERMISSION_DENIED error.
 *
 * @param[in] type      The pattern type
 * @param[in] pattern   The pre-defined pattern
 *
 * @return 0 on success, otherwise a negative error value.
 * @retval #FEEDBACK_ERROR_NONE                 Successful
 * @retval #FEEDBACK_ERROR_OPERATION_FAILED     Operation not permitted
 * @retval #FEEDBACK_ERROR_INVALID_PARAMETER    Invalid parameter
 * @retval #FEEDBACK_ERROR_NOT_SUPPORTED        Not supported device
 * @retval #FEEDBACK_ERROR_PERMISSION_DENIED    Permission denied
 * @retval #FEEDBACK_ERROR_NOT_INITIALIZED      Not initialized
 *
 * @pre feedback_initialize()
 */
int feedback_play_type(feedback_type_e type, feedback_pattern_e pattern);

/**
 * @brief Stop various types of reactions
 * @details
 * This functon can be used to stop react to pre-defined actions. \n
 * It stops system pre-defined vibration patterns.
 *
 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
 *
 * @remarks
 * This function does not support to stop media sound actions. \n
 * In this case, it will return FEEDBACK_ERROR_NOT_SUPPORTED error.
 * And for controlling haptic device, the privilege should be set to, %http://tizen.org/privilege/haptic.
 * If you don't have the haptic privilege, it only works sound operation.
 * It does not return any error in this case.
 *
 * @return 0 on success, otherwise a negative error value.
 * @retval #FEEDBACK_ERROR_NONE                 Successful
 * @retval #FEEDBACK_ERROR_OPERATION_FAILED     Operation not permitted
 * @retval #FEEDBACK_ERROR_NOT_SUPPORTED        Not supported device
 * @retval #FEEDBACK_ERROR_PERMISSION_DENIED    Permission denied
 * @retval #FEEDBACK_ERROR_NOT_INITIALIZED      Not initialized
 *
 * @pre feedback_initialize()
 */
int feedback_stop(void);

/**
 * @brief Checks if the pattern is supported
 * @details
 * This functon can be used to check if a specific pattern is supported.
 *
 * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
 *
 * @param[in] type      The pattern type
 * @param[in] pattern   The pre-defined pattern
 * @param[out] status   True means the pattern is supported, otherwise not supported.
 *
 * @return 0 on success, otherwise a negative error value.
 * @retval #FEEDBACK_ERROR_NONE                 Successful
 * @retval #FEEDBACK_ERROR_OPERATION_FAILED     Operation not permitted
 * @retval #FEEDBACK_ERROR_INVALID_PARAMETER    Invalid parameter
 * @retval #FEEDBACK_ERROR_NOT_SUPPORTED        Not supported device
 * @retval #FEEDBACK_ERROR_NOT_INITIALIZED      Not initialized
 *
 * @pre feedback_initialize()
 */
int feedback_is_supported_pattern(feedback_type_e type, feedback_pattern_e pattern, bool *status);

/**
 * @}
 */

#ifdef __cplusplus
}
#endif

#endif //__FEEDBACK_H__