-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 @@ -35,24 +35,29 @@ #include <sys/types.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> - +/* + * Intel Assabat FrontLight Control + */ #define _SA1100_FL_IOCTL_ON 1 #define _SA1100_FL_IOCTL_OFF 2 #define _SA1100_FL_IOCTL_INTENSITY 3 #define _SA1100_FL_IOCTL_BACKLIGHT 4 #define _SA1100_FL_IOCTL_CONTRAST 5 #define _SA1100_FL_IOCTL_GET_BACKLIGHT 6 #define _SA1100_FL_IOCTL_GET_CONTRAST 7 // added by Sean Hsieh #define _SA1100_FL_IOCTL_PWR_TOGGLE 8 #define _SA1100_FL_IOCTL_AUTOLIGHT 10 +/* + * The device + */ #define FL_MAJOR 60 #define FL_NAME "sa1100-fl" #define FL_FILE "/dev/sa1100-fl" namespace Opie { namespace Core { @@ -66,14 +71,24 @@ struct b_button { char *fpressedservice; char *fpressedaction; char *fheldservice; char *fheldaction; }; + +/* + * The MVista Beagle kernel maps the action + * buttons to the Qt keymap + */ struct b_button beagle_buttons [] = { { Model_Beagle_PA100, + Qt::Key_F8, QT_TRANSLATE_NOOP("Button", "Record Button"), + "devicebuttons/beagle_record", + "QPE/VMemo", "toggleRecord()", + "sound", "raise()" }, + { Model_Beagle_PA100, Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), "devicebuttons/beagle_calendar", "datebook", "nextView()", "today", "raise()" }, { Model_Beagle_PA100, Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), @@ -90,28 +105,39 @@ struct b_button beagle_buttons [] = { "devicebuttons/beagle_home", "QPE/Launcher", "home()", "buttonsettings", "raise()" }, }; -Beagle::Beagle() -{ - qWarning( "Created Beagle" ); -} +Beagle::Beagle() {} + Beagle::~Beagle() {} +/* + * Simply set the Tradesquare.NL data + */ void Beagle::init( const QString&) { /* * No other assabat model yet */ d->m_vendorstr = "Tradesquare.NL"; d->m_vendor = Vendor_MasterIA; d->m_modelstr = "Tuxpda 1"; d->m_rotation = Rot0; + d->m_model = Model_Beagle_PA100; } + +/* + * Initialize the Buttons. We only do it + * if not yet initialized. + * We go through our hardware button array + * and set the 'Factory' Pressed and Held Action + * reloadButtonMapping will then apply the user + * configuration to the buttons + */ void Beagle::initButtons() { if ( d->m_buttons ) return; d->m_buttons = new QValueList<ODeviceButton>; uint length = sizeof( beagle_buttons )/ sizeof( b_button ); @@ -126,31 +152,50 @@ void Beagle::initButtons() { d->m_buttons->append( b ); } reloadButtonMapping(); } +/* + * Turn the display on. We do it by ioctl on FL_FILE + */ bool Beagle::setDisplayStatus( bool on ) { int fd = ::open(FL_FILE, O_WRONLY); if ( fd < 0 ) return false; - return ( ::ioctl(fd, on ? _SA1100_FL_IOCTL_ON : _SA1100_FL_IOCTL_OFF, 0 ) == -1 ); + return ( ::ioctl(fd, on ? _SA1100_FL_IOCTL_ON : _SA1100_FL_IOCTL_OFF, 0 ) == 0 ); } +/* + * 0-100 are legal steps of the frontlight. + */ int Beagle::displayBrightnessResolution()const { return 100; } +/* + * Opie uses the values 0-255 for the frontlight + * intensity and we need to map it to the range + * of 0-100. + * But first we do some sanity of the range of brightness + * + */ bool Beagle::setDisplayBrightness( int brightness ) { + if ( brightness > 255 ) + brightness = 255; + else if ( brightness < 0 ) + brightness = 0; + brightness = (100*brightness)/255; + int fd = ::open(FL_FILE, O_WRONLY); if ( fd < 0 ) return false; - return ( ::ioctl(fd, _SA1100_FL_IOCTL_INTENSITY, brightness%101 ) == 0 ); + return ( ::ioctl(fd, _SA1100_FL_IOCTL_INTENSITY, brightness ) == 0 ); } } } } |