summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/manager.cc58
-rw-r--r--noncore/net/opietooth/manager/bluebase.cpp44
-rw-r--r--noncore/net/opietooth/manager/bluebase.h9
3 files changed, 54 insertions, 57 deletions
diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc
index 53122c1..83100f1 100644
--- a/noncore/net/opietooth/lib/manager.cc
+++ b/noncore/net/opietooth/lib/manager.cc
@@ -10,13 +10,13 @@ using namespace Opie::Core;
using namespace OpieTooth;
using Opie::Core::OProcess;
Manager::Manager( const QString& dev )
: QObject()
{
- owarn << "created" << oendl;
+ odebug << "Manager: created" << oendl;
m_device = dev;
m_hcitool = 0;
m_sdp = 0;
}
Manager::Manager( Device* /*dev*/ )
: QObject()
@@ -55,22 +55,22 @@ void Manager::isAvailable( const QString& device ){
void Manager::isAvailable( Device* /*dev*/ ){
}
void Manager::searchDevices( const QString& device ){
- owarn << "search devices" << oendl;
+ odebug << "Manager: search devices" << oendl;
OProcess* hcitool = new OProcess();
hcitool->setName( device.isEmpty() ? "hci0" : device.latin1() );
*hcitool << "hcitool" << "scan";
connect( hcitool, SIGNAL(processExited(Opie::Core::OProcess*) ) ,
this, SLOT(slotHCIExited(Opie::Core::OProcess* ) ) );
connect( hcitool, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int ) ),
this, SLOT(slotHCIOut(Opie::Core::OProcess*, char*, int ) ) );
if (!hcitool->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
- owarn << "could not start" << oendl;
+ odebug << "Manager: could not start" << oendl;
RemoteDevice::ValueList list;
emit foundDevices( device, list );
delete hcitool;
}
}
@@ -105,19 +105,19 @@ void Manager::removeServices( const QStringList& list){
removeService( (*it) );
}
void Manager::searchServices( const QString& remDevice ){
OProcess *m_sdp =new OProcess();
*m_sdp << "sdptool" << "browse" << remDevice;
m_sdp->setName( remDevice.latin1() );
- owarn << "search Services for " << remDevice.latin1() << oendl;
+ odebug << "Manager: search Services for " << remDevice.latin1() << oendl;
connect(m_sdp, SIGNAL(processExited(Opie::Core::OProcess*) ),
this, SLOT(slotSDPExited(Opie::Core::OProcess* ) ) );
connect(m_sdp, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int ) ),
this, SLOT(slotSDPOut(Opie::Core::OProcess*, char*, int) ) );
if (!m_sdp->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
- owarn << "could not start sdptool" << oendl;
+ odebug << "Manager: could not start sdptool" << oendl;
delete m_sdp;
Services::ValueList list;
emit foundServices( remDevice, list );
}
}
void Manager::searchServices( const RemoteDevice& dev){
@@ -138,91 +138,91 @@ void Manager::slotProcessExited(OProcess* proc ) {
emit available( name, conn );
delete proc;
}
void Manager::slotSDPOut(OProcess* proc, char* ch, int len)
{
QCString str(ch, len+1 );
- owarn << "SDP:" << str.data() << oendl;
+ odebug << "Manager: SDP:" << str.data() << oendl;
QMap<QString, QString>::Iterator it;
it = m_out.find(proc->name() );
QString string;
if ( it != m_out.end() ) {
string = it.data();
}
string.append( str );
m_out.replace( proc->name(), string );
}
void Manager::slotSDPExited( OProcess* proc)
{
- owarn << "proc name " << proc->name() << oendl;
+ odebug << "Manager: proc name " << proc->name() << oendl;
Services::ValueList list;
if (proc->normalExit() ) {
QMap<QString, QString>::Iterator it = m_out.find( proc->name() );
if ( it != m_out.end() ) {
- owarn << "found process" << oendl;
+ odebug << "Manager: found process" << oendl;
list = parseSDPOutput( it.data() );
m_out.remove( it );
}
}
emit foundServices( proc->name(), list );
delete proc;
}
Services::ValueList Manager::parseSDPOutput( const QString& out ) {
Services::ValueList list;
- owarn << "parsing output" << oendl;
+ odebug << "Manager: parsing output" << oendl;
Parser parser( out );
list = parser.services();
return list;
}
void Manager::slotHCIExited(OProcess* proc ) {
- owarn << "process exited" << oendl;
+ odebug << "Manager: process exited" << oendl;
RemoteDevice::ValueList list;
if (proc->normalExit() ) {
- owarn << "normalExit " << proc->name() << oendl;
+ odebug << "Manager: normalExit " << proc->name() << oendl;
QMap<QString, QString>::Iterator it = m_devices.find(proc->name() );
if (it != m_devices.end() ) {
- owarn << "!= end ;)" << oendl;
+ odebug << "Manager: != end ;)" << oendl;
list = parseHCIOutput( it.data() );
m_devices.remove( it );
}
}
emit foundDevices( proc->name(), list );
delete proc;
}
void Manager::slotHCIOut(OProcess* proc, char* ch, int len) {
QCString str( ch, len+1 );
- owarn << "hci: " << str.data() << oendl;
+ odebug << "Manager: hci: " << str.data() << oendl;
QMap<QString, QString>::Iterator it;
it = m_devices.find( proc->name() );
- owarn << "proc->name " << proc->name() << oendl;
+ odebug << "Manager: proc->name " << proc->name() << oendl;
QString string;
if (it != m_devices.end() ) {
- owarn << "slotHCIOut " << oendl;
+ odebug << "Manager: slotHCIOut " << oendl;
string = it.data();
}
string.append( str );
m_devices.replace( proc->name(), string );
}
RemoteDevice::ValueList Manager::parseHCIOutput(const QString& output ) {
- owarn << "parseHCI " << output.latin1() << oendl;
+ odebug << "Manager: parseHCI " << output.latin1() << oendl;
RemoteDevice::ValueList list;
QStringList strList = QStringList::split('\n', output );
QStringList::Iterator it;
QString str;
for ( it = strList.begin(); it != strList.end(); ++it ) {
str = (*it).stripWhiteSpace();
- owarn << "OpieTooth " << str.latin1() << oendl;
+ odebug << "Manager: OpieTooth " << str.latin1() << oendl;
int pos = str.findRev(':' );
if ( pos > 0 ) {
QString mac = str.left(17 );
str.remove( 0, 17 );
- owarn << "mac " << mac.latin1() << oendl;
- owarn << "rest: " << str.latin1() << oendl;
+ odebug << "Manager: mac " << mac.latin1() << oendl;
+ odebug << "Manager: rest: " << str.latin1() << oendl;
RemoteDevice rem( mac , str.stripWhiteSpace() );
list.append( rem );
}
}
return list;
}
@@ -241,13 +241,13 @@ void Manager::connectTo( const QString& mac) {
proc << mac;
proc.start(OProcess::DontCare); // the lib does not care at this point
}
void Manager::searchConnections() {
- owarn << "searching connections?" << oendl;
+ odebug << "Manager: searchConnections()" << oendl;
OProcess* proc = new OProcess();
m_hcitoolCon = QString::null;
connect(proc, SIGNAL(processExited(Opie::Core::OProcess*) ),
this, SLOT(slotConnectionExited( Opie::Core::OProcess*) ) );
connect(proc, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int) ),
@@ -279,21 +279,21 @@ ConnectionState::ValueList Manager::parseConnections( const QString& out ) {
// remove the first line ( "Connections:")
it = list.begin();
it = list.remove( it );
for (; it != list.end(); ++it ) {
QString row = (*it).stripWhiteSpace();
QStringList value = QStringList::split(' ', row );
- owarn << "0: %s" << value[0].latin1() << oendl;
- owarn << "1: %s" << value[1].latin1() << oendl;
- owarn << "2: %s" << value[2].latin1() << oendl;
- owarn << "3: %s" << value[3].latin1() << oendl;
- owarn << "4: %s" << value[4].latin1() << oendl;
- owarn << "5: %s" << value[5].latin1() << oendl;
- owarn << "6: %s" << value[6].latin1() << oendl;
- owarn << "7: %s" << value[7].latin1() << oendl;
- owarn << "8: %s" << value[8].latin1() << oendl;
+ odebug << "Manager: 0: " << value[0].latin1() << oendl;
+ odebug << "Manager: 1: " << value[1].latin1() << oendl;
+ odebug << "Manager: 2: " << value[2].latin1() << oendl;
+ odebug << "Manager: 3: " << value[3].latin1() << oendl;
+ odebug << "Manager: 4: " << value[4].latin1() << oendl;
+ odebug << "Manager: 5: " << value[5].latin1() << oendl;
+ odebug << "Manager: 6: " << value[6].latin1() << oendl;
+ odebug << "Manager: 7: " << value[7].latin1() << oendl;
+ odebug << "Manager: 8: " << value[8].latin1() << oendl;
ConnectionState con;
con.setDirection( value[0] == QString::fromLatin1("<") ? Outgoing : Incoming );
con.setConnectionMode( value[1] );
con.setMac( value[2] );
con.setHandle( value[4].toInt() );
con.setState( value[6].toInt() );
diff --git a/noncore/net/opietooth/manager/bluebase.cpp b/noncore/net/opietooth/manager/bluebase.cpp
index af1cd23..0649514 100644
--- a/noncore/net/opietooth/manager/bluebase.cpp
+++ b/noncore/net/opietooth/manager/bluebase.cpp
@@ -56,22 +56,19 @@ using namespace Opie::Core;
using namespace OpieTooth;
BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl )
: BluetoothBase( parent, name, fl )
{
-
m_localDevice = new Manager( "hci0" );
connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) );
connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) );
connect( rfcommBindButton, SIGNAL( clicked() ), this, SLOT( rfcommDialog() ) );
- // not good since lib is async
- // connect( devicesView, SIGNAL( expanded(QListViewItem*) ),
- // this, SLOT( addServicesToDevice(QListViewItem*) ) );
+
connect( devicesView, SIGNAL( clicked(QListViewItem*)),
this, SLOT( startServiceActionClicked(QListViewItem*) ) );
connect( devicesView, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ),
this, SLOT(startServiceActionHold(QListViewItem*,const QPoint&,int) ) );
connect( m_localDevice , SIGNAL( foundServices(const QString&,Services::ValueList) ),
this, SLOT( addServicesToDevice(const QString&,Services::ValueList) ) );
@@ -79,13 +76,12 @@ BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl )
this, SLOT( deviceActive(const QString&,bool) ) );
connect( m_localDevice, SIGNAL( connections(ConnectionState::ValueList) ),
this, SLOT( addConnectedDevices(ConnectionState::ValueList) ) );
connect( m_localDevice, SIGNAL( signalStrength(const QString&,const QString&) ),
this, SLOT( addSignalStrength(const QString&,const QString&) ) );
-
// let hold be rightButtonClicked()
QPEApplication::setStylusOperation( devicesView->viewport(), QPEApplication::RightOnHold);
QPEApplication::setStylusOperation( connectionsView->viewport(), QPEApplication::RightOnHold);
//Load all icons needed
m_offPix = Resource::loadPixmap( "opietooth/notconnected" );
@@ -103,20 +99,18 @@ BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl )
setCaption( tr( "Bluetooth Manager" ) );
readConfig();
initGui();
devicesView->setRootIsDecorated(true);
-
-
+ m_iconLoader = new BTIconLoader();
writeToHciConfig();
- // search conncetions
addConnectedDevices();
- addSignalStrength();
- m_iconLoader = new BTIconLoader();
readSavedDevices();
+ addServicesToDevices();
+ QTimer::singleShot( 3000, this, SLOT( addServicesToDevices() ) );
}
/**
* Reads all options from the config file
*/
void BlueBase::readConfig()
@@ -168,13 +162,13 @@ void BlueBase::writeToHciConfig()
hciconf.setIscan( m_enableInquiryscan );
hciconf.save();
}
/**
- * Read the list of allready known devices
+ * Read the list of already known devices
*/
void BlueBase::readSavedDevices()
{
QValueList<RemoteDevice> loadedDevices;
DeviceHandler handler;
@@ -182,13 +176,13 @@ void BlueBase::readSavedDevices()
addSearchedDevices( loadedDevices );
}
/**
- * Write the list of allready known devices
+ * Write the list of already known devices
*/
void BlueBase::writeSavedDevices()
{
QListViewItemIterator it( devicesView );
BTListItem* item;
BTDeviceItem* device;
@@ -292,15 +286,12 @@ void BlueBase::addSearchedDevices( const QValueList<RemoteDevice> &newDevices )
deviceItem = new BTDeviceItem( devicesView , (*it) );
deviceItem->setPixmap( 1, m_findPix );
deviceItem->setExpandable ( true );
// look if device is avail. atm, async
deviceActive( (*it) );
-
- // ggf auch hier?
- addServicesToDevice( deviceItem );
}
}
/**
* Action that is toggled on entrys on click
@@ -395,36 +386,45 @@ void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & poin
delete popup;
}
delete menu;
}
+void BlueBase::addServicesToDevices()
+{
+ odebug << "BlueBase::addServicesToDevices()" << oendl;
+ BTDeviceItem* item = (BTDeviceItem*) devicesView->firstChild();
+ while ( item )
+ {
+ addServicesToDevice( item );
+ item = (BTDeviceItem*) static_cast<QListViewItem*>( item )->nextSibling();
+ }
+}
+
/**
* Search and display avail. services for a device (on expand from device listing)
* @param item the service item returned
*/
void BlueBase::addServicesToDevice( BTDeviceItem * item )
{
- odebug << "addServicesToDevice" << oendl;
+ odebug << "BlueBase::addServicesToDevice" << oendl;
// row of mac adress text(3)
RemoteDevice device = item->remoteDevice();
m_deviceList.insert( item->mac() , item );
// and some time later I get a signal foundServices( const QString& device, Services::ValueList ); back
m_localDevice->searchServices( device );
}
/**
- * Overloaded. This one it the one that is
- ted to the foundServices signal
* @param device the mac address of the remote device
* @param servicesList the list with the service the device has.
*/
void BlueBase::addServicesToDevice( const QString& device, Services::ValueList servicesList )
{
- odebug << "fill services list" << oendl;
+ odebug << "BlueBase::fill services list" << oendl;
QMap<QString,BTDeviceItem*>::Iterator it;
BTDeviceItem* deviceItem = 0;
// get the right devices which requested the search
it = m_deviceList.find( device );
@@ -473,16 +473,12 @@ void BlueBase::addServicesToDevice( const QString& device, Services::ValueList s
serviceItem = new BTServiceItem( deviceItem, s1 );
}
// now remove them from the list
m_deviceList.remove( it );
}
-
-
-
-
void BlueBase::addSignalStrength()
{
QListViewItemIterator it( connectionsView );
for ( ; it.current(); ++it )
{
@@ -509,12 +505,13 @@ void BlueBase::addSignalStrength( const QString& mac, const QString& strength )
* Add the existing connections (pairs) to the connections tab.
* This one triggers the search
*/
void BlueBase::addConnectedDevices()
{
m_localDevice->searchConnections();
+ QTimer::singleShot( 5000, this, SLOT( addSignalStrength() ) );
}
/**
* This adds the found connections to the connection tab.
* @param connectionList the ValueList with all current connections
*/
@@ -612,13 +609,12 @@ void BlueBase::deviceActive( const QString& device, bool connected )
it = m_deviceList.find( device );
if( it == m_deviceList.end() )
return;
BTDeviceItem* deviceItem = it.data();
-
if ( connected )
{
deviceItem->setPixmap( 1, m_onPix );
}
else
{
diff --git a/noncore/net/opietooth/manager/bluebase.h b/noncore/net/opietooth/manager/bluebase.h
index a8ab3db..48883d2 100644
--- a/noncore/net/opietooth/manager/bluebase.h
+++ b/noncore/net/opietooth/manager/bluebase.h
@@ -37,22 +37,22 @@ namespace OpieTooth {
class BlueBase : public BluetoothBase {
Q_OBJECT
public:
BlueBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~BlueBase();
-
- static QString appName() { return QString::fromLatin1("bluetooth-manager"); }
+
+ static QString appName() { return QString::fromLatin1("bluetooth-manager"); }
protected:
private slots:
void startScan();
-
-
+
+
private:
bool find( const RemoteDevice& device );
void readConfig();
void writeConfig();
void readSavedDevices();
void writeSavedDevices();
@@ -79,12 +79,13 @@ namespace OpieTooth {
QPixmap m_findPix;
BTIconLoader *m_iconLoader;
private slots:
void addSearchedDevices( const QValueList<RemoteDevice> &newDevices );
+ void addServicesToDevices();
void addServicesToDevice( BTDeviceItem *item );
void addServicesToDevice( const QString& device, Services::ValueList );
void addConnectedDevices();
void addConnectedDevices( ConnectionState::ValueList );
void startServiceActionClicked( QListViewItem *item );
void startServiceActionHold( QListViewItem *, const QPoint &, int );