summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ChangeLog3
-rw-r--r--README3
-rw-r--r--libopie2/opiecore/device/device.pro14
-rw-r--r--libopie2/opiecore/device/odevice.cpp4
-rw-r--r--libopie2/opiecore/device/odevice.h24
-rw-r--r--libopie2/opiecore/device/odevice_motorola_ezx.cpp325
-rw-r--r--libopie2/opiecore/device/odevice_motorola_ezx.h102
7 files changed, 457 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index ce51dab..db5c0ef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,202 +1,203 @@
1 2005-??-??Opie 1.2.2 1 2005-??-??Opie 1.2.2
2 2
3 3
4 New Features 4 New Features
5 ------------ 5 ------------
6 * Appearance: Added configuration options to set smallIconSize, bigIconSize, useBigPixmaps (hrw, drw) 6 * Appearance: Added configuration options to set smallIconSize, bigIconSize, useBigPixmaps (hrw, drw)
7 * Opie-Notes: Notes application based on NoteZ (hrw) 7 * Opie-Notes: Notes application based on NoteZ (hrw)
8 * Opie-PackageManager: Added two configuration options: "Force recursive", "Verbose fetch" (hrw) 8 * Opie-PackageManager: Added two configuration options: "Force recursive", "Verbose fetch" (hrw)
9 * Added hardware support for HTC Universal (ljp) 9 * Added hardware support for HTC Universal (ljp)
10 * Make Opie-Bluetooth subsystem actually usable (korovkin) 10 * Made Opie-Bluetooth subsystem actually usable (korovkin)
11 * Added hardware support for the Motorola EZX platform (mickeyl)
11 12
12 Fixed Bugs 13 Fixed Bugs
13 ---------- 14 ----------
14 * #1695 - Date selector use too small fontsize on VGA screen (hrw) 15 * #1695 - Date selector use too small fontsize on VGA screen (hrw)
15 * #1686 - opie-console lack UI setting for switching scrollbar (hrw) 16 * #1686 - opie-console lack UI setting for switching scrollbar (hrw)
16 * #1647 - Opie-console doesn't respect scroll-bar on left side (hrw) 17 * #1647 - Opie-console doesn't respect scroll-bar on left side (hrw)
17 * #1624 - Button settngs changes are applied only after restart (hrw) 18 * #1624 - Button settngs changes are applied only after restart (hrw)
18 * #1492 - Backup and Restore does not show list of backups to restore on start (hrw) 19 * #1492 - Backup and Restore does not show list of backups to restore on start (hrw)
19 * n.a. - remove hardcoded font size from wellenreiter (hrw) 20 * n.a. - remove hardcoded font size from wellenreiter (hrw)
20 * n.a. - added patch to build QT/E 2.3.10 with gcc 4.x.x (hrw) 21 * n.a. - added patch to build QT/E 2.3.10 with gcc 4.x.x (hrw)
21 * n.a. - make blue-pin UI resizable to looks good in any resolution (hrw) 22 * n.a. - make blue-pin UI resizable to looks good in any resolution (hrw)
22 * n.a. - fix a problem with vCard send to Sony Ericsson k600i (ar) 23 * n.a. - fix a problem with vCard send to Sony Ericsson k600i (ar)
23 * n.a. - add a patch to build Qt/E 2.3.10 on amd64 with gcc 4.x.x (ar) 24 * n.a. - add a patch to build Qt/E 2.3.10 on amd64 with gcc 4.x.x (ar)
24 * n.a. - Opie-console fallback to FixedFont settings from qpe.conf in config (hrw) 25 * n.a. - Opie-console fallback to FixedFont settings from qpe.conf in config (hrw)
25 * n.a. - Set version to 1.2.1 in About applet (hrw) 26 * n.a. - Set version to 1.2.1 in About applet (hrw)
26 * n.a. - add firstusage and background pictures for 480x640 devices (mickeyl) 27 * n.a. - add firstusage and background pictures for 480x640 devices (mickeyl)
27 * n.a. - many bluetooth fixes (korovkin) 28 * n.a. - many bluetooth fixes (korovkin)
28 29
29 Internal 30 Internal
30 -------- 31 --------
31 * libopiecore: /etc/oz_version renamed to /etc/openzaurus-version (hrw) 32 * libopiecore: /etc/oz_version renamed to /etc/openzaurus-version (hrw)
32 * libopiecore: SL6000 (tosa) now uses corgi-bl (Dirk Opfer) 33 * libopiecore: SL6000 (tosa) now uses corgi-bl (Dirk Opfer)
33 * library/version.h: introduce integer version code in OPIE_VERSION for conditional compilation 34 * library/version.h: introduce integer version code in OPIE_VERSION for conditional compilation
34 35
35 2005-09-11Opie 1.2.1 36 2005-09-11Opie 1.2.1
36 37
37 38
38 New Features 39 New Features
39 ------------ 40 ------------
40 * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker) 41 * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker)
41 * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly) 42 * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly)
42 * Opie-Networksettings: Add support for wlan-ng devices and improve WEP handling (Dirk Opfer) 43 * Opie-Networksettings: Add support for wlan-ng devices and improve WEP handling (Dirk Opfer)
43 * Wellenreiter: Remove Joining networks - use OpieStumbler for that (mickeyl) 44 * Wellenreiter: Remove Joining networks - use OpieStumbler for that (mickeyl)
44 * Opie-Mobilemsg has gone unsupported - it never really worked and there will be a replacement (mickeyl) 45 * Opie-Mobilemsg has gone unsupported - it never really worked and there will be a replacement (mickeyl)
45 * Opie-Tabmanager has gone unsupported - it barely works and there is not much of a use of it anyway (mickeyl) 46 * Opie-Tabmanager has gone unsupported - it barely works and there is not much of a use of it anyway (mickeyl)
46 * Checkbook: Added configuration option to use smaller font for checkbook transaction tab (hrw) 47 * Checkbook: Added configuration option to use smaller font for checkbook transaction tab (hrw)
47 * ZSafe: Made UI conform to Opie standards (drw) 48 * ZSafe: Made UI conform to Opie standards (drw)
48 * Today Addressbook plugin: Fixed configuration to show/not show birthdays, use checkboxes for selection (hrw) 49 * Today Addressbook plugin: Fixed configuration to show/not show birthdays, use checkboxes for selection (hrw)
49 * Opie-Console: Read initial fixed font configuration from qpe.conf (mickeyl) 50 * Opie-Console: Read initial fixed font configuration from qpe.conf (mickeyl)
50 * Opie-PcmciaApplet: Configure insert/resume actions and bind unsupported cards (mickeyl) 51 * Opie-PcmciaApplet: Configure insert/resume actions and bind unsupported cards (mickeyl)
51 * SysInfo: Remove CPU tab and add Devices tab instead (mickeyl) 52 * SysInfo: Remove CPU tab and add Devices tab instead (mickeyl)
52 * Opie-smb: Added Opie front end for Samba (ljp) 53 * Opie-smb: Added Opie front end for Samba (ljp)
53 * Opie-Bluetooth: Replace obex send implementation and patch libopieobex and the bluetoothapplet (Michael Haynie) 54 * Opie-Bluetooth: Replace obex send implementation and patch libopieobex and the bluetoothapplet (Michael Haynie)
54 * Opieplayer: rudimentary podcast support (ljp) 55 * Opieplayer: rudimentary podcast support (ljp)
55 56
56 Fixed Bugs 57 Fixed Bugs
57 ---------- 58 ----------
58 * #1377 - Suspend Powermanagement when switched to another VT (mickeyl) 59 * #1377 - Suspend Powermanagement when switched to another VT (mickeyl)
59 - We actually suspend the complete Opie now in that case. 60 - We actually suspend the complete Opie now in that case.
60 * #1384 - Battery status updated improperly when charging (skyhusker) 61 * #1384 - Battery status updated improperly when charging (skyhusker)
61 * #1476 - Wrong order of application entries in the O-menu (skyhusker) 62 * #1476 - Wrong order of application entries in the O-menu (skyhusker)
62 * #1514 - Remove usage of cardmon/pcmcia picture in applications. pcmcia is now an inline picture (mickeyl) 63 * #1514 - Remove usage of cardmon/pcmcia picture in applications. pcmcia is now an inline picture (mickeyl)
63 * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller) 64 * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller)
64 * #1543 - Time Settings: "predict" tab is displayed twice after reopen (hrw) 65 * #1543 - Time Settings: "predict" tab is displayed twice after reopen (hrw)
65 * #1546 - Battery applet popup is not always large enough to show jacket remaining info (skyhusker) 66 * #1546 - Battery applet popup is not always large enough to show jacket remaining info (skyhusker)
66 * #1557 - Light&Power-Settings don't store warning intervall and warning levels (skyhusker) 67 * #1557 - Light&Power-Settings don't store warning intervall and warning levels (skyhusker)
67 * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller) 68 * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller)
68 * #1614 - Make Opie-console start in $HOME instead of / (skyhusker) 69 * #1614 - Make Opie-console start in $HOME instead of / (skyhusker)
69 * #1635 - opie-today, datebook-plugin does not show notes (skyhusker) 70 * #1635 - opie-today, datebook-plugin does not show notes (skyhusker)
70 * #1665 - Opie-IRC displays the host prepended to the message when peer is using and ipv6 address (skyhusker) 71 * #1665 - Opie-IRC displays the host prepended to the message when peer is using and ipv6 address (skyhusker)
71 * #1666 - Opie-IRC does not allow to add !channels in config asautojoin ones (skyhusker) 72 * #1666 - Opie-IRC does not allow to add !channels in config asautojoin ones (skyhusker)
72 * #1667 - Opie-IRC does not show messages from !channel (skyhusker) 73 * #1667 - Opie-IRC does not show messages from !channel (skyhusker)
73 * #1679 - Security PIN plugin is QVGA sized (hrw) 74 * #1679 - Security PIN plugin is QVGA sized (hrw)
74 * #1682 - Properly resize tab control in OTabWidget (drw) 75 * #1682 - Properly resize tab control in OTabWidget (drw)
75 * n.a. - always show volume and wireless applet popups inside visible screen (deller) 76 * n.a. - always show volume and wireless applet popups inside visible screen (deller)
76 * n.a. - scale O-Menu-Applets appropriately (mickeyl) 77 * n.a. - scale O-Menu-Applets appropriately (mickeyl)
77 * n.a. - libopienet: fix bugs in wireless scanning and setting SSID (skyhusker) 78 * n.a. - libopienet: fix bugs in wireless scanning and setting SSID (skyhusker)
78 * n.a. - Wellenreiter: relax WE version matching test a bit (mickeyl) 79 * n.a. - Wellenreiter: relax WE version matching test a bit (mickeyl)
79 * n.a. - scale BluezApplet appropriately and use larger icons (mickeyl) 80 * n.a. - scale BluezApplet appropriately and use larger icons (mickeyl)
80 * n.a. - memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham) 81 * n.a. - memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham)
81 * n.a. - networksettings: ignore hostap control interfaces wifi* (mickeyl) 82 * n.a. - networksettings: ignore hostap control interfaces wifi* (mickeyl)
82 * n.a. - Today Addressbook plugin fix configuration to show/not show birthdays, use checkboxes for selection (hrw) 83 * n.a. - Today Addressbook plugin fix configuration to show/not show birthdays, use checkboxes for selection (hrw)
83 * n.a. - remove hardcoded font size from netsystemtime (hrw) 84 * n.a. - remove hardcoded font size from netsystemtime (hrw)
84 * n.a. - remove hardcoded font size from checkbook graphs (hrw) 85 * n.a. - remove hardcoded font size from checkbook graphs (hrw)
85 * n.a. - Dagger - fixes for Sword 1.5.8, morph tag x-refs, closing last tab crash (drw) 86 * n.a. - Dagger - fixes for Sword 1.5.8, morph tag x-refs, closing last tab crash (drw)
86 87
87 88
88 Internal 89 Internal
89 -------- 90 --------
90 * Make BluezApplet use OTaskbarApplet (mickeyl) 91 * Make BluezApplet use OTaskbarApplet (mickeyl)
91 * libopiecore: rewrite OFileNotification to use the Linux 2.6 inotify interface (mickeyl) 92 * libopiecore: rewrite OFileNotification to use the Linux 2.6 inotify interface (mickeyl)
92 * libopiecore: add ODirNotification - recursive directory notifications (mickeyl) 93 * libopiecore: add ODirNotification - recursive directory notifications (mickeyl)
93 * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl) 94 * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl)
94 * libopieui: Remove OVersatileView and OVersatileViewItem (mickeyl) 95 * libopieui: Remove OVersatileView and OVersatileViewItem (mickeyl)
95 * libopienet: Miscellaneous API cleanups (mickeyl) 96 * libopienet: Miscellaneous API cleanups (mickeyl)
96 * libopiecore: Add linux pcmcia system abstraction classes (mickeyl) 97 * libopiecore: Add linux pcmcia system abstraction classes (mickeyl)
97 * libopiecore: ODevice now knows the default gfx driver to use (mteira,mickeyl) 98 * libopiecore: ODevice now knows the default gfx driver to use (mteira,mickeyl)
98 * libopiecore: Add support for the Sharp SL-C3100 "Borzoi" (mickeyl) 99 * libopiecore: Add support for the Sharp SL-C3100 "Borzoi" (mickeyl)
99 * libopiecore: Add support for the new Linux Inputsystem Switches type [necessary for auto rotation in 2.6.13] (mickeyl) 100 * libopiecore: Add support for the new Linux Inputsystem Switches type [necessary for auto rotation in 2.6.13] (mickeyl)
100 * Remove assumptions about default gfx driver ("Transformed") all over the place (mteira,mickeyl) 101 * Remove assumptions about default gfx driver ("Transformed") all over the place (mteira,mickeyl)
101 * Fix / Optimize number of scanned directories (ljp) 102 * Fix / Optimize number of scanned directories (ljp)
102 * Use five point mouse calibration to make calibrated mouse drivers work on newer Zaurii (rp,mickeyl) 103 * Use five point mouse calibration to make calibrated mouse drivers work on newer Zaurii (rp,mickeyl)
103 104
104 2005-03-25Opie 1.2.0 105 2005-03-25Opie 1.2.0
105 106
106 Fixed Bugs 107 Fixed Bugs
107 ---------- 108 ----------
108 * #1613 - AdvancedFM - scale toolbar icons appropriately (drw) 109 * #1613 - AdvancedFM - scale toolbar icons appropriately (drw)
109 * #1620 - OFileSelector - show the button on press and not on press on hold (alwin) 110 * #1620 - OFileSelector - show the button on press and not on press on hold (alwin)
110 * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke) 111 * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke)
111 * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw) 112 * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw)
112 * n.a.- make qpeglobal.h include qglobal.h (zecke) 113 * n.a.- make qpeglobal.h include qglobal.h (zecke)
113 114
114 2005-03-20Opie 1.2.0-rc1 115 2005-03-20Opie 1.2.0-rc1
115 116
116 117
117 New Features 118 New Features
118 ------------ 119 ------------
119 * Launcher: Support a static background pixmap (mickeyl) 120 * Launcher: Support a static background pixmap (mickeyl)
120 * LauncherSettings: Choose whether to have a static background pixmap (mickeyl) 121 * LauncherSettings: Choose whether to have a static background pixmap (mickeyl)
121 * PackageManager supports the 'lists_dir' ipkg configuration option (drw) 122 * PackageManager supports the 'lists_dir' ipkg configuration option (drw)
122 * Added hi-res inline images for large resolution devices (drw) 123 * Added hi-res inline images for large resolution devices (drw)
123 * Improved launcher icons for consistency (ar) 124 * Improved launcher icons for consistency (ar)
124 * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin) 125 * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin)
125 126
126 Fixed Bugs 127 Fixed Bugs
127 ---------- 128 ----------
128 * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers) 129 * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers)
129 * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw) 130 * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw)
130 * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp) 131 * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp)
131 * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke) 132 * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke)
132 * #1482 - Fix double '/' in paths (zecke) 133 * #1482 - Fix double '/' in paths (zecke)
133 * #1536 - Autosave of custom locations in opie backup (ar) 134 * #1536 - Autosave of custom locations in opie backup (ar)
134 * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke) 135 * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke)
135 * #1540 - Implemented deletion of DocLnks in opie-eye (zecke) 136 * #1540 - Implemented deletion of DocLnks in opie-eye (zecke)
136 * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw) 137 * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw)
137 * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke) 138 * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke)
138 * #1554 - Fixed Opie-Console name in .desktop file (mickeyl) 139 * #1554 - Fixed Opie-Console name in .desktop file (mickeyl)
139 * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke) 140 * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke)
140 * #1558 - Fixed opie-login breaking opie startup (mickeyl) 141 * #1558 - Fixed opie-login breaking opie startup (mickeyl)
141 * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning) 142 * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning)
142 * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar) 143 * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar)
143 * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers) 144 * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers)
144 * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints) 145 * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints)
145 * #1604 - Checkbook crashed on startup (drw) 146 * #1604 - Checkbook crashed on startup (drw)
146 * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers) 147 * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers)
147 * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers) 148 * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers)
148 * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw) 149 * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw)
149 * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw) 150 * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw)
150 * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw) 151 * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw)
151 * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw) 152 * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw)
152 * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw) 153 * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw)
153 * n.a. - AddressBook - fixed sorting by 'File As' name (drw) 154 * n.a. - AddressBook - fixed sorting by 'File As' name (drw)
154 * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers) 155 * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers)
155 * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw) 156 * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw)
156 157
157 Internal 158 Internal
158 -------- 159 --------
159 * Worked around bug in Qt/Embedded 2.3.10: qt_version() returns 231 (mickeyl) 160 * Worked around bug in Qt/Embedded 2.3.10: qt_version() returns 231 (mickeyl)
160 * Killed the need for weak symbols in QtE (zecke) 161 * Killed the need for weak symbols in QtE (zecke)
161 * Added optional building libqpe without inline images (mickeyl) 162 * Added optional building libqpe without inline images (mickeyl)
162 * OColorButton - fixed so does not emit a colorSelected signal inside of resizeEvent (drw) 163 * OColorButton - fixed so does not emit a colorSelected signal inside of resizeEvent (drw)
163 164
164 2005-02-03Opie 1.1.9 165 2005-02-03Opie 1.1.9
165 166
166 New Features 167 New Features
167 ------------ 168 ------------
168 * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl) 169 * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl)
169 * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl) 170 * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl)
170 * Usability enhancements in OpieIRC (skyhusker) 171 * Usability enhancements in OpieIRC (skyhusker)
171 172
172 Fixed Bugs 173 Fixed Bugs
173 ---------- 174 ----------
174 * #1501 - Fixed bug in todo sql backend (eilers) 175 * #1501 - Fixed bug in todo sql backend (eilers)
175 * #1505 - Added more Swap sizes in memoryapplet (mickeyl) 176 * #1505 - Added more Swap sizes in memoryapplet (mickeyl)
176 * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke) 177 * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke)
177 * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke) 178 * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke)
178 * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl) 179 * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl)
179 * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl) 180 * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl)
180 * n.a. - Fixed numerous buglets in OpieIRC (skyhusker) 181 * n.a. - Fixed numerous buglets in OpieIRC (skyhusker)
181 182
182 Internal 183 Internal
183 -------- 184 --------
184 * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl) 185 * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl)
185 * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl) 186 * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl)
186 * Made Opie compilable with Qt/Embedded 2.3.10 (ar) 187 * Made Opie compilable with Qt/Embedded 2.3.10 (ar)
187 * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl) 188 * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl)
188 * Build tree cleanups (mickeyl) 189 * Build tree cleanups (mickeyl)
189 190
190 2004-11-26Opie 1.1.8 191 2004-11-26Opie 1.1.8
191 192
192 New Features 193 New Features
193 ------------ 194 ------------
194 * PackageManager supports installation of local ipkg files (drw) 195 * PackageManager supports installation of local ipkg files (drw)
195 * PackageManager supports linking of applications to root (drw) 196 * PackageManager supports linking of applications to root (drw)
196 * PackageManager supports src/gz feeds (drw,wimpie) 197 * PackageManager supports src/gz feeds (drw,wimpie)
197 * Added a syslog information tab to sysinfo (mickeyl) 198 * Added a syslog information tab to sysinfo (mickeyl)
198 * Added new, more consistent, PIM icons + a GIMP teplate (ar) 199 * Added new, more consistent, PIM icons + a GIMP teplate (ar)
199 200
200 Fixed Bugs 201 Fixed Bugs
201 ---------- 202 ----------
202 * #1017 - Tetrix doesn't display correctly for high resolution screens (drw) 203 * #1017 - Tetrix doesn't display correctly for high resolution screens (drw)
diff --git a/README b/README
index 89a9892..0c6ef68 100644
--- a/README
+++ b/README
@@ -1,109 +1,112 @@
11. How to use the Opie build system 11. How to use the Opie build system
2==================================== 2====================================
3There's a tutorial document at: 3There's a tutorial document at:
4http://www.uv-ac.de/opiedev/opiedev.html 4http://www.uv-ac.de/opiedev/opiedev.html
5 5
6The API reference currently is at: 6The API reference currently is at:
7http://handhelds.org/~zecke/apidocs/index.html 7http://handhelds.org/~zecke/apidocs/index.html
8 8
9You will need qvfb, uic and 9You will need qvfb, uic and
10(if you want to develop applications) designer 10(if you want to develop applications) designer
11compiled and linked against Qt/X11. 11compiled and linked against Qt/X11.
12That means you must download and configure/make it: 12That means you must download and configure/make it:
13wget ftp://ftp.trolltech.com/qt/source/qt-x11-2.3.2.tar.gz 13wget ftp://ftp.trolltech.com/qt/source/qt-x11-2.3.2.tar.gz
14(Alternatively, you can get static binaries from http://www.vanille.de/tools) 14(Alternatively, you can get static binaries from http://www.vanille.de/tools)
15 15
16You will need Qt/Embedded 2.3.10. Note that we don't support any 16You will need Qt/Embedded 2.3.10. Note that we don't support any
17other Qt/Embedded version anymore. 17other Qt/Embedded version anymore.
18 18
19You can get it from: 19You can get it from:
20ftp://ftp.trolltech.com/qt/source/qt-embedded-2.3.10-free.tar.bz2 20ftp://ftp.trolltech.com/qt/source/qt-embedded-2.3.10-free.tar.bz2
21 21
22Set QTDIR to point to your qt/embedded source tree, such as: 22Set QTDIR to point to your qt/embedded source tree, such as:
23export QTDIR=/opt/qt-2.3.10 23export QTDIR=/opt/qt-2.3.10
24 24
25You need to do set the OPIEDIR environment variable: 25You need to do set the OPIEDIR environment variable:
26export OPIEDIR=`pwd` 26export OPIEDIR=`pwd`
27or 27or
28export OPIEDIR=~/projects/sources/opie 28export OPIEDIR=~/projects/sources/opie
29or wherever you placed the Opie sources. 29or wherever you placed the Opie sources.
30 30
31You need to adjust your runtime library search path, 31You need to adjust your runtime library search path,
32so that the Qt/Embedded and Opie libraries can be found: 32so that the Qt/Embedded and Opie libraries can be found:
33export LD_LIBRARY_PATH=$OPIEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH 33export LD_LIBRARY_PATH=$OPIEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
34 34
35You have to apply the patches corresponding to your Qt/Embedded version 35You have to apply the patches corresponding to your Qt/Embedded version
36and copy the qconfig-qpe.h file to $QTDIR/src/tools: 36and copy the qconfig-qpe.h file to $QTDIR/src/tools:
37cd $QTDIR; cat $OPIEDIR/qt/qt-<version>.patch/qte<version>-all.patch | patch -p1 37cd $QTDIR; cat $OPIEDIR/qt/qt-<version>.patch/qte<version>-all.patch | patch -p1
38cp $OPIEDIR/qt/qconfig-qpe.h $QTDIR/src/tools 38cp $OPIEDIR/qt/qconfig-qpe.h $QTDIR/src/tools
39 39
40You are now ready to configure and build Qt/Embedded 40You are now ready to configure and build Qt/Embedded
41 41
42cd $QTDIR 42cd $QTDIR
43echo 'yes' | ./configure -qconfig qpe -depths 4,16,24,32 -system-jpeg -system-libpng -system-zlib -no-xkb -no-sm -no-xft -qvfb 43echo 'yes' | ./configure -qconfig qpe -depths 4,16,24,32 -system-jpeg -system-libpng -system-zlib -no-xkb -no-sm -no-xft -qvfb
44make 44make
45 45
46Note that the above command ( -qvfb ) compiles in the Virtual 46Note that the above command ( -qvfb ) compiles in the Virtual
47Framebuffer and is mostly meant for development on your host system. 47Framebuffer and is mostly meant for development on your host system.
48For cross compiling, you will need to use the -xplatform switch. 48For cross compiling, you will need to use the -xplatform switch.
49See ./configure --help for details about the possible options. 49See ./configure --help for details about the possible options.
50 50
51Once you have these compiled, be sure to set the PATH to ensure your (cross)compiler 51Once you have these compiled, be sure to set the PATH to ensure your (cross)compiler
52is available. 52is available.
53 53
54Then do the following in the opie source tree: 54Then do the following in the opie source tree:
55 55
56make clean 56make clean
57make menuconfig 57make menuconfig
58 58
59Now you can move through the menu and select or deselect anything.. 59Now you can move through the menu and select or deselect anything..
60Exit and save the configuration and enter "make" to build everything selected. 60Exit and save the configuration and enter "make" to build everything selected.
61 61
62Have fun! 62Have fun!
63 63
642. Required Libraries 642. Required Libraries
65===================== 65=====================
66 66
67For a successful Opie build, you need to install the following libraries and headers: 67For a successful Opie build, you need to install the following libraries and headers:
68 68
69* libsdl >= 1.2.0 69* libsdl >= 1.2.0
70 http://www.libsdl.org/download-1.2.php 70 http://www.libsdl.org/download-1.2.php
71 71
72* libxine >= 1.0 72* libxine >= 1.0
73 http://prdownloads.sourceforge.net/xine/ 73 http://prdownloads.sourceforge.net/xine/
74 74
75* libpcap >= 0.7.2 75* libpcap >= 0.7.2
76 http://www.tcpdump.org/release/ 76 http://www.tcpdump.org/release/
77 77
78* libetpan >= 0.34 78* libetpan >= 0.34
79 http://prdownloads.sourceforge.net/libetpan/ 79 http://prdownloads.sourceforge.net/libetpan/
80 80
81* libsqlite >= 3.0.0 81* libsqlite >= 3.0.0
82 http://www.sqlite.org/download.html 82 http://www.sqlite.org/download.html
83 83
84* libipk >= 138 84* libipk >= 138
85 ftp://handhelds.org/linux/packages/ipkg 85 ftp://handhelds.org/linux/packages/ipkg
86 86
87* libobexftp >= 0.19 87* libobexftp >= 0.19
88 http://triq.net/obexftp.html 88 http://triq.net/obexftp.html
89 89
903. Required Programs 903. Required Programs
91==================== 91====================
92 92
93For a successful usage of Opie, you should install the following programs: 93For a successful usage of Opie, you should install the following programs:
94 94
95* obexftpd 95* obexftpd
96* obextool 96* obextool
97 97
984. Supported Devices 984. Supported Devices
99==================== 99====================
100 100
101Sharp Zaurus SL-5x00, SL-B500, SL-C7x0, SL-C8x0, SL-C1000, SL-C3000, SL-C3100, SL-6000 101Sharp Zaurus SL-5x00, SL-B500, SL-C7x0, SL-C8x0, SL-C1000, SL-C3000, SL-C3100, SL-6000
102 102
103HP iPAQ 36xx, 37xx, 38xx, 39xx, 54xx, 55xx 103HP iPAQ 36xx, 37xx, 38xx, 39xx, 54xx, 55xx
104 104
105SIEMENS SIMpad CL4, SL4, SLC, T-SinusPAD 105SIEMENS SIMpad CL4, SL4, SLC, T-SinusPAD
106 106
107MasterIA Beagle, Tradesquare.NL Tuxpad 1 107MasterIA Beagle, Tradesquare.NL Tuxpad 1
108 108
109GMate Yopy 3x00 109GMate Yopy 3x00
110
111Motorola EZX A780, E680
112
diff --git a/libopie2/opiecore/device/device.pro b/libopie2/opiecore/device/device.pro
index 0954733..b517032 100644
--- a/libopie2/opiecore/device/device.pro
+++ b/libopie2/opiecore/device/device.pro
@@ -1,28 +1,30 @@
1HEADERS += device/odevice.h \ 1HEADERS += device/odevice.h \
2 device/odevicebutton.h \ 2 device/odevicebutton.h \
3 device/odevice_abstractmobiledevice.h \ 3 device/odevice_abstractmobiledevice.h \
4 device/odevice_beagle.h \ 4 device/odevice_beagle.h \
5 device/odevice_ipaq.h \ 5 device/odevice_ipaq.h \
6 device/odevice_jornada.h \ 6 device/odevice_jornada.h \
7 device/odevice_ramses.h \ 7 device/odevice_ramses.h \
8 device/odevice_simpad.h \ 8 device/odevice_simpad.h \
9 device/odevice_zaurus.h \ 9 device/odevice_zaurus.h \
10 device/odevice_genuineintel.h \ 10 device/odevice_genuineintel.h \
11 device/odevice_yopy.h \ 11 device/odevice_yopy.h \
12 device/odevice_mypal.h \ 12 device/odevice_mypal.h \
13 device/odevice_htc.h 13 device/odevice_htc.h \
14 device/odevice_motorola_ezx.h
14 15
15SOURCES += device/odevice.cpp \ 16SOURCES += device/odevice.cpp \
16 device/odevicebutton.cpp \ 17 device/odevicebutton.cpp \
17 device/odevice_abstractmobiledevice.cpp \ 18 device/odevice_abstractmobiledevice.cpp \
18 device/odevice_beagle.cpp \ 19 device/odevice_beagle.cpp \
19 device/odevice_ipaq.cpp \ 20 device/odevice_ipaq.cpp \
20 device/odevice_jornada.cpp\ 21 device/odevice_jornada.cpp\
21 device/odevice_ramses.cpp \ 22 device/odevice_ramses.cpp \
22 device/odevice_simpad.cpp \ 23 device/odevice_simpad.cpp \
23 device/odevice_zaurus.cpp \ 24 device/odevice_zaurus.cpp \
24 device/odevice_genuineintel.cpp \ 25 device/odevice_genuineintel.cpp \
25 device/odevice_yopy.cpp \ 26 device/odevice_yopy.cpp \
26 device/odevice_mypal.cpp \ 27 device/odevice_mypal.cpp \
27 device/odevice_htc.cpp 28 device/odevice_htc.cpp \
29 device/odevice_motorola_ezx.cpp
28 30
diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp
index c6e031f..8f5be8b 100644
--- a/libopie2/opiecore/device/odevice.cpp
+++ b/libopie2/opiecore/device/odevice.cpp
@@ -1,340 +1,342 @@
1/* 1/*
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3 =. (C) 2002-2005 The Opie Team <opie-devel@handhelds.org> 3 =. (C) 2002-2006 The Opie Team <opie-devel@handhelds.org>
4 .=l. 4 .=l.
5           .>+-= 5           .>+-=
6 _;:,     .>    :=|. This program is free software; you can 6 _;:,     .>    :=|. This program is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under 7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 8:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
9.="- .-=="i,     .._ License as published by the Free Software 9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; version 2 of the License. 10 - .   .-<_>     .<> Foundation; version 2 of the License.
11     ._= =}       : 11     ._= =}       :
12    .%`+i>       _;_. 12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This program is distributed in the hope that 13    .i_,=:_.      -<s. This program is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
18..}^=.=       =       ; Library General Public License for more 18..}^=.=       =       ; Library General Public License for more
19++=   -.     .`     .: details. 19++=   -.     .`     .: details.
20 :     =  ...= . :.=- 20 :     =  ...= . :.=-
21 -.   .:....=;==+<; You should have received a copy of the GNU 21 -.   .:....=;==+<; You should have received a copy of the GNU
22  -_. . .   )=.  = Library General Public License along with 22  -_. . .   )=.  = Library General Public License along with
23    --        :-=` this library; see the file COPYING.LIB. 23    --        :-=` this library; see the file COPYING.LIB.
24 If not, write to the Free Software Foundation, 24 If not, write to the Free Software Foundation,
25 Inc., 59 Temple Place - Suite 330, 25 Inc., 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA. 26 Boston, MA 02111-1307, USA.
27 27
28*/ 28*/
29 29
30 30
31#include "odevice_beagle.h" 31#include "odevice_beagle.h"
32#include "odevice_ipaq.h" 32#include "odevice_ipaq.h"
33#include "odevice_mypal.h" 33#include "odevice_mypal.h"
34#include "odevice_jornada.h" 34#include "odevice_jornada.h"
35#include "odevice_ramses.h" 35#include "odevice_ramses.h"
36#include "odevice_simpad.h" 36#include "odevice_simpad.h"
37#include "odevice_yopy.h" 37#include "odevice_yopy.h"
38#include "odevice_zaurus.h" 38#include "odevice_zaurus.h"
39#include "odevice_genuineintel.h" 39#include "odevice_genuineintel.h"
40#include "odevice_htc.h" 40#include "odevice_htc.h"
41#include "odevice_motorola_ezx.h"
41 42
42/* QT */ 43/* QT */
43#include <qapplication.h> 44#include <qapplication.h>
44#include <qfile.h> 45#include <qfile.h>
45#include <qtextstream.h> 46#include <qtextstream.h>
46#include <qwindowsystem_qws.h> 47#include <qwindowsystem_qws.h>
47 48
48/* OPIE */ 49/* OPIE */
49#include <qpe/config.h> 50#include <qpe/config.h>
50#include <qpe/sound.h> 51#include <qpe/sound.h>
51#include <qpe/qcopenvelope_qws.h> 52#include <qpe/qcopenvelope_qws.h>
52#include <qpe/sound.h> 53#include <qpe/sound.h>
53 54
54#include <opie2/okeyfilter.h> 55#include <opie2/okeyfilter.h>
55#include <opie2/oresource.h> 56#include <opie2/oresource.h>
56 57
57/* STD */ 58/* STD */
58#include <fcntl.h> 59#include <fcntl.h>
59#include <math.h> 60#include <math.h>
60#include <stdlib.h> 61#include <stdlib.h>
61#include <signal.h> 62#include <signal.h>
62#include <sys/ioctl.h> 63#include <sys/ioctl.h>
63#include <sys/time.h> 64#include <sys/time.h>
64#include <unistd.h> 65#include <unistd.h>
65#ifndef QT_NO_SOUND 66#ifndef QT_NO_SOUND
66#include <linux/soundcard.h> 67#include <linux/soundcard.h>
67#endif 68#endif
68 69
69namespace Opie { 70namespace Opie {
70namespace Core { 71namespace Core {
71 72
72static const char* PATH_PROC_CPUINFO = "/proc/cpuinfo"; 73static const char* PATH_PROC_CPUINFO = "/proc/cpuinfo";
73 74
74 75
75/* STATIC and common implementation */ 76/* STATIC and common implementation */
76/* EXPORT */ ODistribution distributions[] = { 77/* EXPORT */ ODistribution distributions[] = {
77 { System_Familiar, "FamiliarLinux", "/etc/familiar-version" }, 78 { System_Familiar, "FamiliarLinux", "/etc/familiar-version" },
78 { System_OpenZaurus, "OpenZaurus", "/etc/openzaurus-version" }, 79 { System_OpenZaurus, "OpenZaurus", "/etc/openzaurus-version" },
79 { System_OpenEmbedded, "OpenEmbedded", "/etc/oe-version" }, 80 { System_OpenEmbedded, "OpenEmbedded", "/etc/oe-version" },
80 { System_Unknown, "Linux", "/etc/issue" }, 81 { System_Unknown, "Linux", "/etc/issue" },
81}; 82};
82 83
83 84
84/* EXPORT */ bool isQWS(){ 85/* EXPORT */ bool isQWS(){
85 return qApp ? ( qApp->type() == QApplication::GuiServer ) : false; 86 return qApp ? ( qApp->type() == QApplication::GuiServer ) : false;
86} 87}
87 88
88/* EXPORT */ QCString makeChannel ( const char *str ){ 89/* EXPORT */ QCString makeChannel ( const char *str ){
89 if ( str && !::strchr ( str, '/' )) 90 if ( str && !::strchr ( str, '/' ))
90 return QCString ( "QPE/Application/" ) + str; 91 return QCString ( "QPE/Application/" ) + str;
91 else 92 else
92 return str; 93 return str;
93} 94}
94 95
95 96
96 97
97/* Now the default implementation of ODevice */ 98/* Now the default implementation of ODevice */
98 99
99struct default_button default_buttons [] = { 100struct default_button default_buttons [] = {
100 { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), 101 { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"),
101 "devicebuttons/z_calendar", 102 "devicebuttons/z_calendar",
102 "datebook", "nextView()", 103 "datebook", "nextView()",
103 "today", "raise()" }, 104 "today", "raise()" },
104 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), 105 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
105 "devicebuttons/z_contact", 106 "devicebuttons/z_contact",
106 "addressbook", "raise()", 107 "addressbook", "raise()",
107 "addressbook", "beamBusinessCard()" }, 108 "addressbook", "beamBusinessCard()" },
108 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), 109 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"),
109 "devicebuttons/z_home", 110 "devicebuttons/z_home",
110 "QPE/Launcher", "home()", 111 "QPE/Launcher", "home()",
111 "buttonsettings", "raise()" }, 112 "buttonsettings", "raise()" },
112 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), 113 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
113 "devicebuttons/z_menu", 114 "devicebuttons/z_menu",
114 "QPE/TaskBar", "toggleMenu()", 115 "QPE/TaskBar", "toggleMenu()",
115 "QPE/TaskBar", "toggleStartMenu()" }, 116 "QPE/TaskBar", "toggleStartMenu()" },
116 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), 117 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"),
117 "devicebuttons/z_mail", 118 "devicebuttons/z_mail",
118 "opiemail", "raise()", 119 "opiemail", "raise()",
119 "opiemail", "newMail()" }, 120 "opiemail", "newMail()" },
120}; 121};
121 122
122ODevice *ODevice::inst() 123ODevice *ODevice::inst()
123{ 124{
124 static ODevice *dev = 0; 125 static ODevice *dev = 0;
125 QString cpu_info; 126 QString cpu_info;
126 127
127 if ( !dev ) 128 if ( !dev )
128 { 129 {
129 QFile f( PATH_PROC_CPUINFO ); 130 QFile f( PATH_PROC_CPUINFO );
130 if ( f.open( IO_ReadOnly ) ) 131 if ( f.open( IO_ReadOnly ) )
131 { 132 {
132 QTextStream s( &f ); 133 QTextStream s( &f );
133 while ( !s.atEnd() ) 134 while ( !s.atEnd() )
134 { 135 {
135 QString line; 136 QString line;
136 line = s.readLine(); 137 line = s.readLine();
137 if ( line.startsWith( "Hardware" ) ) 138 if ( line.startsWith( "Hardware" ) )
138 { 139 {
139 qDebug( "ODevice() - found '%s'", (const char*) line ); 140 qDebug( "ODevice() - found '%s'", (const char*) line );
140 cpu_info = line; 141 cpu_info = line;
141 if ( line.contains( "sharp", false ) ) dev = new Internal::Zaurus(); 142 if ( line.contains( "sharp", false ) ) dev = new Internal::Zaurus();
142 else if ( line.contains( "ipaq", false ) ) dev = new Internal::iPAQ(); 143 else if ( line.contains( "ipaq", false ) ) dev = new Internal::iPAQ();
143 else if ( line.contains( "mypal", false ) ) dev = new Internal::MyPal(); 144 else if ( line.contains( "mypal", false ) ) dev = new Internal::MyPal();
144 else if ( line.contains( "simpad", false ) ) dev = new Internal::SIMpad(); 145 else if ( line.contains( "simpad", false ) ) dev = new Internal::SIMpad();
145 else if ( line.contains( "jornada", false ) ) dev = new Internal::Jornada(); 146 else if ( line.contains( "jornada", false ) ) dev = new Internal::Jornada();
146 else if ( line.contains( "ramses", false ) ) dev = new Internal::Ramses(); 147 else if ( line.contains( "ramses", false ) ) dev = new Internal::Ramses();
147 else if ( line.contains( "Tradesquare.NL", false ) ) dev = new Internal::Beagle(); 148 else if ( line.contains( "Tradesquare.NL", false ) ) dev = new Internal::Beagle();
148 else if ( line.contains( "HTC", false ) ) dev = new Internal::HTC(); 149 else if ( line.contains( "HTC", false ) ) dev = new Internal::HTC();
150 else if ( line.contains( "Motorola", false ) ) dev = new Internal::Motorola_EZX();
149 151
150 else qWarning( "ODevice() - unknown hardware - using default." ); 152 else qWarning( "ODevice() - unknown hardware - using default." );
151 break; 153 break;
152 } else if ( line.startsWith( "vendor_id" ) ) { 154 } else if ( line.startsWith( "vendor_id" ) ) {
153 qDebug( "ODevice() - found '%s'", (const char*) line ); 155 qDebug( "ODevice() - found '%s'", (const char*) line );
154 cpu_info = line; 156 cpu_info = line;
155 if( line.contains( "genuineintel", false ) ) { 157 if( line.contains( "genuineintel", false ) ) {
156 dev = new Internal::GenuineIntel(); 158 dev = new Internal::GenuineIntel();
157 break; 159 break;
158 } 160 }
159 } 161 }
160 } 162 }
161 } 163 }
162 else 164 else
163 { 165 {
164 qWarning( "ODevice() - can't open '%s' - unknown hardware - using default.", PATH_PROC_CPUINFO ); 166 qWarning( "ODevice() - can't open '%s' - unknown hardware - using default.", PATH_PROC_CPUINFO );
165 } 167 }
166 if ( !dev ) dev = new ODevice(); 168 if ( !dev ) dev = new ODevice();
167 dev->init(cpu_info); 169 dev->init(cpu_info);
168 } 170 }
169 return dev; 171 return dev;
170} 172}
171 173
172ODevice::ODevice() 174ODevice::ODevice()
173{ 175{
174 d = new ODeviceData; 176 d = new ODeviceData;
175 177
176 d->m_modelstr = "Unknown"; 178 d->m_modelstr = "Unknown";
177 d->m_model = Model_Unknown; 179 d->m_model = Model_Unknown;
178 d->m_vendorstr = "Unknown"; 180 d->m_vendorstr = "Unknown";
179 d->m_vendor = Vendor_Unknown; 181 d->m_vendor = Vendor_Unknown;
180 d->m_systemstr = "Unknown"; 182 d->m_systemstr = "Unknown";
181 d->m_system = System_Unknown; 183 d->m_system = System_Unknown;
182 d->m_sysverstr = "0.0"; 184 d->m_sysverstr = "0.0";
183 d->m_rotation = Rot0; 185 d->m_rotation = Rot0;
184 d->m_direction = CW; 186 d->m_direction = CW;
185 d->m_qteDriver = "Transformed"; 187 d->m_qteDriver = "Transformed";
186 188
187 d->m_holdtime = 1000; // 1000ms 189 d->m_holdtime = 1000; // 1000ms
188 d->m_buttons = 0; 190 d->m_buttons = 0;
189 d->m_cpu_frequencies = new QStrList; 191 d->m_cpu_frequencies = new QStrList;
190 192
191 193
192 /* mixer */ 194 /* mixer */
193 d->m_sound = d->m_vol = d->m_mixer = -1; 195 d->m_sound = d->m_vol = d->m_mixer = -1;
194 196
195 /* System QCopChannel created */ 197 /* System QCopChannel created */
196 d->m_initializedButtonQcop = false; 198 d->m_initializedButtonQcop = false;
197 199
198 // New distribution detection code first checks for legacy distributions, 200 // New distribution detection code first checks for legacy distributions,
199 // identified by /etc/familiar-version or /etc/oz_version. 201 // identified by /etc/familiar-version or /etc/oz_version.
200 // Then check for OpenEmbedded and lastly, read /etc/issue 202 // Then check for OpenEmbedded and lastly, read /etc/issue
201 203
202 for ( unsigned int i = 0; i < sizeof(distributions)/sizeof(ODistribution); ++i ) 204 for ( unsigned int i = 0; i < sizeof(distributions)/sizeof(ODistribution); ++i )
203 { 205 {
204 if ( QFile::exists( distributions[i].sysvfile ) ) 206 if ( QFile::exists( distributions[i].sysvfile ) )
205 { 207 {
206 d->m_systemstr = distributions[i].sysstr; 208 d->m_systemstr = distributions[i].sysstr;
207 d->m_system = distributions[i].system; 209 d->m_system = distributions[i].system;
208 d->m_sysverstr = "<Unknown>"; 210 d->m_sysverstr = "<Unknown>";
209 QFile f( distributions[i].sysvfile ); 211 QFile f( distributions[i].sysvfile );
210 if ( f.open( IO_ReadOnly ) ) 212 if ( f.open( IO_ReadOnly ) )
211 { 213 {
212 QTextStream ts( &f ); 214 QTextStream ts( &f );
213 d->m_sysverstr = ts.readLine().replace( QRegExp( "\\\\." ), "" ); 215 d->m_sysverstr = ts.readLine().replace( QRegExp( "\\\\." ), "" );
214 } 216 }
215 break; 217 break;
216 } 218 }
217 } 219 }
218} 220}
219 221
220void ODevice::systemMessage( const QCString &msg, const QByteArray & ) 222void ODevice::systemMessage( const QCString &msg, const QByteArray & )
221{ 223{
222 if ( msg == "deviceButtonMappingChanged()" ) { 224 if ( msg == "deviceButtonMappingChanged()" ) {
223 reloadButtonMapping(); 225 reloadButtonMapping();
224 } 226 }
225} 227}
226 228
227void ODevice::init(const QString&) 229void ODevice::init(const QString&)
228{ 230{
229} 231}
230 232
231/** 233/**
232* This method initialises the button mapping 234* This method initialises the button mapping
233*/ 235*/
234void ODevice::initButtons() 236void ODevice::initButtons()
235{ 237{
236 if ( d->m_buttons ) 238 if ( d->m_buttons )
237 return; 239 return;
238 240
239 qDebug ( "init Buttons" ); 241 qDebug ( "init Buttons" );
240 d->m_buttons = new QValueList <ODeviceButton>; 242 d->m_buttons = new QValueList <ODeviceButton>;
241 for ( uint i = 0; i < ( sizeof( default_buttons ) / sizeof( default_button )); i++ ) { 243 for ( uint i = 0; i < ( sizeof( default_buttons ) / sizeof( default_button )); i++ ) {
242 default_button *db = default_buttons + i; 244 default_button *db = default_buttons + i;
243 ODeviceButton b; 245 ODeviceButton b;
244 b. setKeycode ( db->code ); 246 b. setKeycode ( db->code );
245 b. setUserText ( QObject::tr ( "Button", db->utext )); 247 b. setUserText ( QObject::tr ( "Button", db->utext ));
246 b. setPixmap ( OResource::loadPixmap ( db->pix )); 248 b. setPixmap ( OResource::loadPixmap ( db->pix ));
247 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( db->fpressedservice ), db->fpressedaction )); 249 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( db->fpressedservice ), db->fpressedaction ));
248 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( db->fheldservice ), db->fheldaction )); 250 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( db->fheldservice ), db->fheldaction ));
249 d->m_buttons->append ( b ); 251 d->m_buttons->append ( b );
250 } 252 }
251 253
252 reloadButtonMapping(); 254 reloadButtonMapping();
253} 255}
254 256
255ODevice::~ODevice() 257ODevice::~ODevice()
256{ 258{
257// we leak m_devicebuttons and m_cpu_frequency 259// we leak m_devicebuttons and m_cpu_frequency
258// but it's a singleton and it is not so importantant 260// but it's a singleton and it is not so importantant
259// -zecke 261// -zecke
260 delete d; 262 delete d;
261} 263}
262 264
263/** 265/**
264* This method will try to suspend the device 266* This method will try to suspend the device
265* It only works if the user is the QWS Server and the apm application 267* It only works if the user is the QWS Server and the apm application
266* is installed. 268* is installed.
267* It tries to suspend and then waits some time cause some distributions 269* It tries to suspend and then waits some time cause some distributions
268* do have asynchronus apm implementations. 270* do have asynchronus apm implementations.
269* This method will either fail and return false or it'll suspend the 271* This method will either fail and return false or it'll suspend the
270* device and return once the device got woken up 272* device and return once the device got woken up
271* 273*
272* @return if the device got suspended 274* @return if the device got suspended
273*/ 275*/
274bool ODevice::suspend() 276bool ODevice::suspend()
275{ 277{
276 return false; // default implementation == unknown device or qvfb 278 return false; // default implementation == unknown device or qvfb
277} 279}
278 280
279/** 281/**
280* This sets the display on or off 282* This sets the display on or off
281*/ 283*/
282bool ODevice::setDisplayStatus( bool on ) 284bool ODevice::setDisplayStatus( bool on )
283{ 285{
284 qDebug( "ODevice::setDisplayStatus( %d ) - please override me.", on ); 286 qDebug( "ODevice::setDisplayStatus( %d ) - please override me.", on );
285 return false; // don't do anything for unknown models 287 return false; // don't do anything for unknown models
286} 288}
287 289
288/** 290/**
289* This sets the display brightness 291* This sets the display brightness
290* 292*
291* @param b The brightness to be set on a scale from 0 to 255 293* @param b The brightness to be set on a scale from 0 to 255
292* @return success or failure 294* @return success or failure
293*/ 295*/
294bool ODevice::setDisplayBrightness( int b ) 296bool ODevice::setDisplayBrightness( int b )
295{ 297{
296 qDebug( "ODevice::setDisplayBrightness( %d ) - please override me.", b ); 298 qDebug( "ODevice::setDisplayBrightness( %d ) - please override me.", b );
297 return false; 299 return false;
298} 300}
299 301
300/** 302/**
301 * 303 *
302 * @returns the number of steppings on the brightness slider 304 * @returns the number of steppings on the brightness slider
303 * in the Light-'n-Power settings. Values smaller than zero and bigger 305 * in the Light-'n-Power settings. Values smaller than zero and bigger
304 * than 255 do not make sense. 306 * than 255 do not make sense.
305 * 307 *
306 * \sa QSlider::setLineStep 308 * \sa QSlider::setLineStep
307 * \sa QSlider::setPageStep 309 * \sa QSlider::setPageStep
308 */ 310 */
309int ODevice::displayBrightnessResolution() const 311int ODevice::displayBrightnessResolution() const
310{ 312{
311 qDebug( "ODevice::displayBrightnessResolution() - please override me." ); 313 qDebug( "ODevice::displayBrightnessResolution() - please override me." );
312 return 16; 314 return 16;
313} 315}
314 316
315/** 317/**
316* This sets the display contrast 318* This sets the display contrast
317* @param p The contrast to be set on a scale from 0 to 255 319* @param p The contrast to be set on a scale from 0 to 255
318* @returns success or failure 320* @returns success or failure
319*/ 321*/
320bool ODevice::setDisplayContrast( int p ) 322bool ODevice::setDisplayContrast( int p )
321{ 323{
322 qDebug( "ODevice::setDisplayContrast( %d ) - please override me.", p ); 324 qDebug( "ODevice::setDisplayContrast( %d ) - please override me.", p );
323 return false; 325 return false;
324} 326}
325 327
326/** 328/**
327* @returns the maximum value for the contrast settings slider 329* @returns the maximum value for the contrast settings slider
328* or 0 if the device doesn't support setting of a contrast 330* or 0 if the device doesn't support setting of a contrast
329*/ 331*/
330int ODevice::displayContrastResolution() const 332int ODevice::displayContrastResolution() const
331{ 333{
332 qDebug( "ODevice::displayBrightnessResolution() - please override me." ); 334 qDebug( "ODevice::displayBrightnessResolution() - please override me." );
333 return 0; 335 return 0;
334} 336}
335 337
336/** 338/**
337* This returns the vendor as string 339* This returns the vendor as string
338* @return Vendor as QString 340* @return Vendor as QString
339*/ 341*/
340QString ODevice::vendorString() const 342QString ODevice::vendorString() const
diff --git a/libopie2/opiecore/device/odevice.h b/libopie2/opiecore/device/odevice.h
index 2566979..9afb92d 100644
--- a/libopie2/opiecore/device/odevice.h
+++ b/libopie2/opiecore/device/odevice.h
@@ -1,397 +1,401 @@
1/* 1/*
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3              Copyright (C) The Opie Team <opie-devel@handhelds.org> 3              (C) 2002-2006 The Opie Team <opie-devel@handhelds.org>
4 =. 4 =.
5 .=l. 5 .=l.
6           .>+-= 6           .>+-=
7 _;:,     .>    :=|. This program is free software; you can 7 _;:,     .>    :=|. This program is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under 8.> <`_,   >  .   <= redistribute it and/or modify it under
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; either version 2 of the License, 11 - .   .-<_>     .<> Foundation; version 2 of the License.
12     ._= =}       : or (at your option) any later version. 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#ifndef ODEVICE_H_ 30#ifndef ODEVICE_H_
31#define ODEVICE_H_ 31#define ODEVICE_H_
32 32
33/* OPIE */ 33/* OPIE */
34#include <opie2/odevicebutton.h> 34#include <opie2/odevicebutton.h>
35#include <qpe/qpeapplication.h> /* for Transformation enum.. */ 35#include <qpe/qpeapplication.h> /* for Transformation enum.. */
36 36
37/* QT */ 37/* QT */
38#include <qnamespace.h> 38#include <qnamespace.h>
39#include <qobject.h> 39#include <qobject.h>
40#include <qstring.h> 40#include <qstring.h>
41 41
42 42
43#include <qstrlist.h> 43#include <qstrlist.h>
44#include <qwindowsystem_qws.h> 44#include <qwindowsystem_qws.h>
45 45
46 46
47class Sound; 47class Sound;
48 48
49namespace Opie{ 49namespace Opie{
50namespace Core{ 50namespace Core{
51 51
52class ODeviceData; 52class ODeviceData;
53/** 53/**
54 * The available devices 54 * The available devices
55 */ 55 */
56enum OModel { 56enum OModel {
57 Model_Unknown, // = 0 57 Model_Unknown, // = 0
58 58
59 Model_Series_Mask = 0xffff0000, 59 Model_Series_Mask = 0xffff0000,
60 60
61 Model_iPAQ = ( 1 << 16 ), 61 Model_iPAQ = ( 1 << 16 ),
62 62
63 Model_iPAQ_All = ( Model_iPAQ | 0xffff ), 63 Model_iPAQ_All = ( Model_iPAQ | 0xffff ),
64 Model_iPAQ_H31xx = ( Model_iPAQ | 0x0001 ), 64 Model_iPAQ_H31xx = ( Model_iPAQ | 0x0001 ),
65 Model_iPAQ_H36xx = ( Model_iPAQ | 0x0002 ), 65 Model_iPAQ_H36xx = ( Model_iPAQ | 0x0002 ),
66 Model_iPAQ_H37xx = ( Model_iPAQ | 0x0003 ), 66 Model_iPAQ_H37xx = ( Model_iPAQ | 0x0003 ),
67 Model_iPAQ_H38xx = ( Model_iPAQ | 0x0004 ), 67 Model_iPAQ_H38xx = ( Model_iPAQ | 0x0004 ),
68 Model_iPAQ_H39xx = ( Model_iPAQ | 0x0005 ), 68 Model_iPAQ_H39xx = ( Model_iPAQ | 0x0005 ),
69 Model_iPAQ_H5xxx = ( Model_iPAQ | 0x0006 ), 69 Model_iPAQ_H5xxx = ( Model_iPAQ | 0x0006 ),
70 Model_iPAQ_H22xx = ( Model_iPAQ | 0x0007 ), 70 Model_iPAQ_H22xx = ( Model_iPAQ | 0x0007 ),
71 Model_iPAQ_H191x = ( Model_iPAQ | 0x0008 ), 71 Model_iPAQ_H191x = ( Model_iPAQ | 0x0008 ),
72 Model_iPAQ_H1940 = ( Model_iPAQ | 0x0009 ), 72 Model_iPAQ_H1940 = ( Model_iPAQ | 0x0009 ),
73 Model_iPAQ_HX4700 = ( Model_iPAQ | 0x000A ), 73 Model_iPAQ_HX4700 = ( Model_iPAQ | 0x000A ),
74 Model_Jornada = ( 6 << 16 ), 74 Model_Jornada = ( 6 << 16 ),
75 Model_Jornada_56x = ( Model_Jornada | 0x0001 ), 75 Model_Jornada_56x = ( Model_Jornada | 0x0001 ),
76 Model_Jornada_720 = ( Model_Jornada | 0x0002 ), 76 Model_Jornada_720 = ( Model_Jornada | 0x0002 ),
77 77
78 Model_Zaurus = ( 2 << 16 ), 78 Model_Zaurus = ( 2 << 16 ),
79 79
80 Model_Zaurus_SL5000 = ( Model_Zaurus | 0x0001 ), 80 Model_Zaurus_SL5000 = ( Model_Zaurus | 0x0001 ),
81 Model_Zaurus_SL5500 = ( Model_Zaurus | 0x0002 ), 81 Model_Zaurus_SL5500 = ( Model_Zaurus | 0x0002 ),
82 Model_Zaurus_SLA300 = ( Model_Zaurus | 0x0003 ), 82 Model_Zaurus_SLA300 = ( Model_Zaurus | 0x0003 ),
83 Model_Zaurus_SLB600 = ( Model_Zaurus | 0x0004 ), 83 Model_Zaurus_SLB600 = ( Model_Zaurus | 0x0004 ),
84 Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x0005 ), 84 Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x0005 ),
85 Model_Zaurus_SL6000 = ( Model_Zaurus | 0x0006 ), 85 Model_Zaurus_SL6000 = ( Model_Zaurus | 0x0006 ),
86 Model_Zaurus_SLC3000 = ( Model_Zaurus | 0x0007 ), 86 Model_Zaurus_SLC3000 = ( Model_Zaurus | 0x0007 ),
87 Model_Zaurus_SLC1000 = ( Model_Zaurus | 0x0008 ), 87 Model_Zaurus_SLC1000 = ( Model_Zaurus | 0x0008 ),
88 Model_Zaurus_SLC3100 = ( Model_Zaurus | 0x0009 ), 88 Model_Zaurus_SLC3100 = ( Model_Zaurus | 0x0009 ),
89 89
90 Model_SIMpad = ( 3 << 16 ), 90 Model_SIMpad = ( 3 << 16 ),
91 91
92 Model_SIMpad_All = ( Model_SIMpad | 0xffff ), 92 Model_SIMpad_All = ( Model_SIMpad | 0xffff ),
93 Model_SIMpad_CL4 = ( Model_SIMpad | 0x0001 ), 93 Model_SIMpad_CL4 = ( Model_SIMpad | 0x0001 ),
94 Model_SIMpad_SL4 = ( Model_SIMpad | 0x0002 ), 94 Model_SIMpad_SL4 = ( Model_SIMpad | 0x0002 ),
95 Model_SIMpad_SLC = ( Model_SIMpad | 0x0003 ), 95 Model_SIMpad_SLC = ( Model_SIMpad | 0x0003 ),
96 Model_SIMpad_TSinus = ( Model_SIMpad | 0x0004 ), 96 Model_SIMpad_TSinus = ( Model_SIMpad | 0x0004 ),
97 97
98 Model_Ramses = ( 4 << 16 ), 98 Model_Ramses = ( 4 << 16 ),
99 99
100 Model_Ramses_All = ( Model_Ramses | 0xffff ), 100 Model_Ramses_All = ( Model_Ramses | 0xffff ),
101 Model_Ramses_MNCI = ( Model_Ramses | 0x0001 ), 101 Model_Ramses_MNCI = ( Model_Ramses | 0x0001 ),
102 Model_Ramses_MNCIRX = ( Model_Ramses | 0x0002 ), 102 Model_Ramses_MNCIRX = ( Model_Ramses | 0x0002 ),
103 103
104 Model_Yopy = ( 5 << 16 ), 104 Model_Yopy = ( 5 << 16 ),
105 105
106 Model_Yopy_All = ( Model_Yopy | 0xffff ), 106 Model_Yopy_All = ( Model_Yopy | 0xffff ),
107 Model_Yopy_3000 = ( Model_Yopy | 0x0001 ), 107 Model_Yopy_3000 = ( Model_Yopy | 0x0001 ),
108 Model_Yopy_3500 = ( Model_Yopy | 0x0002 ), 108 Model_Yopy_3500 = ( Model_Yopy | 0x0002 ),
109 Model_Yopy_3700 = ( Model_Yopy | 0x0003 ), 109 Model_Yopy_3700 = ( Model_Yopy | 0x0003 ),
110 110
111 Model_Beagle = ( 6 << 16 ), 111 Model_Beagle = ( 6 << 16 ),
112 112
113 Model_Beagle_All = ( Model_Beagle | 0xffff ), 113 Model_Beagle_All = ( Model_Beagle | 0xffff ),
114 Model_Beagle_PA100 = ( Model_Beagle | 0x0001 ), 114 Model_Beagle_PA100 = ( Model_Beagle | 0x0001 ),
115 115
116 Model_GenuineIntel = ( 7 << 16 ), 116 Model_GenuineIntel = ( 7 << 16 ),
117 117
118 Model_MyPal = ( 8 << 16 ), 118 Model_MyPal = ( 8 << 16 ),
119 119
120 Model_MyPal_All = ( Model_MyPal | 0xffff ), 120 Model_MyPal_All = ( Model_MyPal | 0xffff ),
121 Model_MyPal_620 = ( Model_MyPal | 0x0001 ), 121 Model_MyPal_620 = ( Model_MyPal | 0x0001 ),
122 Model_MyPal_716 = ( Model_MyPal | 0x0002 ), 122 Model_MyPal_716 = ( Model_MyPal | 0x0002 ),
123 Model_MyPal_730 = ( Model_MyPal | 0x0003 ), 123 Model_MyPal_730 = ( Model_MyPal | 0x0003 ),
124 124
125 Model_HTC = ( 9 << 16 ), 125 Model_HTC = ( 9 << 16 ),
126 Model_HTC_All = ( Model_HTC | 0xffff ), 126 Model_HTC_All = ( Model_HTC | 0xffff ),
127 Model_HTC_Universal = ( Model_HTC | 0x0001 ) 127 Model_HTC_Universal = ( Model_HTC | 0x0001 ),
128
129 Model_Motorola = ( 9 << 17 ),
130 Model_Motorola_All = ( Model_Motorola | 0xffff ),
131 Model_Motorola_EZX = ( Model_Motorola | 0x0001 ),
132
128}; 133};
129 134
130/** 135/**
131 * The vendor of the device 136 * The vendor of the device
132 */ 137 */
133enum OVendor { 138enum OVendor {
134 Vendor_Unknown, 139 Vendor_Unknown,
135 140
136 Vendor_HP, 141 Vendor_HP,
137 Vendor_Sharp, 142 Vendor_Sharp,
138 Vendor_SIEMENS, 143 Vendor_SIEMENS,
139 Vendor_MundN, 144 Vendor_MundN,
140 Vendor_GMate, 145 Vendor_GMate,
141 Vendor_MasterIA, 146 Vendor_MasterIA,
142 Vendor_GenuineIntel, 147 Vendor_GenuineIntel,
143 Vendor_Asus, 148 Vendor_Asus,
144 Vendor_HTC 149 Vendor_HTC,
150 Vendor_Motorola,
145}; 151};
146 152
147/** 153/**
148 * The System used 154 * The System used
149 */ 155 */
150enum OSystem { 156enum OSystem {
151 System_Unknown, 157 System_Unknown,
152 158
153 System_Familiar, 159 System_Familiar,
154 System_Zaurus, 160 System_Zaurus,
155 System_OpenZaurus, 161 System_OpenZaurus,
156 System_Linupy, 162 System_Linupy,
157 System_OpenEmbedded, 163 System_OpenEmbedded,
158 System_PC 164 System_PC,
165 System_OpenEZX,
166 System_Angstrom,
159}; 167};
160 168
161typedef struct { 169typedef struct {
162 OSystem system; 170 OSystem system;
163 char* sysstr; 171 char* sysstr;
164 char* sysvfile; 172 char* sysvfile;
165} ODistribution; 173} ODistribution;
166 174
167extern ODistribution distributions[]; 175extern ODistribution distributions[];
168 176
169 177
170enum OLedState { 178enum OLedState {
171 Led_Off, 179 Led_Off,
172 Led_On, 180 Led_On,
173 Led_BlinkSlow, 181 Led_BlinkSlow,
174 Led_BlinkFast 182 Led_BlinkFast
175}; 183};
176 184
177enum OLed { 185enum OLed {
178 Led_Mail, 186 Led_Mail,
179 Led_Power, 187 Led_Power,
180 Led_BlueTooth 188 Led_BlueTooth
181}; 189};
182 190
183enum OHardKey { 191enum OHardKey {
184 HardKey_Datebook = Qt::Key_F9, 192 HardKey_Datebook = Qt::Key_F9,
185 HardKey_Contacts = Qt::Key_F10, 193 HardKey_Contacts = Qt::Key_F10,
186 HardKey_Menu = Qt::Key_F11, 194 HardKey_Menu = Qt::Key_F11,
187 HardKey_Home = Qt::Key_F12, 195 HardKey_Home = Qt::Key_F12,
188 HardKey_Mail = Qt::Key_F13, 196 HardKey_Mail = Qt::Key_F13,
189 HardKey_Record = Qt::Key_F24, 197 HardKey_Record = Qt::Key_F24,
190 HardKey_Suspend = Qt::Key_F34, 198 HardKey_Suspend = Qt::Key_F34,
191 HardKey_Backlight = Qt::Key_F35, 199 HardKey_Backlight = Qt::Key_F35,
192 HardKey_Action = Qt::Key_F10, 200 HardKey_Action = Qt::Key_F10,
193 HardKey_OK = Qt::Key_F11, 201 HardKey_OK = Qt::Key_F11,
194 HardKey_End = Qt::Key_F12, 202 HardKey_End = Qt::Key_F12,
195}; 203};
196 204
197enum ODirection { 205enum ODirection {
198 CW = 0, 206 CW = 0,
199 CCW = 1, 207 CCW = 1,
200 Flip = 2, 208 Flip = 2,
201}; 209};
202 210
203enum OHingeStatus { 211enum OHingeStatus {
204 CASE_CLOSED = 3, 212 CASE_CLOSED = 3,
205 CASE_PORTRAIT = 2, 213 CASE_PORTRAIT = 2,
206 CASE_LANDSCAPE = 0, 214 CASE_LANDSCAPE = 0,
207 CASE_UNKNOWN = 1, 215 CASE_UNKNOWN = 1,
208}; 216};
209 217
210/* default button for qvfb or such 218/* default button for qvfb or such
211 * see odevice.cpp for details. 219 * see odevice.cpp for details.
212 * hint: manage a user defined button for qvfb? 220 * hint: manage a user defined button for qvfb?
213 * alwin 221 * alwin
214 */ 222 */
215struct default_button { 223struct default_button {
216 Qt::Key code; 224 Qt::Key code;
217 char *utext; 225 char *utext;
218 char *pix; 226 char *pix;
219 char *fpressedservice; 227 char *fpressedservice;
220 char *fpressedaction; 228 char *fpressedaction;
221 char *fheldservice; 229 char *fheldservice;
222 char *fheldaction; 230 char *fheldaction;
223}; 231};
224 232
225/** 233/**
226 * A singleton which gives informations about device specefic option 234 * A singleton which gives informations about device specefic option
227 * like the Hardware used, LEDs, the Base Distribution and 235 * like the Hardware used, LEDs, the Base Distribution and
228 * hardware key mappings. 236 * hardware key mappings.
229 * 237 *
230 * @short A small class for device specific options 238 * @short A small class for device specific options
231 * @see QObject 239 * @see QObject
232 * @author Robert Griebl 240 * @author Robert Griebl
233 * @version 1.0 241 * @version 1.0
234 */ 242 */
235class ODevice : public QObject 243class ODevice : public QObject
236{ 244{
237 Q_OBJECT 245 Q_OBJECT
238 246
239private: 247private:
240 /* disable copy */ 248 /* disable copy */
241 ODevice ( const ODevice & ); 249 ODevice ( const ODevice & );
242 250
243protected: 251protected:
244 ODevice(); 252 ODevice();
245 virtual void init(const QString&); 253 virtual void init(const QString&);
246 virtual void initButtons(); 254 virtual void initButtons();
247 static void sendSuspendmsg(); 255 static void sendSuspendmsg();
248 256
249 ODeviceData *d; 257 ODeviceData *d;
250 258
251public: 259public:
252 // sandman do we want to allow destructions? -zecke? 260 // sandman do we want to allow destructions? -zecke?
253 virtual ~ODevice(); 261 virtual ~ODevice();
254 static ODevice *inst(); 262 static ODevice *inst();
255 263
256 // information 264 // information
257 QString modelString() const; 265 QString modelString() const;
258 OModel model() const; 266 OModel model() const;
259 inline OModel series() const { return (OModel) ( model() & Model_Series_Mask ); } 267 inline OModel series() const { return (OModel) ( model() & Model_Series_Mask ); }
260 268
261 QString vendorString() const; 269 QString vendorString() const;
262 OVendor vendor() const; 270 OVendor vendor() const;
263 271
264 QString systemString() const; 272 QString systemString() const;
265 OSystem system() const; 273 OSystem system() const;
266 274
267 QString systemVersionString() const; 275 QString systemVersionString() const;
268 276
269 virtual Transformation rotation() const; 277 virtual Transformation rotation() const;
270 virtual ODirection direction() const; 278 virtual ODirection direction() const;
271 279
272 QString qteDriver() const; 280 QString qteDriver() const;
273 281
274 // system 282 // system
275 virtual bool suspend(); 283 virtual bool suspend();
276 284
277 virtual bool setDisplayStatus ( bool on ); 285 virtual bool setDisplayStatus ( bool on );
278 virtual bool setDisplayBrightness ( int brightness ); 286 virtual bool setDisplayBrightness ( int brightness );
279 virtual int displayBrightnessResolution() const; 287 virtual int displayBrightnessResolution() const;
280 virtual bool setDisplayContrast ( int contrast ); 288 virtual bool setDisplayContrast ( int contrast );
281 virtual int displayContrastResolution() const; 289 virtual int displayContrastResolution() const;
282 290
283 // don't add new virtual methods, use this: 291 // don't add new virtual methods, use this:
284 // /*virtual */ void boo(int i ) { return virtual_hook(1,&i); }; 292 // /*virtual */ void boo(int i ) { return virtual_hook(1,&i); };
285 // and in your subclass do overwrite 293 // and in your subclass do overwrite
286 // protected virtual int virtual_hook(int, void *) 294 // protected virtual int virtual_hook(int, void *)
287 // which is defined below 295 // which is defined below
288 296
289 // input / output 297 // input / output
290 virtual void playAlarmSound(); 298 virtual void playAlarmSound();
291 virtual void playKeySound(); 299 virtual void playKeySound();
292 virtual void playTouchSound(); 300 virtual void playTouchSound();
293 301
294 virtual QValueList <OLed> ledList() const; 302 virtual QValueList <OLed> ledList() const;
295 virtual QValueList <OLedState> ledStateList ( OLed led ) const; 303 virtual QValueList <OLedState> ledStateList ( OLed led ) const;
296 virtual OLedState ledState ( OLed led ) const; 304 virtual OLedState ledState ( OLed led ) const;
297 virtual bool setLedState ( OLed led, OLedState st ); 305 virtual bool setLedState ( OLed led, OLedState st );
298 306
299 virtual bool hasLightSensor() const; 307 virtual bool hasLightSensor() const;
300 virtual int readLightSensor(); 308 virtual int readLightSensor();
301 virtual int lightSensorResolution() const; 309 virtual int lightSensorResolution() const;
302 310
303 virtual bool hasHingeSensor() const; 311 virtual bool hasHingeSensor() const;
304 virtual OHingeStatus readHingeSensor()const; 312 virtual OHingeStatus readHingeSensor()const;
305 313
306 const QStrList &allowedCpuFrequencies() const; 314 const QStrList &allowedCpuFrequencies() const;
307 bool setCurrentCpuFrequency(uint index); 315 bool setCurrentCpuFrequency(uint index);
308 316
309 /** 317 /**
310 * Returns the available buttons on this device. The number and location 318 * Returns the available buttons on this device. The number and location
311 * of buttons will vary depending on the device. Button numbers will be assigned 319 * of buttons will vary depending on the device. Button numbers will be assigned
312 * by the device manufacturer and will be from most preferred button to least preffered 320 * by the device manufacturer and will be from most preferred button to least preffered
313 * button. Note that this list only contains "user mappable" buttons. 321 * button. Note that this list only contains "user mappable" buttons.
314 * 322 *
315 * @todo Make method const and take care of calling initButtons or make that const too 323 * @todo Make method const and take care of calling initButtons or make that const too
316 * 324 *
317 */ 325 */
318 const QValueList<ODeviceButton> &buttons(); 326 const QValueList<ODeviceButton> &buttons();
319 327
320 /** 328 /**
321 * Returns the DeviceButton for the \a keyCode. If \a keyCode is not found, it 329 * Returns the DeviceButton for the \a keyCode. If \a keyCode is not found, it
322 * returns 0L 330 * returns 0L
323 */ 331 */
324 const ODeviceButton *buttonForKeycode ( ushort keyCode ); 332 const ODeviceButton *buttonForKeycode ( ushort keyCode );
325 333
326 /** 334 /**
327 * Reassigns the pressed action for \a button. To return to the factory 335 * Reassigns the pressed action for \a button. To return to the factory
328 * default pass an empty string as \a qcopMessage. 336 * default pass an empty string as \a qcopMessage.
329 */ 337 */
330 void remapPressedAction ( int button, const OQCopMessage &qcopMessage ); 338 void remapPressedAction ( int button, const OQCopMessage &qcopMessage );
331 339
332 /** 340 /**
333 * Reassigns the held action for \a button. To return to the factory 341 * Reassigns the held action for \a button. To return to the factory
334 * default pass an empty string as \a qcopMessage. 342 * default pass an empty string as \a qcopMessage.
335 */ 343 */
336 void remapHeldAction ( int button, const OQCopMessage &qcopMessage ); 344 void remapHeldAction ( int button, const OQCopMessage &qcopMessage );
337 345
338 /** 346 /**
339 * How long (in ms) you have to press a button for a "hold" action 347 * How long (in ms) you have to press a button for a "hold" action
340 */ 348 */
341 uint buttonHoldTime() const; 349 uint buttonHoldTime() const;
342 350
343signals: 351signals:
344 void buttonMappingChanged(); 352 void buttonMappingChanged();
345 353
346private slots: 354private slots:
347 void systemMessage ( const QCString &, const QByteArray & ); 355 void systemMessage ( const QCString &, const QByteArray & );
348 void playingStopped(); 356 void playingStopped();
349 357
350protected: 358protected:
351 void addPreHandler(QWSServer::KeyboardFilter*aFilter); 359 void addPreHandler(QWSServer::KeyboardFilter*aFilter);
352 void remPreHandler(QWSServer::KeyboardFilter*aFilter); 360 void remPreHandler(QWSServer::KeyboardFilter*aFilter);
353 void reloadButtonMapping(); 361 void reloadButtonMapping();
354 void changeMixerForAlarm( int mixer, const char* file, Sound *snd); 362 void changeMixerForAlarm( int mixer, const char* file, Sound *snd);
355 363
356 /* ugly virtual hook */ 364 /* ugly virtual hook */
357 virtual void virtual_hook( int id, void* data ); 365 virtual void virtual_hook( int id, void* data );
358}; 366};
359 367
360class ODeviceData { 368class ODeviceData {
361 369
362 public: 370 public:
363 QString m_vendorstr; 371 QString m_vendorstr;
364 OVendor m_vendor; 372 OVendor m_vendor;
365 373
366 QString m_modelstr; 374 QString m_modelstr;
367 OModel m_model; 375 OModel m_model;
368 376
369 QString m_systemstr; 377 QString m_systemstr;
370 OSystem m_system; 378 OSystem m_system;
371 379
372 QString m_sysverstr; 380 QString m_sysverstr;
373 381
374 Transformation m_rotation; 382 Transformation m_rotation;
375 ODirection m_direction; 383 ODirection m_direction;
376 384
377 QString m_qteDriver; 385 QString m_qteDriver;
378 386
379 QValueList <ODeviceButton> *m_buttons; 387 QValueList <ODeviceButton> *m_buttons;
380 uint m_holdtime; 388 uint m_holdtime;
381 QStrList *m_cpu_frequencies; 389 QStrList *m_cpu_frequencies;
382 bool m_initializedButtonQcop : 1; 390 bool m_initializedButtonQcop : 1;
383 391
384 /* values for changeMixerForAlarm */ 392 /* values for changeMixerForAlarm */
385 int m_sound, m_vol, m_mixer; 393 int m_sound, m_vol, m_mixer;
386}; 394};
387 395
388extern bool isQWS(); 396extern bool isQWS();
389extern QCString makeChannel ( const char *str ); 397extern QCString makeChannel ( const char *str );
390} 398}
391} 399}
392 400
393
394
395
396#endif 401#endif
397
diff --git a/libopie2/opiecore/device/odevice_motorola_ezx.cpp b/libopie2/opiecore/device/odevice_motorola_ezx.cpp
new file mode 100644
index 0000000..69256dd
--- a/dev/null
+++ b/libopie2/opiecore/device/odevice_motorola_ezx.cpp
@@ -0,0 +1,325 @@
1/*
2                 This file is part of the Opie Project
3 =. (C) 2006 Michael 'Mickey' Lauer <mickey@Vanille.de>
4 .=l.
5           .>+-=
6 _;:,     .>    :=|. This program is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; version 2 of the License.
11     ._= =}       :
12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This program is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
18..}^=.=       =       ; Library General Public License for more
19++=   -.     .`     .: details.
20 :     =  ...= . :.=-
21 -.   .:....=;==+<; You should have received a copy of the GNU
22  -_. . .   )=.  = Library General Public License along with
23    --        :-=` this library; see the file COPYING.LIB.
24 If not, write to the Free Software Foundation,
25 Inc., 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA.
27*/
28
29#include "odevice_motorola_ezx.h"
30
31/* OPIE */
32#include <opie2/oinputsystem.h>
33#include <opie2/oresource.h>
34
35#include <qpe/config.h>
36#include <qpe/sound.h>
37
38/* QT */
39#include <qapplication.h>
40#include <qfile.h>
41#include <qtextstream.h>
42#include <qwindowsystem_qws.h>
43#include <qcopchannel_qws.h>
44
45/* STD */
46#include <assert.h>
47#include <string.h>
48#include <errno.h>
49#include <fcntl.h>
50#include <math.h>
51#include <stdlib.h>
52#include <signal.h>
53#include <sys/ioctl.h>
54#include <sys/time.h>
55#include <unistd.h>
56#ifndef QT_NO_SOUND
57#include <linux/soundcard.h>
58#endif
59
60using namespace Opie::Core;
61using namespace Opie::Core::Internal;
62
63struct ezx_button ezx_buttons [] = {
64 { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"),
65 "devicebuttons/z_calendar",
66 "datebook", "nextView()",
67 "today", "raise()" },
68 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
69 "devicebuttons/z_contact",
70 "addressbook", "raise()",
71 "addressbook", "beamBusinessCard()" },
72 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"),
73 "devicebuttons/z_home",
74 "QPE/Launcher", "home()",
75 "buttonsettings", "raise()" },
76 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
77 "devicebuttons/z_menu",
78 "QPE/TaskBar", "toggleMenu()",
79 "QPE/TaskBar", "toggleStartMenu()" },
80 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"),
81 "devicebuttons/z_mail",
82 "opiemail", "raise()",
83 "opiemail", "newMail()" },
84};
85
86void Motorola_EZX::init(const QString& cpu_info)
87{
88 qDebug( "Motorola_EZX::init()" );
89 // Set the time to wait until the system is really suspended
90 // the delta between apm --suspend and sleeping
91 setAPMTimeOut( 15000 );
92
93 d->m_vendorstr = "OpenEZX Team";
94 d->m_systemstr = "OpenEZX";
95 d->m_system = System_OpenEZX;
96 // sysver already gathered
97
98 // check the Motorola_EZX model
99 QString model;
100 int loc = cpu_info.find( ":" );
101 if ( loc != -1 )
102 model = cpu_info.mid( loc+2 ).simplifyWhiteSpace();
103 else
104 model = cpu_info;
105
106 if ( model == "Motorola Ezx Platform" ) {
107 d->m_model = Model_Motorola_EZX;
108 d->m_modelstr = "Motorola_EZX";
109 } else assert( 0 );
110
111 // set path to backlight device in kernel 2.6
112 m_backlightdev = "/sys/class/backlight/ezx-bl/";
113 d->m_rotation = Rot0;
114 //initHingeSensor();
115
116 // set default qte driver and led state
117 d->m_qteDriver = "Transformed";
118 m_leds[0] = Led_Off;
119
120 qDebug( "Motorola_EZX::init() - Using the 2.6 OpenEZX HAL on a %s", (const char*) d->m_modelstr );
121}
122
123void Motorola_EZX::initButtons()
124{
125 qDebug( "Motorola_EZX::initButtons()" );
126 if ( d->m_buttons )
127 return;
128
129 d->m_buttons = new QValueList <ODeviceButton>;
130
131 struct ezx_button * ezx_buttons;
132 int buttoncount;
133
134/*
135
136 switch ( d->m_model )
137 {
138 case Model_Motorola_EZX_SL6000:
139 pezx_buttons = ezx_buttons_6000;
140 buttoncount = ARRAY_SIZE(ezx_buttons_6000);
141 break;
142 case Model_Motorola_EZX_SLC3100: // fallthrough
143 case Model_Motorola_EZX_SLC3000: // fallthrough
144 case Model_Motorola_EZX_SLC1000: // fallthrough
145 case Model_Motorola_EZX_SLC7x0:
146 if ( isQWS( ) )
147 {
148 addPreHandler(this);
149 }
150 pezx_buttons = ezx_buttons_c700;
151 buttoncount = ARRAY_SIZE(ezx_buttons_c700);
152 break;
153 default:
154 pezx_buttons = ezx_buttons;
155 buttoncount = ARRAY_SIZE(ezx_buttons);
156 break;
157 }
158
159 for ( int i = 0; i < buttoncount; i++ ) {
160 struct ezx_button *zb = pezx_buttons + i;
161 ODeviceButton b;
162
163 b.setKeycode( zb->code );
164 b.setUserText( QObject::tr( "Button", zb->utext ));
165 b.setPixmap( OResource::loadPixmap( zb->pix ));
166 b.setFactoryPresetPressedAction( OQCopMessage( makeChannel ( zb->fpressedservice ), zb->fpressedaction ));
167 b.setFactoryPresetHeldAction( OQCopMessage( makeChannel ( zb->fheldservice ), zb->fheldaction ));
168 d->m_buttons->append( b );
169 }
170*/
171 reloadButtonMapping();
172}
173
174void Motorola_EZX::playAlarmSound()
175{
176#ifndef QT_NO_SOUND
177 static Sound snd ( "alarm" );
178 if(!snd.isFinished())
179 return;
180
181 changeMixerForAlarm(0, "/dev/sound/mixer", &snd );
182 snd. play();
183#endif
184}
185
186QValueList <OLed> Motorola_EZX::ledList() const
187{
188 QValueList <OLed> vl;
189 vl << Led_Mail;
190 return vl;
191}
192
193QValueList <OLedState> Motorola_EZX::ledStateList( OLed l ) const
194{
195 QValueList <OLedState> vl;
196
197 if ( l == Led_Mail )
198 vl << Led_Off << Led_On << Led_BlinkSlow;
199 return vl;
200}
201
202OLedState Motorola_EZX::ledState( OLed which ) const
203{
204 if ( which == Led_Mail )
205 return m_leds [0];
206 else
207 return Led_Off;
208}
209
210bool Motorola_EZX::setLedState( OLed which, OLedState st )
211{
212 // Currently not supported
213 qDebug( "Motorola_EZX::setLedState: ODevice handling not yet implemented" );
214 return false;
215}
216
217int Motorola_EZX::displayBrightnessResolution() const
218{
219 // Currently not supported
220 qDebug( "Motorola_EZX::displayBrightnessResolution: ODevice handling not yet implemented" );
221 return 100;
222
223#if 0
224 int res = 1;
225 if (m_embedix)
226 {
227 int fd = ::open( SHARP_FL_IOCTL_DEVICE, O_RDWR|O_NONBLOCK );
228 if ( fd )
229 {
230 int value = ::ioctl( fd, SHARP_FL_IOCTL_GET_STEP, 0 );
231 ::close( fd );
232 return value ? value : res;
233 }
234 }
235 else
236 {
237 int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
238 if ( fd )
239 {
240 char buf[100];
241 if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res );
242 ::close( fd );
243 }
244 }
245 return res;
246#endif
247}
248
249bool Motorola_EZX::setDisplayBrightness( int bright )
250{
251 qDebug( "Motorola_EZX::setDisplayBrightness( %d )", bright );
252 return false;
253
254#if 0
255 bool res = false;
256
257 if ( bright > 255 ) bright = 255;
258 if ( bright < 0 ) bright = 0;
259
260 int numberOfSteps = displayBrightnessResolution();
261 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255;
262
263 if ( m_embedix )
264 {
265 int fd = ::open( SHARP_FL_IOCTL_DEVICE, O_WRONLY|O_NONBLOCK );
266 if ( fd )
267 {
268 res = ( ::ioctl( fd, SHARP_FL_IOCTL_STEP_CONTRAST, val ) == 0 );
269 ::close( fd );
270 }
271 }
272 else
273 {
274 int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
275 if ( fd )
276 {
277 char buf[100];
278 int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
279 res = ( ::write( fd, &buf[0], len ) == 0 );
280 ::close( fd );
281 }
282 }
283 return res;
284#endif
285}
286
287bool Motorola_EZX::setDisplayStatus( bool on )
288{
289 bool res = false;
290 int fd = ::open( m_backlightdev + "power", O_WRONLY|O_NONBLOCK );
291 if ( fd )
292 {
293 char buf[10];
294 buf[0] = on ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
295 buf[1] = '\0';
296 res = ( ::write( fd, &buf[0], 2 ) == 0 );
297 ::close( fd );
298 }
299 return res;
300}
301
302void Motorola_EZX::systemMessage( const QCString &msg, const QByteArray & )
303{
304 if ( msg == "deviceButtonMappingChanged()" ) {
305 reloadButtonMapping();
306 }
307}
308
309bool Motorola_EZX::suspend() {
310 if ( !isQWS( ) ) // only qwsserver is allowed to suspend
311 return false;
312
313 bool res = false;
314 QCopChannel::send( "QPE/System", "aboutToSuspend()" );
315
316 struct timeval tvs, tvn;
317 ::gettimeofday ( &tvs, 0 );
318
319 ::sync(); // flush fs caches
320 res = ( ::system ( "apm --suspend" ) == 0 );
321
322 QCopChannel::send( "QPE/System", "returnFromSuspend()" );
323
324 return res;
325}
diff --git a/libopie2/opiecore/device/odevice_motorola_ezx.h b/libopie2/opiecore/device/odevice_motorola_ezx.h
new file mode 100644
index 0000000..c0bd6c7
--- a/dev/null
+++ b/libopie2/opiecore/device/odevice_motorola_ezx.h
@@ -0,0 +1,102 @@
1/*
2                 This file is part of the Opie Project
3 =. (C) 2006 Michael 'Mickey' Lauer <mickey@Vanille.de>
4 .=l.
5           .>+-=
6 _;:,     .>    :=|. This program is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; version 2 of the License.
11     ._= =}       :
12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This program is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
18..}^=.=       =       ; Library General Public License for more
19++=   -.     .`     .: details.
20 :     =  ...= . :.=-
21 -.   .:....=;==+<; You should have received a copy of the GNU
22  -_. . .   )=.  = Library General Public License along with
23    --        :-=` this library; see the file COPYING.LIB.
24 If not, write to the Free Software Foundation,
25 Inc., 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA.
27*/
28
29#ifndef ODEVICE_MOTOROLA_EZX
30#define ODEVICE_MOTOROLA_EZX
31
32#include "odevice_abstractmobiledevice.h"
33
34/* QT */
35#include <qfile.h>
36#include <qwindowsystem_qws.h>
37
38#ifndef ARRAY_SIZE
39#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
40#endif
41
42// Audio
43// LED
44// Power Management
45#define APM_IOCGEVTSRC OD_IOR( 'A', 203, int )
46#define APM_IOCSEVTSRC OD_IORW( 'A', 204, int )
47#define APM_EVT_POWER_BUTTON (1 << 0)
48
49// Vesa Standard
50#define FB_BLANK_UNBLANK 0
51#define FB_BLANK_POWERDOWN 4
52
53namespace Opie {
54namespace Core {
55namespace Internal {
56
57class Motorola_EZX : public OAbstractMobileDevice
58{
59 Q_OBJECT
60
61 protected:
62 virtual void init(const QString&);
63 virtual void initButtons();
64 //void initHingeSensor();
65
66 protected slots:
67 //void hingeSensorTriggered();
68 void systemMessage( const QCString &msg, const QByteArray & );
69
70 public:
71 virtual bool setDisplayBrightness( int b );
72 virtual bool setDisplayStatus( bool on );
73 virtual int displayBrightnessResolution() const;
74
75 virtual void playAlarmSound();
76
77 virtual QValueList <OLed> ledList() const;
78 virtual QValueList <OLedState> ledStateList ( OLed led ) const;
79 virtual OLedState ledState( OLed led ) const;
80 virtual bool setLedState( OLed led, OLedState st );
81
82 virtual bool suspend();
83
84 protected:
85 QString m_backlightdev;
86 OLedState m_leds[1];
87 QFile m_hinge;
88};
89
90struct ezx_button {
91 Qt::Key code;
92 char *utext;
93 char *pix;
94 char *fpressedservice;
95 char *fpressedaction;
96 char *fheldservice;
97 char *fheldaction;
98};
99}
100}
101}
102#endif