1
/*****************************************************************************
3
* utouch-frame - Touch Frame Library
5
* Copyright (C) 2011 Canonical Ltd.
7
* This program is free software: you can redistribute it and/or modify it
8
* under the terms of the GNU General Public License as published by the
9
* Free Software Foundation, either version 3 of the License, or (at your
10
* option) any later version.
12
* This program is distributed in the hope that it will be useful, but
13
* WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* General Public License for more details.
17
* You should have received a copy of the GNU General Public License along
18
* with this program. If not, see <http://www.gnu.org/licenses/>.
20
****************************************************************************/
28
#include <gtest/gtest.h>
30
utouch::evemu::Device::Device(const char* path) {
31
static const char UINPUT_NODE[] = "/dev/uinput";
33
device_ = evemu_new(NULL);
35
throw std::runtime_error("Failed to create evemu record");
37
FILE* fp = fopen(path, "r");
39
throw std::runtime_error("Failed to open device file");
41
if (evemu_read(device_, fp) <= 0) {
43
throw std::runtime_error("Failed to read device file");
48
fd_ = open(UINPUT_NODE, O_WRONLY);
50
evemu_delete(device_);
51
throw std::runtime_error("Failed to open uinput node");
54
if (evemu_create(device_, fd_) < 0) {
56
evemu_delete(device_);
57
throw std::runtime_error("Failed to create evemu device");
61
utouch::evemu::Device::~Device() {
63
evemu_delete(device_);