2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <stdio.h> // xxx
23 #include <devman_haptic.h>
26 #define IMMERSION_DRV_NODE "/dev/tspdrv"
27 #define INPUT_PARM_MAX 0xFFFFFF
28 #define COMP_CMD(idx, value) (value<<4)|(idx&0x0F)
33 HAPTIC_PROP_LEVEL_MAX,
41 CMD_GET_CURRENT_DEVICE_HANDLE,
42 CMD_GET_CURRENT_EFFECT_HANDLE,
45 CMD_GET_EFFECT_DURATION,
47 CMD_SET_EFFECT_PLAY_REPEAT,
49 CMD_SET_EFFECT_ALL_STOP,
50 CMD_PROPERTY_SET_LICENSE_KEY,
51 CMD_PROPERTY_GET_PRIORITY,
52 CMD_PROPERTY_SET_PRIORITY,
53 CMD_PROPERTY_GET_STRENGTH,
54 CMD_PROPERTY_SET_STRENGTH,
55 CMD_PROPERTY_GET_MASTER_STRENGTH,
56 CMD_PROPERTY_SET_MASTER_STRENGTH,
64 static int IMM_LEVEL[] = {
65 0, 0, 2000, 4000, 6000, 8000, 10000
68 static int ETC_LEVEL[] = {
69 0,0, 55, 60, 65, 70, 80
74 immersion = access(IMMERSION_DRV_NODE, F_OK) == 0;
81 int _haptic_play_monotone(int dev, int duration, haptic_level_e level)
87 if(duration < 1 || duration > INPUT_PARM_MAX)
88 return HAPTIC_ERROR_INVALID_PARAMETER;
90 dev = DEV_IDX_ALL; // xxx
92 if(dev != DEV_IDX_ALL && dev != DEV_IDX_0 && dev != DEV_IDX_1)
93 return HAPTIC_ERROR_INVALID_PARAMETER;
95 if(level == HAPTIC_LEVEL_0)
96 return HAPTIC_ERROR_NONE;
98 if(level < HAPTIC_LEVEL_1 || level > HAPTIC_LEVEL_5)
99 return HAPTIC_ERROR_INVALID_PARAMETER;
101 input = immersion ? IMM_LEVEL[level] : ETC_LEVEL[level];
103 return HAPTIC_ERROR_NONE;
106 cmd = COMP_CMD(dev, input);
107 status = device_set_property(DEVTYPE_EFFECT_HAPTIC,
108 CMD_PROPERTY_SET_STRENGTH, (int)cmd);
109 // printf("capi [%d - %d - %d] [%d %d]\n", DEVTYPE_EFFECT_HAPTIC, CMD_PROPERTY_SET_STRENGTH, cmd, dev, input);
111 return HAPTIC_ERROR_OPERATION_FAILED;
114 cmd = COMP_CMD(dev, 0x05);
116 device_set_property(DEVTYPE_EFFECT_HAPTIC,
117 CMD_PROPERTY_SET_PRIORITY, (int)cmd);
119 return HAPTIC_ERROR_OPERATION_FAILED;
124 cmd = COMP_CMD(dev, duration);
126 device_set_property(DEVTYPE_EFFECT_HAPTIC,
127 CMD_SET_NORMAL_PLAY, (int)cmd);
129 return HAPTIC_ERROR_OPERATION_FAILED;
133 device_set_property(DEVTYPE_HAPTIC, HAPTIC_PROP_LEVEL,
136 return HAPTIC_ERROR_OPERATION_FAILED;
140 device_set_property(DEVTYPE_HAPTIC, HAPTIC_PROP_ONESHOT,
143 return HAPTIC_ERROR_OPERATION_FAILED;
146 return HAPTIC_ERROR_NONE;