3 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
26 static const char *common_str_type[] = {
28 "FEEDBACK_TYPE_SOUND",
29 "FEEDBACK_TYPE_VIBRATION",
32 static const char *common_str_pattern[] = {
33 "FEEDBACK_PATTERN_TAP",
34 "FEEDBACK_PATTERN_SIP",
39 "FEEDBACK_PATTERN_KEY0",
40 "FEEDBACK_PATTERN_KEY1",
41 "FEEDBACK_PATTERN_KEY2",
42 "FEEDBACK_PATTERN_KEY3",
43 "FEEDBACK_PATTERN_KEY4",
44 "FEEDBACK_PATTERN_KEY5",
45 "FEEDBACK_PATTERN_KEY6",
46 "FEEDBACK_PATTERN_KEY7",
47 "FEEDBACK_PATTERN_KEY8",
48 "FEEDBACK_PATTERN_KEY9",
49 "FEEDBACK_PATTERN_KEY_STAR",
50 "FEEDBACK_PATTERN_KEY_SHARP",
51 "FEEDBACK_PATTERN_KEY_BACK",
52 "FEEDBACK_PATTERN_HOLD",
54 "FEEDBACK_PATTERN_HW_TAP",
55 "FEEDBACK_PATTERN_HW_HOLD",
57 "FEEDBACK_PATTERN_MESSAGE",
59 "FEEDBACK_PATTERN_EMAIL",
61 "FEEDBACK_PATTERN_WAKEUP",
63 "FEEDBACK_PATTERN_SCHEDULE",
65 "FEEDBACK_PATTERN_TIMER",
67 "FEEDBACK_PATTERN_GENERAL",
71 "FEEDBACK_PATTERN_POWERON",
72 "FEEDBACK_PATTERN_POWEROFF",
73 "FEEDBACK_PATTERN_CHARGERCONN",
75 "FEEDBACK_PATTERN_CHARGING_ERROR",
77 "FEEDBACK_PATTERN_FULLCHARGED",
79 "FEEDBACK_PATTERN_LOWBATT",
81 "FEEDBACK_PATTERN_LOCK",
82 "FEEDBACK_PATTERN_UNLOCK",
90 "FEEDBACK_PATTERN_VIBRATION_ON",
91 "FEEDBACK_PATTERN_SILENT_OFF",
92 "FEEDBACK_PATTERN_BT_CONNECTED",
93 "FEEDBACK_PATTERN_BT_DISCONNECTED",
97 "FEEDBACK_PATTERN_LIST_REORDER",
98 "FEEDBACK_PATTERN_LIST_SLIDER",
99 "FEEDBACK_PATTERN_VOLUME_KEY",
102 static bool common_get_always_alert_case(int type, int pattern)
105 case FEEDBACK_PATTERN_SIP:
106 case FEEDBACK_PATTERN_TIMER:
107 if (CHECK_VIBRATION(type))
110 case FEEDBACK_PATTERN_WAKEUP:
118 static bool common_get_always_off_case(int type, int pattern)
121 case FEEDBACK_PATTERN_TAP ... FEEDBACK_PATTERN_SIP:
122 case FEEDBACK_PATTERN_HOLD ... FEEDBACK_PATTERN_HW_HOLD:
123 if (CHECK_SOUND(type) && !is_touch_sndstatus())
126 case FEEDBACK_PATTERN_KEY0 ... FEEDBACK_PATTERN_KEY_BACK:
127 if (CHECK_SOUND(type) && !is_keytone_sndstatus())
136 static int common_get_strength_type(int type, int pattern)
138 if (CHECK_SOUND(type)) {
139 if (pattern == FEEDBACK_PATTERN_TAP)
140 return VOLUME_TYPE_SYSTEM|VOLUME_GAIN_TOUCH;
141 else if (pattern >= FEEDBACK_PATTERN_KEY0 && pattern <= FEEDBACK_PATTERN_KEY_BACK)
142 return VOLUME_TYPE_SYSTEM|VOLUME_GAIN_DIALER;
143 else if (pattern == FEEDBACK_PATTERN_VOLUME_KEY)
144 return VOLUME_TYPE_RINGTONE;
146 return VOLUME_TYPE_SYSTEM;
147 } else if (CHECK_VIBRATION(type)) {
148 return DEFAULT_VIB_LEVEL * HAPTIC_FEEDBACK_STEP;
154 static const struct profile_ops common_profile_ops = {
156 .get_always_alert_case = common_get_always_alert_case,
157 .get_always_off_case = common_get_always_off_case,
158 .get_strength_type = common_get_strength_type,
159 .max_type = FEEDBACK_TYPE_END,
160 .max_pattern = FEEDBACK_PATTERN_END,
161 .str_type = common_str_type,
162 .str_pattern = common_str_pattern,
165 PROFILE_OPS_REGISTER(&common_profile_ops);