summaryrefslogtreecommitdiff
path: root/libopie2/opiecore/device/odevice_palm.cpp
Unidiff
Diffstat (limited to 'libopie2/opiecore/device/odevice_palm.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_palm.cpp222
1 files changed, 187 insertions, 35 deletions
diff --git a/libopie2/opiecore/device/odevice_palm.cpp b/libopie2/opiecore/device/odevice_palm.cpp
index d40dfce..892083e 100644
--- a/libopie2/opiecore/device/odevice_palm.cpp
+++ b/libopie2/opiecore/device/odevice_palm.cpp
@@ -1,31 +1,31 @@
1/* 1/*
2                 This file is part of the Opie Project 2 � � � � � � � � This file is part of the Opie Project
3 3
4 Copyright (C)2002-2005 The Opie Team <opie-devel@handhelds.org> 4 Copyright (C)2002-2005 The Opie Team <opie-devel@handhelds.org>
5 =. 5 =.
6 .=l. 6 .=l.
7           .>+-= 7� � � � � �.>+-=
8 _;:,     .>    :=|. This program is free software; you can 8�_;:, � � .> � �:=|. This program is free software; you can
9.> <`_,   >  .   <= redistribute it and/or modify it under 9.> <`_, � > �. � <= redistribute it and/or modify it under
10:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 10:`=1 )Y*s>-.-- � : the terms of the GNU Library General Public
11.="- .-=="i,     .._ License as published by the Free Software 11.="- .-=="i, � � .._ License as published by the Free Software
12 - .   .-<_>     .<> Foundation; either version 2 of the License, 12�- . � .-<_> � � .<> Foundation; either version 2 of the License,
13     ._= =}       : or (at your option) any later version. 13� � �._= =} � � � : or (at your option) any later version.
14    .%`+i>       _;_. 14� � .%`+i> � � � _;_.
15    .i_,=:_.      -<s. This program is distributed in the hope that 15� � .i_,=:_. � � �-<s. This program is distributed in the hope that
16     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 16� � �+ �. �-:. � � � = it will be useful, but WITHOUT ANY WARRANTY;
17 : ..    .:,     . . . without even the implied warranty of 17 : .. � �.:, � � . . . without even the implied warranty of
18    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 18� � =_ � � � �+ � � =;=|` MERCHANTABILITY or FITNESS FOR A
19  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 19� _.=:. � � � : � �:=>`: PARTICULAR PURPOSE. See the GNU
20..}^=.=       =       ; Library General Public License for more 20..}^=.= � � � = � � � ; Library General Public License for more
21++=   -.     .`     .: details. 21++= � -. � � .` � � .: details.
22:     =  ...= . :.=- 22: � � = �...= . :.=-
23 -.   .:....=;==+<; You should have received a copy of the GNU 23�-. � .:....=;==+<; You should have received a copy of the GNU
24  -_. . .   )=.  = Library General Public License along with 24� -_. . . � )=. �= Library General Public License along with
25    --        :-=` this library; see the file COPYING.LIB. 25� � -- � � � �:-=` this library; see the file COPYING.LIB.
26 If not, write to the Free Software Foundation, 26 If not, write to the Free Software Foundation,
27 Inc., 59 Temple Place - Suite 330, 27 Inc., 59 Temple Place - Suite 330,
28 Boston, MA 02111-1307, USA. 28 Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include "odevice_palm.h" 31#include "odevice_palm.h"
@@ -58,41 +58,64 @@
58#endif 58#endif
59 59
60using namespace Opie::Core; 60using namespace Opie::Core;
61using namespace Opie::Core::Internal; 61using namespace Opie::Core::Internal;
62 62
63struct palm_button palm_buttons [] = { 63struct palm_button palm_buttons [] = {
64 { Model_Palm_TX | Model_Palm_LD | Model_Palm_Z72, 64 { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 |
65 Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD |
66 Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 |
67 Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W |
68 Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P,
65 Qt::Key_F9, QT_TRANSLATE_NOOP( "Button", "Home Button" ), 69 Qt::Key_F9, QT_TRANSLATE_NOOP( "Button", "Home Button" ),
66 "devicebuttons/palm_home", 70 "devicebuttons/palm_home",
67 "QPE/Launcher", "home()", 71 "QPE/Launcher", "home()",
68 "buttonsettings", "raise()" }, 72 "buttonsettings", "raise()" },
69 { Model_Palm_TX | Model_Palm_LD | Model_Palm_Z72, 73 { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 |
74 Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD |
75 Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 |
76 Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W |
77 Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P,
70 Qt::Key_F10, QT_TRANSLATE_NOOP( "Button", "Calendar Button" ), 78 Qt::Key_F10, QT_TRANSLATE_NOOP( "Button", "Calendar Button" ),
71 "devicebuttons/palm_calendar", 79 "devicebuttons/palm_calendar",
72 "datebook", "nextView()", 80 "datebook", "nextView()",
73 "today", "raise()" }, 81 "today", "raise()" },
74 { Model_Palm_TX | Model_Palm_LD | Model_Palm_Z72, 82 { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 |
83 Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD |
84 Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 |
85 Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W |
86 Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P,
75 Qt::Key_F11, QT_TRANSLATE_NOOP( "Button", "Todo Button" ), 87 Qt::Key_F11, QT_TRANSLATE_NOOP( "Button", "Todo Button" ),
76 "devicebuttons/palm_todo", 88 "devicebuttons/palm_todo",
77 "todolist", "raise()", 89 "todolist", "raise()",
78 "todolist", "create()" }, 90 "todolist", "create()" },
79 { Model_Palm_TX | Model_Palm_LD | Model_Palm_Z72, 91 { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 |
92 Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD |
93 Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 |
94 Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W |
95 Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P,
80 Qt::Key_F12, QT_TRANSLATE_NOOP( "Button", "Mail Button" ), 96 Qt::Key_F12, QT_TRANSLATE_NOOP( "Button", "Mail Button" ),
81 "devicebuttons/palm_mail", 97 "devicebuttons/palm_mail",
82 "opiemail", "raise()", 98 "opiemail", "raise()",
83 "opiemail", "newmail()" }, 99 "opiemail", "newmail()" },
84 { Model_Palm_LD, 100 { Model_Palm_LD | Model_Palm_Z72 | Model_Palm_T600 | Model_Palm_T650 |
85 Qt::Key_F7, QT_TRANSLATE_NOOP( "Button", "Voice Memo Button" ), 101 Model_Palm_T680 | Model_Palm_T700W | Model_Palm_T700P |
86 "devicebuttons/palm_voice_memo", 102 Model_Palm_T750 | Model_Palm_T755P,
87 "QPE/TaskBar", "toggleMenu()", 103 Qt::Key_F7, QT_TRANSLATE_NOOP( "Button", "Record Button" ),
88 "QPE/TaskBar", "toggleStartMenu()" }, 104 "devicebuttons/palm_record",
89 { Model_Palm_LD, 105 "QPE/VMemo", "toggleRecord()",
90 Qt::Key_F8, QT_TRANSLATE_NOOP( "Button", "Rotate Button" ), 106 "sound", "raise()" },
91 "devicebuttons/palm_rotate", 107 { Model_Palm_TT | Model_Palm_TT2 | Model_Palm_TT3 | Model_Palm_TT5 |
92 "QPE/Rotation", "flip()",0,0}, 108 Model_Palm_TE | Model_Palm_TE2 | Model_Palm_TC | Model_Palm_LD |
109 Model_Palm_TX | Model_Palm_Z71 | Model_Palm_Z72 | Model_Palm_T600 |
110 Model_Palm_T650 | Model_Palm_T680 | Model_Palm_T700W |
111 Model_Palm_T700P | Model_Palm_T750 | Model_Palm_T755P,
112 Qt::Key_F8, QT_TRANSLATE_NOOP( "Button", "Suspend Button" ),
113 "devicebuttons/palm_suspend",
114 "suspend", "raise()",
115 "suspend", "raise()" },
93}; 116};
94 117
95void Palm::init(const QString& cpu_info) 118void Palm::init(const QString& cpu_info)
96{ 119{
97 d->m_vendorstr = "Palm"; 120 d->m_vendorstr = "Palm";
98 d->m_vendor = Vendor_Palm; 121 d->m_vendor = Vendor_Palm;
@@ -102,37 +125,121 @@ void Palm::init(const QString& cpu_info)
102 int loc = cpu_info.find( ":" ); 125 int loc = cpu_info.find( ":" );
103 if ( loc != -1 ) 126 if ( loc != -1 )
104 model = cpu_info.mid( loc+2 ).simplifyWhiteSpace(); 127 model = cpu_info.mid( loc+2 ).simplifyWhiteSpace();
105 else 128 else
106 model = cpu_info; 129 model = cpu_info;
107 130
108 if ( model == "Palm LifeDrive" ) { 131 if ( model == "Palm Tungsten T" ) {
132 d->m_modelstr = "Palm Tungsten|T";
133 d->m_model = Model_Palm_TT;
134 }
135 else if ( model == "Palm Tungsten T2" ) {
136 d->m_modelstr = "Palm Tungsten|T2";
137 d->m_model = Model_Palm_TT2;
138 }
139 else if ( model == "Palm Tungsten T3" ) {
140 d->m_modelstr = "Palm Tungsten|T3";
141 d->m_model = Model_Palm_TT3;
142 }
143 else if ( model == "Palm Tungsten T5" ) {
144 d->m_modelstr = "Palm Tungsten|T5";
145 d->m_model = Model_Palm_TT5;
146 }
147 else if ( model == "Palm Tungsten C" ) {
148 d->m_modelstr = "Palm Tungsten|C";
149 d->m_model = Model_Palm_TC;
150 }
151 else if ( model == "Palm Tungsten E" ) {
152 d->m_modelstr = "Palm Tungsten|E";
153 d->m_model = Model_Palm_TE;
154 }
155 else if ( model == "Palm Tungsten E2" ) {
156 d->m_modelstr = "Palm Tungsten|E2";
157 d->m_model = Model_Palm_TE2;
158 }
159 else if ( model == "Palm LifeDrive" ) {
109 d->m_modelstr = "Palm LifeDrive"; 160 d->m_modelstr = "Palm LifeDrive";
110 d->m_model = Model_Palm_LD; 161 d->m_model = Model_Palm_LD;
111 } 162 }
112 else if ( model == "Palm TX" ) { 163 else if ( model == "Palm TX" ) {
113 d->m_modelstr = "Palm TX"; 164 d->m_modelstr = "Palm TX";
114 d->m_model = Model_Palm_TX; 165 d->m_model = Model_Palm_TX;
115 } 166 }
167 else if ( model == "Palm Zire 71" ) {
168 d->m_modelstr = "Palm Zire 71";
169 d->m_model = Model_Palm_Z71;
170 }
116 else if ( model == "Palm Zire 72" ) { 171 else if ( model == "Palm Zire 72" ) {
117 d->m_modelstr = "Palm Zire 72"; 172 d->m_modelstr = "Palm Zire 72";
118 d->m_model = Model_Palm_Z72; 173 d->m_model = Model_Palm_Z72;
119 } 174 }
175 else if ( model == "Palm Treo 600" ) {
176 d->m_modelstr = "Palm Treo 600";
177 d->m_model = Model_Palm_T600;
178 }
179 else if ( model == "Palm Treo 650" ) {
180 d->m_modelstr = "Palm Treo 650";
181 d->m_model = Model_Palm_T650;
182 }
183 else if ( model == "Palm Treo 680" ) {
184 d->m_modelstr = "Palm Treo 680";
185 d->m_model = Model_Palm_T680;
186 }
187 else if ( model == "Palm Treo 700w" ) {
188 d->m_modelstr = "Palm Treo 700w/700wx";
189 d->m_model = Model_Palm_T700W;
190 }
191 else if ( model == "Palm Treo 700p" ) {
192 d->m_modelstr = "Palm Treo 700p";
193 d->m_model = Model_Palm_T700P;
194 }
195 else if ( model == "Palm Treo 750" ) {
196 d->m_modelstr = "Palm Treo 750";
197 d->m_model = Model_Palm_T750;
198 }
199 else if ( model == "Palm Treo 755p" ) {
200 d->m_modelstr= "Palm Treo 755";
201 d->m_model= Model_Palm_T755P;
202 }
203 else if ( model == "Palm Foleo" ) {
204 d->m_modelstr= "Palm Foleo";
205 d->m_model= Model_Palm_FOLEO;
206 }
120 else 207 else
121 d->m_model = Model_Unknown; 208 d->m_model = Model_Unknown;
122 209
123 switch ( d->m_model ) 210 switch ( d->m_model )
124 { 211 {
212 case Model_Palm_TT3:
213 case Model_Palm_TT5:
214 case Model_Palm_TC:
125 case Model_Palm_LD: 215 case Model_Palm_LD:
126 case Model_Palm_TX: 216 case Model_Palm_TX:
217 case Model_Palm_TE2:
127 case Model_Palm_Z72: 218 case Model_Palm_Z72:
128 m_backlightdev = "/sys/class/backlight/pxapwm-bl/"; 219 m_backlightdev = "/sys/class/backlight/pxapwm-bl/";
129 d->m_rotation = Rot0; 220 d->m_rotation = Rot0;
130 d->m_direction = CCW; 221 d->m_direction = CCW;
131 d->m_qteDriver = "Transformed"; 222 d->m_qteDriver = "Transformed";
132 break; 223 break;
224 case Model_Palm_T600:
225 case Model_Palm_TT:
226 case Model_Palm_TT2:
227 case Model_Palm_TE:
228 case Model_Palm_Z71:
229 m_backlightdev = "/sys/class/backlight/omap-bl/";
230 break;
231 case Model_Palm_T650:
232 case Model_Palm_T680:
233 case Model_Palm_T700W:
234 case Model_Palm_T700P:
235 case Model_Palm_T750:
236 case Model_Palm_T755P:
237 m_backlightdev = "/sys/class/backlight/corgi-bl/";
238 break;
239
133 default: 240 default:
134 m_backlightdev = ""; 241 m_backlightdev = "";
135 } 242 }
136 243
137} 244}
138 245
@@ -204,14 +311,30 @@ bool Palm::suspend()
204 bool res = false; 311 bool res = false;
205 312
206 if ( !isQWS( ) ) // only qwsserver is allowed to suspend 313 if ( !isQWS( ) ) // only qwsserver is allowed to suspend
207 return false; 314 return false;
208 315
209 switch ( d->m_model ) { 316 switch ( d->m_model ) {
317 case Model_Palm_TT:
318 case Model_Palm_TT2:
319 case Model_Palm_TT3:
320 case Model_Palm_TT5:
321 case Model_Palm_TE:
322 case Model_Palm_TE2:
323 case Model_Palm_TC:
210 case Model_Palm_LD: 324 case Model_Palm_LD:
325 case Model_Palm_TX:
326 case Model_Palm_Z71:
211 case Model_Palm_Z72: 327 case Model_Palm_Z72:
328 case Model_Palm_T600:
329 case Model_Palm_T650:
330 case Model_Palm_T680:
331 case Model_Palm_T700W:
332 case Model_Palm_T700P:
333 case Model_Palm_T750:
334 case Model_Palm_T755P:
212 { 335 {
213 QCopChannel::send( "QPE/System", "aboutToSuspend()" ); 336 QCopChannel::send( "QPE/System", "aboutToSuspend()" );
214 337
215 ::sync(); // flush fs caches 338 ::sync(); // flush fs caches
216 res = ( ::system ( "apm --suspend" ) == 0 ); 339 res = ( ::system ( "apm --suspend" ) == 0 );
217 340
@@ -230,15 +353,30 @@ int Palm::displayBrightnessResolution() const
230{ 353{
231 int res = 1; 354 int res = 1;
232 int fd = -1; 355 int fd = -1;
233 356
234 switch ( d->m_model ) 357 switch ( d->m_model )
235 { 358 {
359 case Model_Palm_TT:
360 case Model_Palm_TT2:
361 case Model_Palm_TT3:
362 case Model_Palm_TT5:
363 case Model_Palm_TE:
364 case Model_Palm_TE2:
365 case Model_Palm_TC:
236 case Model_Palm_LD: 366 case Model_Palm_LD:
237 case Model_Palm_TX: 367 case Model_Palm_TX:
368 case Model_Palm_Z71:
238 case Model_Palm_Z72: 369 case Model_Palm_Z72:
370 case Model_Palm_T600:
371 case Model_Palm_T650:
372 case Model_Palm_T680:
373 case Model_Palm_T700W:
374 case Model_Palm_T700P:
375 case Model_Palm_T750:
376 case Model_Palm_T755P:
239 fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK ); 377 fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
240 if ( fd != -1) 378 if ( fd != -1)
241 { 379 {
242 char buf[100]; 380 char buf[100];
243 if ( ::read( fd, &buf[0], sizeof buf ) > 0 ) 381 if ( ::read( fd, &buf[0], sizeof buf ) > 0 )
244 ::sscanf( &buf[0], "%d", &res ); 382 ::sscanf( &buf[0], "%d", &res );
@@ -264,16 +402,30 @@ bool Palm::setDisplayBrightness( int bright )
264 int numberOfSteps = displayBrightnessResolution(); 402 int numberOfSteps = displayBrightnessResolution();
265 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255; 403 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255;
266 int fd = -1; 404 int fd = -1;
267 405
268 switch ( d->m_model ) 406 switch ( d->m_model )
269 { 407 {
270 408 case Model_Palm_TT:
409 case Model_Palm_TT2:
410 case Model_Palm_TT3:
411 case Model_Palm_TT5:
412 case Model_Palm_TE:
413 case Model_Palm_TE2:
414 case Model_Palm_TC:
271 case Model_Palm_LD: 415 case Model_Palm_LD:
272 case Model_Palm_TX: 416 case Model_Palm_TX:
417 case Model_Palm_Z71:
273 case Model_Palm_Z72: 418 case Model_Palm_Z72:
419 case Model_Palm_T600:
420 case Model_Palm_T650:
421 case Model_Palm_T680:
422 case Model_Palm_T700W:
423 case Model_Palm_T700P:
424 case Model_Palm_T750:
425 case Model_Palm_T755P:
274 fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK ); 426 fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
275 if ( fd != -1 ) 427 if ( fd != -1 )
276 { 428 {
277 char buf[100]; 429 char buf[100];
278 int len = ::snprintf( &buf[0], sizeof buf, "%d", val ); 430 int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
279 res = ( ::write( fd, &buf[0], len ) == 0 ); 431 res = ( ::write( fd, &buf[0], len ) == 0 );