[go: up one dir, main page]

Menu

[r117]: / gizmod3 / gizmod / Gizmo.cpp  Maximize  Restore  History

Download this file

149 lines (127 with data), 3.8 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/**
*********************************************************************
*************************************************************************
***
*** \file Gizmo.cpp
*** \brief Gizmo class body
***
*****************************************
*****************************************
**/
/*
Copyright (c) 2007, Tim Burrell
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#include "Gizmo.hpp"
#include "../libH/Debug.hpp"
#include "../libH/Exception.hpp"
#include <boost/shared_ptr.hpp>
using namespace std;
using namespace boost;
using namespace H;
////////////////////////////////////////////////////////////////////////////
// Type Defs
///////////////////////////////////////
/**
* \def GIZMO_TYPE_UNSPECIFIED
* \brief String returned if a super class failed to reimplement getGizmoType
*/
#define GIZMO_TYPE_UNSPECIFIED "Unspecified"
////////////////////////////////////////////////////////////////////////////
// Construction
///////////////////////////////////////
/**
* \brief Gizmo Default Constructor
*/
Gizmo::Gizmo(GizmoClass Class, const H::DeviceInfo & deviceInfo, int DeviceID, int DeviceClassID) : DeviceInfo(deviceInfo) {
mClass = Class;
mDeviceID = DeviceID;
mDeviceClassID = DeviceClassID;
memset(mKeyState, 0, sizeof(int) * GIZMO_KEY_MAX);
}
/**
* \brief Gizmo Serialize Constructor
*/
Gizmo::Gizmo() {
}
/**
* \brief Gizmo Destructor
*/
Gizmo::~Gizmo() {
}
////////////////////////////////////////////////////////////////////////////
// Class Body
///////////////////////////////////////
/**
* \brief Get the class of Gizmo
* \return GizmoClass of the Gizmo
*
* Note that this is also implemented in Python as a property so it can
* be accessed as a variable by referencing ".GizmoClass"
*/
GizmoClass Gizmo::getClass() {
return mClass;
}
/**
* \brief Get the Device ID
* \return The Device ID
*
* This is the unique Device ID of the Gizmo
*/
int Gizmo::getDeviceID() {
return mDeviceID;
}
/**
* \brief Get the Device Class ID
* \return The Device Class ID
*
* Each Gizmo in this GizmoClass will have an ID that is unique only amongst this class.
*
* Effectively this can be used to find out which Powermate device an event belongs to, and so forth.
*/
int Gizmo::getDeviceClassID() {
return mDeviceClassID;
}
/**
* \brief Get the class of the Gizmo
* \param Key The key to inquire upon
* \return The value of the button (0 == off, 1 == on, 2 == repeating)
*/
int Gizmo::getKeyState(GizmoKey Key) {
return mKeyState[Key];
}
/**
* \brief Get the type of Gizmo
* \return Type of the Gizmo
*
* Note that this is also implemented in Python as a property so it can
* be accessed as a variable by referencing ".GizmoType"
*/
std::string Gizmo::getType() {
return GIZMO_TYPE_UNSPECIFIED;
}
/**
* \brief Process an event
* \param pEvent The event to process
* \return True on if the event should get passed on to the script
*/
bool Gizmo::processEvent(GizmoEvent * pEvent) {
// override me
return true;
}
/**
* \brief Set a keystate of the Gizmo
* \param Key The key to change states
* \param State The new state (0 == off, 1 == on, 2 == repeating)
*/
void Gizmo::setKeyState(GizmoKey Key, int State) {
mKeyState[Key] = State;
}