-rw-r--r-- | libopie2/opiecore/device/odevice_htc.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libopie2/opiecore/device/odevice_htc.cpp b/libopie2/opiecore/device/odevice_htc.cpp index 7f82369..4bc8c49 100644 --- a/libopie2/opiecore/device/odevice_htc.cpp +++ b/libopie2/opiecore/device/odevice_htc.cpp | |||
@@ -9,256 +9,257 @@ | |||
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; version 2 of the License. | 11 | - . .-<_> .<> Foundation; version 2 of the License. |
12 | ._= =} : | 12 | ._= =} : |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include "odevice_htc.h" | 30 | #include "odevice_htc.h" |
31 | 31 | ||
32 | /* OPIE */ | 32 | /* OPIE */ |
33 | #include <opie2/oinputsystem.h> | 33 | #include <opie2/oinputsystem.h> |
34 | #include <opie2/oresource.h> | 34 | #include <opie2/oresource.h> |
35 | 35 | ||
36 | #include <qpe/config.h> | 36 | #include <qpe/config.h> |
37 | #include <qpe/sound.h> | 37 | #include <qpe/sound.h> |
38 | 38 | ||
39 | /* QT */ | 39 | /* QT */ |
40 | #include <qapplication.h> | 40 | #include <qapplication.h> |
41 | #include <qfile.h> | 41 | #include <qfile.h> |
42 | #include <qtextstream.h> | 42 | #include <qtextstream.h> |
43 | #include <qwindowsystem_qws.h> | 43 | #include <qwindowsystem_qws.h> |
44 | #include <qcopchannel_qws.h> | 44 | #include <qcopchannel_qws.h> |
45 | 45 | ||
46 | /* STD */ | 46 | /* STD */ |
47 | #include <string.h> | 47 | #include <string.h> |
48 | #include <errno.h> | 48 | #include <errno.h> |
49 | #include <fcntl.h> | 49 | #include <fcntl.h> |
50 | #include <math.h> | 50 | #include <math.h> |
51 | #include <stdlib.h> | 51 | #include <stdlib.h> |
52 | #include <signal.h> | 52 | #include <signal.h> |
53 | #include <sys/ioctl.h> | 53 | #include <sys/ioctl.h> |
54 | #include <sys/time.h> | 54 | #include <sys/time.h> |
55 | #include <unistd.h> | 55 | #include <unistd.h> |
56 | #ifndef QT_NO_SOUND | 56 | #ifndef QT_NO_SOUND |
57 | #include <linux/soundcard.h> | 57 | #include <linux/soundcard.h> |
58 | #endif | 58 | #endif |
59 | 59 | ||
60 | using namespace Opie::Core; | 60 | using namespace Opie::Core; |
61 | using namespace Opie::Core::Internal; | 61 | using namespace Opie::Core::Internal; |
62 | 62 | ||
63 | struct htc_button htc_buttons [] = { | 63 | struct htc_button htc_buttons [] = { |
64 | { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), | 64 | { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), |
65 | "devicebuttons/z_calendar", | 65 | "devicebuttons/z_calendar", |
66 | "datebook", "nextView()", | 66 | "datebook", "nextView()", |
67 | "today", "raise()" }, | 67 | "today", "raise()" }, |
68 | { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), | 68 | { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), |
69 | "devicebuttons/z_contact", | 69 | "devicebuttons/z_contact", |
70 | "addressbook", "raise()", | 70 | "addressbook", "raise()", |
71 | "addressbook", "beamBusinessCard()" }, | 71 | "addressbook", "beamBusinessCard()" }, |
72 | { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), | 72 | { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), |
73 | "devicebuttons/z_home", | 73 | "devicebuttons/z_home", |
74 | "QPE/Launcher", "home()", | 74 | "QPE/Launcher", "home()", |
75 | "buttonsettings", "raise()" }, | 75 | "buttonsettings", "raise()" }, |
76 | { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), | 76 | { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), |
77 | "devicebuttons/z_menu", | 77 | "devicebuttons/z_menu", |
78 | "QPE/TaskBar", "toggleMenu()", | 78 | "QPE/TaskBar", "toggleMenu()", |
79 | "QPE/TaskBar", "toggleStartMenu()" }, | 79 | "QPE/TaskBar", "toggleStartMenu()" }, |
80 | { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), | 80 | { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), |
81 | "devicebuttons/z_mail", | 81 | "devicebuttons/z_mail", |
82 | "opiemail", "raise()", | 82 | "opiemail", "raise()", |
83 | "opiemail", "newMail()" }, | 83 | "opiemail", "newMail()" }, |
84 | }; | 84 | }; |
85 | 85 | ||
86 | struct htc_button htc_buttons_universal [] = { | 86 | struct htc_button htc_buttons_universal [] = { |
87 | { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), | 87 | { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), |
88 | "devicebuttons/z_calendar", | 88 | "devicebuttons/z_calendar", |
89 | "datebook", "nextView()", | 89 | "datebook", "nextView()", |
90 | "today", "raise()" }, | 90 | "today", "raise()" }, |
91 | { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), | 91 | { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), |
92 | "devicebuttons/z_contact", | 92 | "devicebuttons/z_contact", |
93 | "addressbook", "raise()", | 93 | "addressbook", "raise()", |
94 | "addressbook", "beamBusinessCard()" }, | 94 | "addressbook", "beamBusinessCard()" }, |
95 | { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), | 95 | { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), |
96 | "devicebuttons/z_home", | 96 | "devicebuttons/z_home", |
97 | "QPE/Launcher", "home()", | 97 | "QPE/Launcher", "home()", |
98 | "buttonsettings", "raise()" }, | 98 | "buttonsettings", "raise()" }, |
99 | { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), | 99 | { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), |
100 | "devicebuttons/z_menu", | 100 | "devicebuttons/z_menu", |
101 | "QPE/TaskBar", "toggleMenu()", | 101 | "QPE/TaskBar", "toggleMenu()", |
102 | "QPE/TaskBar", "toggleStartMenu()" }, | 102 | "QPE/TaskBar", "toggleStartMenu()" }, |
103 | { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), | 103 | { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), |
104 | "devicebuttons/z_mail", | 104 | "devicebuttons/z_mail", |
105 | "opiemail", "raise()", | 105 | "opiemail", "raise()", |
106 | "opiemail", "newMail()" }, | 106 | "opiemail", "newMail()" }, |
107 | 107 | ||
108 | { Qt::Key_F15, QT_TRANSLATE_NOOP("Button", "Hinge1"), | 108 | { Qt::Key_F15, QT_TRANSLATE_NOOP("Button", "Hinge1"), |
109 | "devicebuttons/z_hinge1", | 109 | "devicebuttons/z_hinge1", |
110 | "QPE/Rotation", "rotateDefault()",0,0}, | 110 | "QPE/Rotation", "rotateDefault()",0,0}, |
111 | { Qt::Key_F16, QT_TRANSLATE_NOOP("Button", "Hinge2"), | 111 | { Qt::Key_F16, QT_TRANSLATE_NOOP("Button", "Hinge2"), |
112 | "devicebuttons/z_hinge2", | 112 | "devicebuttons/z_hinge2", |
113 | "QPE/Rotation", "rotateDefault()",0,0}, | 113 | "QPE/Rotation", "rotateDefault()",0,0}, |
114 | { Qt::Key_F17, QT_TRANSLATE_NOOP("Button", "Hinge3"), | 114 | { Qt::Key_F17, QT_TRANSLATE_NOOP("Button", "Hinge3"), |
115 | "devicebuttons/z_hinge3", | 115 | "devicebuttons/z_hinge3", |
116 | "QPE/Rotation", "rotateDefault()",0,0}, | 116 | "QPE/Rotation", "rotateDefault()",0,0}, |
117 | }; | 117 | }; |
118 | 118 | ||
119 | 119 | ||
120 | // | 120 | // |
121 | // HTC-Universal (PXA-model w/ 480x640 3.6" lcd) | 121 | // HTC-Universal (PXA-model w/ 480x640 3.6" lcd) |
122 | // HTC-Alpine (PXA-model w/ 240x320 3.5" lcd) | 122 | // HTC-Alpine (PXA-model w/ 240x320 3.5" lcd) |
123 | // HTC-Apache (PXA-model w/ 240x320 2.8" lcd) | 123 | // HTC-Apache (PXA-model w/ 240x320 2.8" lcd) |
124 | // HTC-Beetles (PXA-model w/ 240x240 3.0" lcd) | 124 | // HTC-Beetles (PXA-model w/ 240x240 3.0" lcd) |
125 | // HTC-Blueangel (PXA-model w/ 240x320 3.5" lcd) | 125 | // HTC-Blueangel (PXA-model w/ 240x320 3.5" lcd) |
126 | // HTC-Himalaya (PXA-model w/ 240x320 3.5" lcd) | 126 | // HTC-Himalaya (PXA-model w/ 240x320 3.5" lcd) |
127 | // HTC-Magician (PXA-model w/ 240x320 2.8" lcd) | 127 | // HTC-Magician (PXA-model w/ 240x320 2.8" lcd) |
128 | 128 | ||
129 | void HTC::init(const QString& cpu_info) | 129 | void HTC::init(const QString& cpu_info) |
130 | { | 130 | { |
131 | qDebug( "HTC::init()" ); | 131 | qDebug( "HTC::init()" ); |
132 | // Set the time to wait until the system is really suspended | 132 | // Set the time to wait until the system is really suspended |
133 | // the delta between apm --suspend and sleeping | 133 | // the delta between apm --suspend and sleeping |
134 | setAPMTimeOut( 15000 ); | 134 | setAPMTimeOut( 15000 ); |
135 | 135 | ||
136 | d->m_vendorstr = "Xanadux Team"; | 136 | d->m_vendorstr = "Xanadux Team"; |
137 | d->m_vendor = Vendor_HTC; | ||
137 | d->m_systemstr = "Familiar"; | 138 | d->m_systemstr = "Familiar"; |
138 | d->m_system = System_Familiar; | 139 | d->m_system = System_Familiar; |
139 | 140 | ||
140 | // check the HTC model | 141 | // check the HTC model |
141 | QString model; | 142 | QString model; |
142 | int loc = cpu_info.find( ":" ); | 143 | int loc = cpu_info.find( ":" ); |
143 | if ( loc != -1 ) | 144 | if ( loc != -1 ) |
144 | model = cpu_info.mid( loc+2 ).simplifyWhiteSpace(); | 145 | model = cpu_info.mid( loc+2 ).simplifyWhiteSpace(); |
145 | else | 146 | else |
146 | model = cpu_info; | 147 | model = cpu_info; |
147 | 148 | ||
148 | d->m_model = Model_HTC_Universal; | 149 | d->m_model = Model_HTC_Universal; |
149 | d->m_modelstr = "Unknown HTC"; | 150 | d->m_modelstr = "Unknown HTC"; |
150 | 151 | ||
151 | if ( model == "HTC Universal" ) { | 152 | if ( model == "HTC Universal" ) { |
152 | d->m_model = Model_HTC_Universal; | 153 | d->m_model = Model_HTC_Universal; |
153 | d->m_modelstr = "HTC Universal"; | 154 | d->m_modelstr = "HTC Universal"; |
154 | } | 155 | } |
155 | if ( model == "HTC Alpine" ) { | 156 | if ( model == "HTC Alpine" ) { |
156 | d->m_model = Model_HTC_Alpine; | 157 | d->m_model = Model_HTC_Alpine; |
157 | d->m_modelstr = "HTC Alpine"; | 158 | d->m_modelstr = "HTC Alpine"; |
158 | } | 159 | } |
159 | if ( model == "HTC Apache" ) { | 160 | if ( model == "HTC Apache" ) { |
160 | d->m_model = Model_HTC_Apache; | 161 | d->m_model = Model_HTC_Apache; |
161 | d->m_modelstr = "HTC Apache"; | 162 | d->m_modelstr = "HTC Apache"; |
162 | } | 163 | } |
163 | if ( model == "HTC Beetles" ) { | 164 | if ( model == "HTC Beetles" ) { |
164 | d->m_model = Model_HTC_Beetles; | 165 | d->m_model = Model_HTC_Beetles; |
165 | d->m_modelstr = "HTC Beetles"; | 166 | d->m_modelstr = "HTC Beetles"; |
166 | } | 167 | } |
167 | if ( model == "HTC Blueangel" ) { | 168 | if ( model == "HTC Blueangel" ) { |
168 | d->m_model = Model_HTC_Blueangel; | 169 | d->m_model = Model_HTC_Blueangel; |
169 | d->m_modelstr = "HTC Blueangel"; | 170 | d->m_modelstr = "HTC Blueangel"; |
170 | } | 171 | } |
171 | if ( model == "HTC Himalaya" ) { | 172 | if ( model == "HTC Himalaya" ) { |
172 | d->m_model = Model_HTC_Himalaya; | 173 | d->m_model = Model_HTC_Himalaya; |
173 | d->m_modelstr = "HTC Himalaya"; | 174 | d->m_modelstr = "HTC Himalaya"; |
174 | } | 175 | } |
175 | if ( model == "HTC Magician" ) { | 176 | if ( model == "HTC Magician" ) { |
176 | d->m_model = Model_HTC_Magician; | 177 | d->m_model = Model_HTC_Magician; |
177 | d->m_modelstr = "HTC Magician"; | 178 | d->m_modelstr = "HTC Magician"; |
178 | } | 179 | } |
179 | 180 | ||
180 | 181 | ||
181 | // set path to backlight device | 182 | // set path to backlight device |
182 | switch ( d->m_model ) | 183 | switch ( d->m_model ) |
183 | { | 184 | { |
184 | case Model_HTC_Universal: | 185 | case Model_HTC_Universal: |
185 | case Model_HTC_Magician: | 186 | case Model_HTC_Magician: |
186 | case Model_HTC_Alpine: | 187 | case Model_HTC_Alpine: |
187 | case Model_HTC_Beetles: | 188 | case Model_HTC_Beetles: |
188 | case Model_HTC_Apache: | 189 | case Model_HTC_Apache: |
189 | m_backlightdev = "/sys/class/backlight/corgi-bl/"; | 190 | m_backlightdev = "/sys/class/backlight/corgi-bl/"; |
190 | break; | 191 | break; |
191 | case Model_HTC_Blueangel: | 192 | case Model_HTC_Blueangel: |
192 | case Model_HTC_Himalaya: | 193 | case Model_HTC_Himalaya: |
193 | m_backlightdev = "/sys/class/backlight/w100fb/"; | 194 | m_backlightdev = "/sys/class/backlight/w100fb/"; |
194 | break; | 195 | break; |
195 | default: | 196 | default: |
196 | m_backlightdev = "/sys/class/backlight/corgi-bl/"; | 197 | m_backlightdev = "/sys/class/backlight/corgi-bl/"; |
197 | } | 198 | } |
198 | 199 | ||
199 | // set initial rotation | 200 | // set initial rotation |
200 | switch( d->m_model ) | 201 | switch( d->m_model ) |
201 | { | 202 | { |
202 | case Model_HTC_Universal: | 203 | case Model_HTC_Universal: |
203 | initHingeSensor(); | 204 | initHingeSensor(); |
204 | d->m_rotation = rotation(); | 205 | d->m_rotation = rotation(); |
205 | d->m_direction = direction(); | 206 | d->m_direction = direction(); |
206 | break; | 207 | break; |
207 | default: | 208 | default: |
208 | d->m_rotation = Rot270; | 209 | d->m_rotation = Rot270; |
209 | } | 210 | } |
210 | 211 | ||
211 | // set default qte driver | 212 | // set default qte driver |
212 | switch( d->m_model ) | 213 | switch( d->m_model ) |
213 | { | 214 | { |
214 | default: | 215 | default: |
215 | d->m_qteDriver = "Transformed"; | 216 | d->m_qteDriver = "Transformed"; |
216 | } | 217 | } |
217 | 218 | ||
218 | m_leds[0] = Led_Off; | 219 | m_leds[0] = Led_Off; |
219 | 220 | ||
220 | qDebug( "HTC::init() - Using the 2.6 Xanadux on a %s", (const char*) d->m_modelstr ); | 221 | qDebug( "HTC::init() - Using the 2.6 Xanadux on a %s", (const char*) d->m_modelstr ); |
221 | } | 222 | } |
222 | 223 | ||
223 | void HTC::initButtons() | 224 | void HTC::initButtons() |
224 | { | 225 | { |
225 | qDebug( "HTC::initButtons()" ); | 226 | qDebug( "HTC::initButtons()" ); |
226 | if ( d->m_buttons ) | 227 | if ( d->m_buttons ) |
227 | return; | 228 | return; |
228 | 229 | ||
229 | d->m_buttons = new QValueList <ODeviceButton>; | 230 | d->m_buttons = new QValueList <ODeviceButton>; |
230 | 231 | ||
231 | struct htc_button * phtc_buttons; | 232 | struct htc_button * phtc_buttons; |
232 | int buttoncount; | 233 | int buttoncount; |
233 | switch ( d->m_model ) | 234 | switch ( d->m_model ) |
234 | { | 235 | { |
235 | case Model_HTC_Universal: | 236 | case Model_HTC_Universal: |
236 | if ( isQWS( ) ) | 237 | if ( isQWS( ) ) |
237 | { | 238 | { |
238 | addPreHandler(this); | 239 | addPreHandler(this); |
239 | } | 240 | } |
240 | phtc_buttons = htc_buttons_universal; | 241 | phtc_buttons = htc_buttons_universal; |
241 | buttoncount = ARRAY_SIZE(htc_buttons_universal); | 242 | buttoncount = ARRAY_SIZE(htc_buttons_universal); |
242 | break; | 243 | break; |
243 | default: | 244 | default: |
244 | phtc_buttons = htc_buttons; | 245 | phtc_buttons = htc_buttons; |
245 | buttoncount = ARRAY_SIZE(htc_buttons); | 246 | buttoncount = ARRAY_SIZE(htc_buttons); |
246 | break; | 247 | break; |
247 | } | 248 | } |
248 | 249 | ||
249 | for ( int i = 0; i < buttoncount; i++ ) { | 250 | for ( int i = 0; i < buttoncount; i++ ) { |
250 | struct htc_button *zb = phtc_buttons + i; | 251 | struct htc_button *zb = phtc_buttons + i; |
251 | ODeviceButton b; | 252 | ODeviceButton b; |
252 | 253 | ||
253 | b.setKeycode( zb->code ); | 254 | b.setKeycode( zb->code ); |
254 | b.setUserText( QObject::tr( "Button", zb->utext )); | 255 | b.setUserText( QObject::tr( "Button", zb->utext )); |
255 | b.setPixmap( OResource::loadPixmap( zb->pix )); | 256 | b.setPixmap( OResource::loadPixmap( zb->pix )); |
256 | b.setFactoryPresetPressedAction( OQCopMessage( makeChannel ( zb->fpressedservice ), zb->fpressedaction )); | 257 | b.setFactoryPresetPressedAction( OQCopMessage( makeChannel ( zb->fpressedservice ), zb->fpressedaction )); |
257 | b.setFactoryPresetHeldAction( OQCopMessage( makeChannel ( zb->fheldservice ), zb->fheldaction )); | 258 | b.setFactoryPresetHeldAction( OQCopMessage( makeChannel ( zb->fheldservice ), zb->fheldaction )); |
258 | d->m_buttons->append( b ); | 259 | d->m_buttons->append( b ); |
259 | } | 260 | } |
260 | 261 | ||
261 | reloadButtonMapping(); | 262 | reloadButtonMapping(); |
262 | } | 263 | } |
263 | 264 | ||
264 | 265 | ||