2 * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
4 * This program is licensed under the terms and conditions of the
5 * Apache License, version 2.0. The full tWlExt of the Apache License is at
6 * http://www.apache.org/licenses/LICENSE-2.0
10 //==========================================================================
12 * @file CicoSCWlInputMgrIF.cpp
14 * @brief This file implementation of CicoSCInputDev class
16 //==========================================================================
23 #include "CicoSCWlInputMgrIF.h"
24 #include "CicoSCWayland.h"
27 //--------------------------------------------------------------------------
29 * @brief default constructor
31 //--------------------------------------------------------------------------
32 CicoSCWlInputMgrIF::CicoSCWlInputMgrIF()
33 : m_inputmgr(NULL), m_exinput(NULL), m_inputmgrdev(NULL)
35 // ico_exinput listener
36 m_exInputListener.capabilities = wlCapabilitiesCB;
37 m_exInputListener.code = wlCodeCB;
38 m_exInputListener.input = wlInputCB;
40 // ico_input_mgr_device listener
41 m_devListener.input_regions = wlRegionCB;
44 //--------------------------------------------------------------------------
48 //--------------------------------------------------------------------------
49 CicoSCWlInputMgrIF::~CicoSCWlInputMgrIF()
53 //--------------------------------------------------------------------------
55 * @brief initialize ico_input_mgr interfaces
57 * @param [in] data user data
58 * @param [in] registry wayland registry
59 * @param [in] name wayland display id
60 * @parma [in] interface wayland interface name
61 * @parma [in] version wayland interface version number
63 //--------------------------------------------------------------------------
65 CicoSCWlInputMgrIF::initInterface(void *data,
66 struct wl_registry *registry,
68 const char *interface,
71 ICO_TRA("CicoSCWlInputMgrIF::initInterface : Enter(interface=%s)",
74 if (0 == strcmp(interface, ICO_WL_INPUT_MGR_CTRL_IF)) {
75 // get interface instance
76 ICO_DBG("called: wl_registry_bind");
77 void *wlProxy = wl_registry_bind(registry,
79 &ico_input_mgr_control_interface,
81 if (NULL == wlProxy) {
82 ICO_WRN("interface(%s) wl_registry_bind failed.", interface);
83 ICO_TRA("CicoSCWlInputMgrIF::initInterface Leave",
87 m_inputmgr = (struct ico_input_mgr_control*)wlProxy;
89 else if (0 == strcmp(interface, ICO_WL_EXINPUT_IF)) {
90 // get interface instance
91 ICO_DBG("called: wl_registry_bind");
92 void *wlProxy = wl_registry_bind(registry,
94 &ico_exinput_interface,
96 if (NULL == wlProxy) {
97 ICO_WRN("interface(%s) wl_registry_bind failed.", interface);
98 ICO_TRA("CicoSCWlInputMgrIF::initInterface Leave",
103 m_exinput = (struct ico_exinput*)wlProxy;
104 ico_exinput_add_listener(m_exinput,
108 else if (0 == strcmp(interface, ICO_WL_INPUT_MGR_DEV_IF)) {
109 // get interface instance
110 ICO_DBG("called: wl_registry_bind");
111 void *wlProxy = wl_registry_bind(registry,
113 &ico_input_mgr_device_interface,
115 if (NULL == wlProxy) {
116 ICO_WRN("interface(%s) wl_registry_bind failed.", interface);
117 ICO_TRA("CicoSCWlInputMgrIF::initInterface Leave"
122 m_inputmgrdev = (struct ico_input_mgr_device*)wlProxy;
123 ico_input_mgr_device_add_listener(m_inputmgrdev,
128 if ((NULL != m_inputmgrdev) &&
129 (NULL != m_inputmgr) &&
130 (NULL != m_exinput)) {
131 m_initialized = true;
133 ICO_TRA("CicoSCWlInputMgrIF::initInterface Leave");
136 //--------------------------------------------------------------------------
138 * @brief wrapper function ico_input_mgr_control_add_input_app
140 * @param [in] appid application id
141 * @param [in] device input device name
142 * @param [in] input input number
143 * @parma [in] fix fixed assign flag
144 * @parma [in] keycode assigned keycode value
146 //--------------------------------------------------------------------------
148 CicoSCWlInputMgrIF::addInputApp(const string &appid,
149 const string &device,
154 ICO_DBG("called: ico_input_mgr_control_add_input_app"
155 "(appid=%s device=%s input=%d fix=%d keycode=%d)",
156 appid.c_str(), device.c_str(), input, fix, keycode);
157 ico_input_mgr_control_add_input_app(m_inputmgr,appid.c_str(),
158 device.c_str(), input, fix, keycode);
160 CicoSCWayland::getInstance()->flushDisplay();
163 //--------------------------------------------------------------------------
165 * @brief wrapper function ico_input_mgr_control_del_input_app
167 * @param [in] appid application id
168 * @param [in] device input device name
169 * @param [in] input input number
171 //--------------------------------------------------------------------------
173 CicoSCWlInputMgrIF::delInputApp(const string &appid,
174 const string &device,
177 ICO_DBG("called: ico_input_mgr_control_del_input_app"
178 "(appid=%s device=%s input=%d)",
179 appid.c_str(), device.c_str(), input);
180 ico_input_mgr_control_del_input_app(m_inputmgr, appid.c_str(),
181 device.c_str(), input);
183 CicoSCWayland::getInstance()->flushDisplay();
186 //--------------------------------------------------------------------------
188 * @brief wrapper function ico_exinput_set_input_region
190 * @param [in] target target window name(winname@appid)
191 * @param [in] x region x positon
192 * @param [in] y region y positon
193 * @param [in] width region width
194 * @param [in] height region height
195 * @param [in] hotspot_x hotspot x position
196 * @param [in] hotspot_y hotspot y position
197 * @param [in] cursor_x cursor x position
198 * @param [in] cursor_y cursor y position
199 * @param [in] cursor_width cursor width
200 * @param [in] cursor_height cursor height
201 * @param [in] attr region attribute
203 //--------------------------------------------------------------------------
205 CicoSCWlInputMgrIF::setInputRegion(const string &target,
218 ICO_DBG("called: ico_exinput_set_input_region"
219 "(target=%s x/y=%d/%d w/h=%d/%d hot=%d/%d "
220 "cursor=%d/%d-%d/%d attr=%d)",
221 target.c_str(), x, y, width, height, hotspot_x, hotspot_y,
222 cursor_x, cursor_y, cursor_width, cursor_height, attr);
223 ico_exinput_set_input_region(m_exinput, target.c_str(), x, y,
224 width, height, hotspot_x, hotspot_y, cursor_x,
225 cursor_y, cursor_width, cursor_height,attr);
227 CicoSCWayland::getInstance()->flushDisplay();
230 //--------------------------------------------------------------------------
232 * @brief wrapper function ico_exinput_unset_input_region
234 * @param [in] target target window name(winname@appid)
235 * @param [in] x region x positon
236 * @param [in] y region y positon
237 * @param [in] width region width
238 * @param [in] height region height
240 //--------------------------------------------------------------------------
242 CicoSCWlInputMgrIF::unsetInputRegion(const string &target,
248 ICO_DBG("called: ico_exinput_unset_input_region"
249 "(target=%s x=%d y=%d width=%d height=%d",
250 target.c_str(), x, y, width, height);
251 ico_exinput_unset_input_region(m_exinput, target.c_str(),
252 x, y, width, height);
254 CicoSCWayland::getInstance()->flushDisplay();
257 //--------------------------------------------------------------------------
259 * @brief callback to application for input switch information
261 * @param [in] data user data
262 * @param [in] ico_exinput wayland ico_exinput interface
263 * @param [in] device input device name
264 * @param [in] type input device type (as enum type)
265 * @param [in] swname input switch name
266 * @param [in] input input switch number
267 * @param [in] codename input code name
268 * @param [in] code input code number
270 //--------------------------------------------------------------------------
272 CicoSCWlInputMgrIF::capabilitiesCB(void *data,
273 struct ico_exinput *ico_exinput,
278 const char *codename,
281 ICO_WRN("CicoSCWlInputMgrIF::capabilitiesCB called.");
284 //--------------------------------------------------------------------------
286 * @brief callback to application for input code information
288 * @param [in] data user data
289 * @param [in] ico_exinput wayland ico_exinput interface
290 * @param [in] device input device name
291 * @param [in] input input switch number
292 * @param [in] codename input code name
293 * @param [in] code input code number
295 //--------------------------------------------------------------------------
297 CicoSCWlInputMgrIF::codeCB(void *data,
298 struct ico_exinput *ico_exinput,
301 const char *codename,
304 ICO_WRN("CicoSCWlInputMgrIF::codeCB called.");
307 //--------------------------------------------------------------------------
309 * @brief callback to application for switch input
311 * @param [in] data user data
312 * @param [in] ico_exinput wayland ico_exinput interface
313 * @param [in] time input time of millisecond
314 * @param [in] device input device name
315 * @param [in] input input switch number
316 * @param [in] code input switch code
317 * @param [in] state Of/Off status
319 //--------------------------------------------------------------------------
321 CicoSCWlInputMgrIF::inputCB(void *data,
322 struct ico_exinput *ico_exinput,
329 ICO_WRN("CicoSCWlInputMgrIF::inputCB called.");
332 //--------------------------------------------------------------------------
334 * @brief callback to application for change input region
336 * @param [in] data user data
337 * @param [in] ico_input_mgr_dev wayland ico_exinput interface
338 * @param [in] region input regions
340 //--------------------------------------------------------------------------
342 CicoSCWlInputMgrIF::regionCB(void *data,
343 struct ico_input_mgr_device *ico_input_mgr_dev,
344 struct wl_array *region)
346 ICO_WRN("CicoSCWlInputMgrIF::regionCB called.");
349 //==========================================================================
351 //==========================================================================
353 //--------------------------------------------------------------------------
355 * @brief callback to application for input switch information
357 * @param [in] data user data
358 * @param [in] ico_exinput wayland ico_exinput interface
359 * @param [in] device input device name
360 * @param [in] type input device type (as enum type)
361 * @param [in] swname input switch name
362 * @param [in] input input switch number
363 * @param [in] codename input code name
364 * @param [in] code input code number
366 //--------------------------------------------------------------------------
368 CicoSCWlInputMgrIF::wlCapabilitiesCB(void *data,
369 struct ico_exinput *ico_exinput,
374 const char *codename,
377 // ICO_TRA("CicoSCWlInputMgrIF::wlCapabilitiesCB Enter");
380 ICO_WRN("wlCapabilitiesCB: data is null");
383 static_cast<CicoSCWlInputMgrIF*>(data)->capabilitiesCB(data, ico_exinput,
387 // ICO_TRA("CicoSCWlInputMgrIF::wlCapabilitiesCB Leave");
390 //--------------------------------------------------------------------------
392 * @brief callback to application for input code information
394 * @param [in] data user data
395 * @param [in] ico_exinput wayland ico_exinput interface
396 * @param [in] device input device name
397 * @param [in] input input switch number
398 * @param [in] codename input code name
399 * @param [in] code input code number
401 //--------------------------------------------------------------------------
403 CicoSCWlInputMgrIF::wlCodeCB(void *data,
404 struct ico_exinput *ico_exinput,
407 const char *codename,
410 // ICO_TRA("CicoSCWlInputMgrIF::wlCodeCB Enter");
413 ICO_WRN("wlCodeCB: data is null");
416 static_cast<CicoSCWlInputMgrIF*>(data)->codeCB(data, ico_exinput,
420 // ICO_TRA("CicoSCWlInputMgrIF::wlCodeCB Leave");
423 //--------------------------------------------------------------------------
425 * @brief callback to application for switch input
427 * @param [in] data user data
428 * @param [in] ico_exinput wayland ico_exinput interface
429 * @param [in] time input time of millisecond
430 * @param [in] device input device name
431 * @param [in] input input switch number
432 * @param [in] code input switch code
433 * @param [in] state Of/Off status
435 //--------------------------------------------------------------------------
437 CicoSCWlInputMgrIF::wlInputCB(void *data,
438 struct ico_exinput *ico_exinput,
445 // ICO_TRA("CicoSCWlInputMgrIF::wlInputCB Enter");
448 ICO_WRN("wlInputCB: data is null");
451 static_cast<CicoSCWlInputMgrIF*>(data)->inputCB(data, ico_exinput,
455 // ICO_TRA("CicoSCWlInputMgrIF::wlInputCB Leave");
458 //--------------------------------------------------------------------------
460 * @brief callback to application for change input region
462 * @param [in] data user data
463 * @param [in] ico_input_mgr_dev wayland ico_exinput interface
464 * @param [in] region input regions
466 //--------------------------------------------------------------------------
468 CicoSCWlInputMgrIF::wlRegionCB(void *data,
469 struct ico_input_mgr_device *ico_input_mgr_dev,
470 struct wl_array *region)
472 // ICO_TRA("CicoSCWlInputMgrIF::wlRegionCB Enter");
475 ICO_WRN("wlRegionCB: data is null");
478 static_cast<CicoSCWlInputMgrIF*>(data)->regionCB(data, ico_input_mgr_dev,
481 // ICO_TRA("CicoSCWlInputMgrIF::wlRegionCB Leave");
483 // vim:set expandtab ts=4 sw=4: