Temporary fix for asking geolocation permission popup crash.
[platform/framework/web/wrt.git] / src / view / common / view_logic_vibration_support.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 /**
17  * @file    view_logic_vibration_support.cpp
18  * @author  Jihoon Chung (jihoon.chung@samsung.com)
19  */
20
21 #include "view_logic_vibration_support.h"
22 #include <dpl/log/log.h>
23 #include <haptic.h>
24
25 namespace ViewModule {
26 VibrationSupport::VibrationSupport() : m_initialized(false),
27     m_handle(NULL),
28     m_effect_handle(NULL)
29 {}
30
31 VibrationSupport::~VibrationSupport()
32 {
33     Assert(!m_initialized);
34 }
35
36 void VibrationSupport::initialize(void)
37 {
38     LogDebug("initialize");
39     initializeVibration();
40 }
41
42 void VibrationSupport::deinitialize(void)
43 {
44     LogDebug("deinitialize");
45
46     if (m_initialized) {
47         int ret = haptic_close(m_handle);
48
49         if (HAPTIC_ERROR_NONE == ret) {
50             m_initialized = false;
51             LogDebug("deinitialize success");
52         } else {
53             m_initialized = true;
54             LogDebug("deinitialize failed - error code : " << ret);
55         }
56     }
57 }
58
59 void VibrationSupport::startVibration(const long vibrationTime)
60 {
61     LogDebug("startVibration called");
62
63     if (m_initialized == false) {
64         if (initializeVibration() == false) {
65             return;
66         }
67     }
68
69     int time = static_cast<int>(vibrationTime);
70     int ret = haptic_vibrate_monotone(m_handle, time, &m_effect_handle);
71
72     if (HAPTIC_ERROR_NONE == ret) {
73         LogDebug("haptic_vibrate_monotone success");
74     } else {
75         LogDebug("haptic_vibrate_monotone failed - error code : " << ret);
76     }
77
78     return;
79 }
80
81 void VibrationSupport::stopVibration(void)
82 {
83     LogDebug("stopVibration called");
84     if (m_initialized == false) {
85         return;
86     }
87
88     int ret = haptic_stop_all_effects(m_handle);
89
90     if (HAPTIC_ERROR_NONE == ret) {
91         LogDebug("haptic_stop_all_effects success");
92     } else {
93         LogDebug("haptic_stop_all_effects failed - error code : " << ret);
94     }
95
96     return;
97 }
98
99 bool VibrationSupport::initializeVibration(void)
100 {
101     LogDebug("initializeVibration called");
102
103     if (m_initialized == false) {
104         haptic_device_h handle = NULL;
105         int ret = haptic_open(HAPTIC_DEVICE_0, &handle);
106
107         if (ret == HAPTIC_ERROR_NONE) {
108             LogDebug("initializeVibration success");
109             m_initialized = true;
110             m_handle = handle;
111         } else {
112             LogDebug("initializeVibration failed - error code : " << ret);
113             m_initialized = false;
114             m_handle = NULL;
115         }
116     }
117
118     return m_initialized;
119 }
120 } // namespace ViewModule