-rw-r--r-- | libopie2/opiecore/device/odevice_beagle.cpp | 59 |
1 files changed, 52 insertions, 7 deletions
diff --git a/libopie2/opiecore/device/odevice_beagle.cpp b/libopie2/opiecore/device/odevice_beagle.cpp index 9cf640a..ac12ca6 100644 --- a/libopie2/opiecore/device/odevice_beagle.cpp +++ b/libopie2/opiecore/device/odevice_beagle.cpp | |||
@@ -38,7 +38,9 @@ | |||
38 | #include <unistd.h> | 38 | #include <unistd.h> |
39 | 39 | ||
40 | 40 | ||
41 | 41 | /* | |
42 | * Intel Assabat FrontLight Control | ||
43 | */ | ||
42 | #define _SA1100_FL_IOCTL_ON 1 | 44 | #define _SA1100_FL_IOCTL_ON 1 |
43 | #define _SA1100_FL_IOCTL_OFF 2 | 45 | #define _SA1100_FL_IOCTL_OFF 2 |
44 | #define _SA1100_FL_IOCTL_INTENSITY3 | 46 | #define _SA1100_FL_IOCTL_INTENSITY3 |
@@ -50,6 +52,9 @@ | |||
50 | #define _SA1100_FL_IOCTL_PWR_TOGGLE 8 | 52 | #define _SA1100_FL_IOCTL_PWR_TOGGLE 8 |
51 | #define _SA1100_FL_IOCTL_AUTOLIGHT 10 | 53 | #define _SA1100_FL_IOCTL_AUTOLIGHT 10 |
52 | 54 | ||
55 | /* | ||
56 | * The device | ||
57 | */ | ||
53 | #define FL_MAJOR 60 | 58 | #define FL_MAJOR 60 |
54 | #define FL_NAME "sa1100-fl" | 59 | #define FL_NAME "sa1100-fl" |
55 | #define FL_FILE "/dev/sa1100-fl" | 60 | #define FL_FILE "/dev/sa1100-fl" |
@@ -69,8 +74,18 @@ struct b_button { | |||
69 | char *fheldaction; | 74 | char *fheldaction; |
70 | }; | 75 | }; |
71 | 76 | ||
77 | |||
78 | /* | ||
79 | * The MVista Beagle kernel maps the action | ||
80 | * buttons to the Qt keymap | ||
81 | */ | ||
72 | struct b_button beagle_buttons [] = { | 82 | struct b_button beagle_buttons [] = { |
73 | { Model_Beagle_PA100, | 83 | { Model_Beagle_PA100, |
84 | Qt::Key_F8, QT_TRANSLATE_NOOP("Button", "Record Button"), | ||
85 | "devicebuttons/beagle_record", | ||
86 | "QPE/VMemo", "toggleRecord()", | ||
87 | "sound", "raise()" }, | ||
88 | { Model_Beagle_PA100, | ||
74 | Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), | 89 | Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), |
75 | "devicebuttons/beagle_calendar", | 90 | "devicebuttons/beagle_calendar", |
76 | "datebook", "nextView()", | 91 | "datebook", "nextView()", |
@@ -93,12 +108,13 @@ struct b_button beagle_buttons [] = { | |||
93 | }; | 108 | }; |
94 | 109 | ||
95 | 110 | ||
96 | Beagle::Beagle() | 111 | Beagle::Beagle() {} |
97 | { | 112 | |
98 | qWarning( "Created Beagle" ); | ||
99 | } | ||
100 | Beagle::~Beagle() {} | 113 | Beagle::~Beagle() {} |
101 | 114 | ||
115 | /* | ||
116 | * Simply set the Tradesquare.NL data | ||
117 | */ | ||
102 | void Beagle::init( const QString&) { | 118 | void Beagle::init( const QString&) { |
103 | /* | 119 | /* |
104 | * No other assabat model yet | 120 | * No other assabat model yet |
@@ -107,8 +123,18 @@ void Beagle::init( const QString&) { | |||
107 | d->m_vendor = Vendor_MasterIA; | 123 | d->m_vendor = Vendor_MasterIA; |
108 | d->m_modelstr = "Tuxpda 1"; | 124 | d->m_modelstr = "Tuxpda 1"; |
109 | d->m_rotation = Rot0; | 125 | d->m_rotation = Rot0; |
126 | d->m_model = Model_Beagle_PA100; | ||
110 | } | 127 | } |
111 | 128 | ||
129 | |||
130 | /* | ||
131 | * Initialize the Buttons. We only do it | ||
132 | * if not yet initialized. | ||
133 | * We go through our hardware button array | ||
134 | * and set the 'Factory' Pressed and Held Action | ||
135 | * reloadButtonMapping will then apply the user | ||
136 | * configuration to the buttons | ||
137 | */ | ||
112 | void Beagle::initButtons() { | 138 | void Beagle::initButtons() { |
113 | if ( d->m_buttons ) | 139 | if ( d->m_buttons ) |
114 | return; | 140 | return; |
@@ -129,26 +155,45 @@ void Beagle::initButtons() { | |||
129 | reloadButtonMapping(); | 155 | reloadButtonMapping(); |
130 | } | 156 | } |
131 | 157 | ||
158 | /* | ||
159 | * Turn the display on. We do it by ioctl on FL_FILE | ||
160 | */ | ||
132 | bool Beagle::setDisplayStatus( bool on ) { | 161 | bool Beagle::setDisplayStatus( bool on ) { |
133 | int fd = ::open(FL_FILE, O_WRONLY); | 162 | int fd = ::open(FL_FILE, O_WRONLY); |
134 | 163 | ||
135 | if ( fd < 0 ) | 164 | if ( fd < 0 ) |
136 | return false; | 165 | return false; |
137 | 166 | ||
138 | return ( ::ioctl(fd, on ? _SA1100_FL_IOCTL_ON : _SA1100_FL_IOCTL_OFF, 0 ) == -1 ); | 167 | return ( ::ioctl(fd, on ? _SA1100_FL_IOCTL_ON : _SA1100_FL_IOCTL_OFF, 0 ) == 0 ); |
139 | } | 168 | } |
140 | 169 | ||
170 | /* | ||
171 | * 0-100 are legal steps of the frontlight. | ||
172 | */ | ||
141 | int Beagle::displayBrightnessResolution()const { | 173 | int Beagle::displayBrightnessResolution()const { |
142 | return 100; | 174 | return 100; |
143 | } | 175 | } |
144 | 176 | ||
177 | /* | ||
178 | * Opie uses the values 0-255 for the frontlight | ||
179 | * intensity and we need to map it to the range | ||
180 | * of 0-100. | ||
181 | * But first we do some sanity of the range of brightness | ||
182 | * | ||
183 | */ | ||
145 | bool Beagle::setDisplayBrightness( int brightness ) { | 184 | bool Beagle::setDisplayBrightness( int brightness ) { |
185 | if ( brightness > 255 ) | ||
186 | brightness = 255; | ||
187 | else if ( brightness < 0 ) | ||
188 | brightness = 0; | ||
189 | brightness = (100*brightness)/255; | ||
190 | |||
146 | int fd = ::open(FL_FILE, O_WRONLY); | 191 | int fd = ::open(FL_FILE, O_WRONLY); |
147 | 192 | ||
148 | if ( fd < 0 ) | 193 | if ( fd < 0 ) |
149 | return false; | 194 | return false; |
150 | 195 | ||
151 | return ( ::ioctl(fd, _SA1100_FL_IOCTL_INTENSITY, brightness%101 ) == 0 ); | 196 | return ( ::ioctl(fd, _SA1100_FL_IOCTL_INTENSITY, brightness ) == 0 ); |
152 | } | 197 | } |
153 | 198 | ||
154 | } | 199 | } |