summaryrefslogtreecommitdiff
path: root/libopie2/opiecore/device/odevice_yopy.cpp
Unidiff
Diffstat (limited to 'libopie2/opiecore/device/odevice_yopy.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_yopy.cpp239
1 files changed, 95 insertions, 144 deletions
diff --git a/libopie2/opiecore/device/odevice_yopy.cpp b/libopie2/opiecore/device/odevice_yopy.cpp
index 9d0cdeb..a76f90b 100644
--- a/libopie2/opiecore/device/odevice_yopy.cpp
+++ b/libopie2/opiecore/device/odevice_yopy.cpp
@@ -1,33 +1,33 @@
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             Copyright (C) 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; either version 2 of the License,
12     ._= =}       : or (at your option) any later version. 12    ._= =}       : or (at your option) any later version.
13    .%`+i>       _;_. 13   .%`+i>       _;_.
14    .i_,=:_.      -<s. This program is distributed in the hope that 14   .i_,=:_.      -<s. This program is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 15    +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of 16   : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 17   =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 18 _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.=       =       ; Library General Public License for more 19..}^=.=       =       ; Library General Public License for more
20++=   -.     .`     .: details. 20++=   -.     .`     .: details.
21 :     =  ...= . :.=- 21:     =  ...= . :.=-
22 -.   .:....=;==+<; You should have received a copy of the GNU 22-.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with 23 -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB. 24   --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29 29
30#include "odevice.h" 30#include "odevice_yopy.h"
31 31
32/* QT */ 32/* QT */
33#include <qapplication.h> 33#include <qapplication.h>
@@ -53,158 +53,109 @@
53#include <linux/soundcard.h> 53#include <linux/soundcard.h>
54#endif 54#endif
55 55
56#ifndef ARRAY_SIZE
57#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
58#endif
59
60// _IO and friends are only defined in kernel headers ...
61
62#define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 ))
63
64#define OD_IO(type,number) OD_IOC(0,type,number,0)
65#define OD_IOW(type,number,size) OD_IOC(1,type,number,sizeof(size))
66#define OD_IOR(type,number,size) OD_IOC(2,type,number,sizeof(size))
67#define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size))
68
69using namespace Opie; 56using namespace Opie;
70 57
71class Yopy : public ODevice 58struct yopy_button yopy_buttons [] = {
72{ 59 { Qt::Key_F10, QT_TRANSLATE_NOOP( "Button", "Action Button" ),
73 protected: 60 "devicebuttons/yopy_action",
74 61 "datebook", "nextView()",
75 virtual void init(); 62 "today", "raise()" },
76 virtual void initButtons(); 63 { Qt::Key_F11, QT_TRANSLATE_NOOP( "Button", "OK Button" ),
77 64 "devicebuttons/yopy_ok",
78 public: 65 "addressbook", "raise()",
79 virtual bool suspend(); 66 "addressbook", "beamBusinessCard()" },
80 67 { Qt::Key_F12, QT_TRANSLATE_NOOP( "Button", "End Button" ),
81 virtual bool setDisplayBrightness ( int b ); 68 "devicebuttons/yopy_end",
82 virtual int displayBrightnessResolution() const; 69 "QPE/Launcher", "home()",
83 70 "buttonsettings", "raise()" },
84 static bool isYopy();
85}; 71};
86 72
87struct yopy_button { 73void Yopy::init()
88 Qt::Key code;
89 char *utext;
90 char *pix;
91 char *fpressedservice;
92 char *fpressedaction;
93 char *fheldservice;
94 char *fheldaction;
95} yopy_buttons [] = {
96{ Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Action Button"),
97 "devicebuttons/yopy_action",
98 "datebook", "nextView()",
99 "today", "raise()" },
100{ Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "OK Button"),
101 "devicebuttons/yopy_ok",
102 "addressbook", "raise()",
103 "addressbook", "beamBusinessCard()" },
104{ Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "End Button"),
105 "devicebuttons/yopy_end",
106 "QPE/Launcher", "home()",
107 "buttonsettings", "raise()" },
108};
109
110bool Yopy::isYopy()
111{ 74{
112QFile f( "/proc/cpuinfo" ); 75 d->m_vendorstr = "G.Mate";
113if ( f. open ( IO_ReadOnly ) ) { 76 d->m_vendor = Vendor_GMate;
114 QTextStream ts ( &f ); 77 d->m_modelstr = "Yopy3700";
115 QString line; 78 d->m_model = Model_Yopy_3700;
116 while( line = ts. readLine() ) { 79 d->m_rotation = Rot0;
117 if ( line. left ( 8 ) == "Hardware" ) { 80
118 int loc = line. find ( ":" ); 81 d->m_systemstr = "Linupy";
119 if ( loc != -1 ) { 82 d->m_system = System_Linupy;
120 QString model = 83
121 line. mid ( loc + 2 ). simplifyWhiteSpace( ); 84 QFile f ( "/etc/issue" );
122 return ( model == "Yopy" ); 85 if ( f. open ( IO_ReadOnly ) )
123 } 86 {
124 } 87 QTextStream ts ( &f );
88 ts.readLine();
89 d->m_sysverstr = ts. readLine();
90 f. close();
125 } 91 }
126} 92}
127return false;
128}
129 93
130void Yopy::init()
131{
132d->m_vendorstr = "G.Mate";
133d->m_vendor = Vendor_GMate;
134d->m_modelstr = "Yopy3700";
135d->m_model = Model_Yopy_3700;
136d->m_rotation = Rot0;
137
138d->m_systemstr = "Linupy";
139d->m_system = System_Linupy;
140
141QFile f ( "/etc/issue" );
142if ( f. open ( IO_ReadOnly )) {
143 QTextStream ts ( &f );
144 ts.readLine();
145 d->m_sysverstr = ts. readLine();
146 f. close();
147}
148}
149 94
150void Yopy::initButtons() 95void Yopy::initButtons()
151{ 96{
152if ( d->m_buttons ) 97 if ( d->m_buttons )
153 return; 98 return ;
154 99
155d->m_buttons = new QValueList <ODeviceButton>; 100 d->m_buttons = new QValueList <ODeviceButton>;
156 101
157for (uint i = 0; i < ( sizeof( yopy_buttons ) / sizeof(yopy_button)); i++) { 102 for ( uint i = 0; i < ( sizeof( yopy_buttons ) / sizeof( yopy_button ) ); i++ )
103 {
158 104
159 yopy_button *ib = yopy_buttons + i; 105 yopy_button *ib = yopy_buttons + i;
160 106
161 ODeviceButton b; 107 ODeviceButton b;
162 108
163 b. setKeycode ( ib->code ); 109 b. setKeycode ( ib->code );
164 b. setUserText ( QObject::tr ( "Button", ib->utext )); 110 b. setUserText ( QObject::tr ( "Button", ib->utext ) );
165 b. setPixmap ( Resource::loadPixmap ( ib->pix )); 111 b. setPixmap ( Resource::loadPixmap ( ib->pix ) );
166 b. setFactoryPresetPressedAction 112 b. setFactoryPresetPressedAction
167 (OQCopMessage(makeChannel(ib->fpressedservice), ib->fpressedaction)); 113 ( OQCopMessage( makeChannel( ib->fpressedservice ), ib->fpressedaction ) );
168 b. setFactoryPresetHeldAction 114 b. setFactoryPresetHeldAction
169 (OQCopMessage(makeChannel(ib->fheldservice), ib->fheldaction)); 115 ( OQCopMessage( makeChannel( ib->fheldservice ), ib->fheldaction ) );
170 116
171 d->m_buttons->append ( b ); 117 d->m_buttons->append ( b );
172} 118 }
173reloadButtonMapping(); 119 reloadButtonMapping();
174 120
175QCopChannel *sysch = new QCopChannel("QPE/System", this); 121 QCopChannel *sysch = new QCopChannel( "QPE/System", this );
176connect(sysch, SIGNAL(received(const QCString &, const QByteArray & )), 122 connect( sysch, SIGNAL( received( const QCString &, const QByteArray & ) ),
177 this, SLOT(systemMessage(const QCString &, const QByteArray & ))); 123 this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) );
178} 124}
179 125
126
180bool Yopy::suspend() 127bool Yopy::suspend()
181{ 128{
182/* Opie for Yopy does not implement its own power management at the 129 /* Opie for Yopy does not implement its own power management at the
183 moment. The public version runs parallel to X, and relies on the 130 moment. The public version runs parallel to X, and relies on the
184 existing power management features. */ 131 existing power management features. */
185return false; 132 return false;
186} 133}
187 134
188bool Yopy::setDisplayBrightness(int bright) 135
136bool Yopy::setDisplayBrightness( int bright )
189{ 137{
190/* The code here works, but is disabled as the current version runs 138 /* The code here works, but is disabled as the current version runs
191 parallel to X, and relies on the existing backlight demon. */ 139 parallel to X, and relies on the existing backlight demon. */
192#if 0 140#if 0
193if ( QFile::exists("/proc/sys/pm/light") ) { 141 if ( QFile::exists( "/proc/sys/pm/light" ) )
194 int fd = ::open("/proc/sys/pm/light", O_WRONLY); 142 {
195 if (fd >= 0 ) { 143 int fd = ::open( "/proc/sys/pm/light", O_WRONLY );
196 if (bright) 144 if ( fd >= 0 )
197 ::write(fd, "1\n", 2); 145 {
198 else 146 if ( bright )
199 ::write(fd, "0\n", 2); 147 ::write( fd, "1\n", 2 );
200 ::close(fd); 148 else
201 return true; 149 ::write( fd, "0\n", 2 );
150 ::close( fd );
151 return true;
152 }
202 } 153 }
203}
204#endif 154#endif
205return false; 155 return false;
206} 156}
207 157
158
208int Yopy::displayBrightnessResolution() const 159int Yopy::displayBrightnessResolution() const
209{ 160{
210 return 2; 161 return 2;