summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp87
1 files changed, 78 insertions, 9 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 17ae389..a134810 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -1327,17 +1327,24 @@ void Zaurus::init ( )
1327 d-> m_vendorstr = "Sharp"; 1327 d-> m_vendorstr = "Sharp";
1328 d-> m_vendor = Vendor_Sharp; 1328 d-> m_vendor = Vendor_Sharp;
1329 1329
1330 QFile f ( "/proc/filesystems" ); 1330 // QFile f ( "/proc/filesystems" );
1331 QString model; 1331 QString model;
1332 1332
1333 if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) { 1333 // It isn't a good idea to check the system configuration to
1334 // detect the distribution !
1335 // Otherwise it may happen that any other distribution is detected as openzaurus, just
1336 // because it uses a jffs2 filesystem..
1337 // (eilers)
1338 // if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) {
1339 QFile f ("/etc/oz_version");
1340 if ( f.exists() ){
1334 d-> m_vendorstr = "OpenZaurus Team"; 1341 d-> m_vendorstr = "OpenZaurus Team";
1335 d-> m_systemstr = "OpenZaurus"; 1342 d-> m_systemstr = "OpenZaurus";
1336 d-> m_system = System_OpenZaurus; 1343 d-> m_system = System_OpenZaurus;
1337 1344
1338 f. close ( ); 1345 // f. close ( );
1339 1346
1340 f. setName ( "/etc/oz_version" ); 1347 // f. setName ( "/etc/oz_version" );
1341 if ( f. open ( IO_ReadOnly )) { 1348 if ( f. open ( IO_ReadOnly )) {
1342 QTextStream ts ( &f ); 1349 QTextStream ts ( &f );
1343 d-> m_sysverstr = ts. readLine ( );//. mid ( 10 ); 1350 d-> m_sysverstr = ts. readLine ( );//. mid ( 10 );
@@ -1365,7 +1372,10 @@ void Zaurus::init ( )
1365 if ( model == "SHARP Corgi" ) { 1372 if ( model == "SHARP Corgi" ) {
1366 d-> m_model = Model_Zaurus_SLC700; 1373 d-> m_model = Model_Zaurus_SLC700;
1367 d-> m_modelstr = "Zaurus SL-C700"; 1374 d-> m_modelstr = "Zaurus SL-C700";
1368 } else if ( model == "SHARP Poodle" ) { 1375 } else if ( model == "SHARP Shepherd" ) {
1376 d-> m_model = Model_Zaurus_SLC700; // Do we need a special type for the C750 ? (eilers)
1377 d-> m_modelstr = "Zaurus SL-C750";
1378 }else if ( model == "SHARP Poodle" ) {
1369 d-> m_model = Model_Zaurus_SLB600; 1379 d-> m_model = Model_Zaurus_SLB600;
1370 d-> m_modelstr = "Zaurus SL-B500 or SL-5600"; 1380 d-> m_modelstr = "Zaurus SL-B500 or SL-5600";
1371 } else if ( model = "Sharp-Collie" ) { 1381 } else if ( model = "Sharp-Collie" ) {
@@ -1514,12 +1524,71 @@ typedef struct sharp_led_status {
1514 1524
1515void Zaurus::buzzer ( int sound ) 1525void Zaurus::buzzer ( int sound )
1516{ 1526{
1517 int fd = ::open ( "/dev/sharp_buz", O_WRONLY|O_NONBLOCK ); 1527 // Not all devices have real sound.
1528#ifndef QT_NO_SOUND
1529 switch ( d-> m_model ) {
1530 case Model_Zaurus_SLC700:{
1531 int fd;
1532 int vol;
1533 bool vol_reset = false;
1534
1535 QString soundname;
1536
1537 switch ( sound ){
1538 case SHARP_BUZ_SCHEDULE_ALARM:
1539 soundname = "alarm";
1540 break;
1541 case SHARP_BUZ_TOUCHSOUND:
1542 soundname = "touchsound";
1543 break;
1544 case SHARP_BUZ_KEYSOUND:
1545 soundname = "keysound";
1546 break;
1547 default:
1548 soundname = "alarm";
1549
1550 }
1518 1551
1519 if ( fd >= 0 ) { 1552 Sound snd ( soundname );
1520 ::ioctl ( fd, SHARP_BUZZER_MAKESOUND, sound ); 1553
1521 ::close ( fd ); 1554 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) {
1555 if ( ::ioctl ( fd, MIXER_READ( 0 ), &vol ) >= 0 ) {
1556 Config cfg ( "qpe" );
1557 cfg. setGroup ( "Volume" );
1558
1559 int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 );
1560 if ( volalarm < 0 )
1561 volalarm = 0;
1562 else if ( volalarm > 100 )
1563 volalarm = 100;
1564 volalarm |= ( volalarm << 8 );
1565
1566 if ( ::ioctl ( fd, MIXER_WRITE( 0 ), &volalarm ) >= 0 )
1567 vol_reset = true;
1568 }
1569 }
1570
1571 snd. play ( );
1572 while ( !snd. isFinished ( ))
1573 qApp-> processEvents ( );
1574
1575 if ( fd >= 0 ) {
1576 if ( vol_reset )
1577 ::ioctl ( fd, MIXER_WRITE( 0 ), &vol );
1578 ::close ( fd );
1579 }
1580 break;
1522 } 1581 }
1582 default:{ // Devices with buzzer
1583 int fd = ::open ( "/dev/sharp_buz", O_WRONLY|O_NONBLOCK );
1584
1585 if ( fd >= 0 ) {
1586 ::ioctl ( fd, SHARP_BUZZER_MAKESOUND, sound );
1587 ::close ( fd );
1588 }
1589 }
1590 }
1591#endif
1523} 1592}
1524 1593
1525 1594