author | wimpie <wimpie> | 2005-01-09 00:32:10 (UTC) |
---|---|---|
committer | wimpie <wimpie> | 2005-01-09 00:32:10 (UTC) |
commit | e54346d28b19d3ac671802a25e8c03f346693291 (patch) (unidiff) | |
tree | 0f8d6561e24a7ba36fd8a6ab1869aa470e1fdb36 /noncore/settings/networksettings2 | |
parent | 60a617583d0ccc793d9ea4465998d90ec208db58 (diff) | |
download | opie-e54346d28b19d3ac671802a25e8c03f346693291.zip opie-e54346d28b19d3ac671802a25e8c03f346693291.tar.gz opie-e54346d28b19d3ac671802a25e8c03f346693291.tar.bz2 |
Updated dependencies
NS2->app requires OT2Lib and NS2Lib
OT2Lib requires NS2Lib
Most plugins only require NS2Lib
Except
BTPlugin which requires als OT2Lib
Also renamed owarn -> odebug
Diffstat (limited to 'noncore/settings/networksettings2') (more/less context) (ignore whitespace changes)
24 files changed, 139 insertions, 137 deletions
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp index ef6878a..3df7f5c 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp +++ b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp | |||
@@ -3,49 +3,49 @@ | |||
3 | #include <OTDevice.h> | 3 | #include <OTDevice.h> |
4 | #include <OTGateway.h> | 4 | #include <OTGateway.h> |
5 | #include "bluetoothRFCOMMrun.h" | 5 | #include "bluetoothRFCOMMrun.h" |
6 | 6 | ||
7 | using Opietooth2::OTGateway; | 7 | using Opietooth2::OTGateway; |
8 | using Opietooth2::OTDevice; | 8 | using Opietooth2::OTDevice; |
9 | using Opietooth2::OTDeviceAddress; | 9 | using Opietooth2::OTDeviceAddress; |
10 | 10 | ||
11 | BluetoothRFCOMMRun::~BluetoothRFCOMMRun( void ) { | 11 | BluetoothRFCOMMRun::~BluetoothRFCOMMRun( void ) { |
12 | if( OT ) { | 12 | if( OT ) { |
13 | OTGateway::releaseOTGateway(); | 13 | OTGateway::releaseOTGateway(); |
14 | } | 14 | } |
15 | } | 15 | } |
16 | 16 | ||
17 | State_t BluetoothRFCOMMRun::detectState( void ) { | 17 | State_t BluetoothRFCOMMRun::detectState( void ) { |
18 | 18 | ||
19 | if( ! OT ) { | 19 | if( ! OT ) { |
20 | OT = OTGateway::getOTGateway(); | 20 | OT = OTGateway::getOTGateway(); |
21 | } | 21 | } |
22 | 22 | ||
23 | if( deviceNrOfConnection() >= 0 ) { | 23 | if( deviceNrOfConnection() >= 0 ) { |
24 | return Available; | 24 | return Available; |
25 | } | 25 | } |
26 | 26 | ||
27 | owarn << "Bluetooth " | 27 | odebug << "Bluetooth " |
28 | << OT->isEnabled() | 28 | << OT->isEnabled() |
29 | << oendl; | 29 | << oendl; |
30 | 30 | ||
31 | return ( OT->isEnabled() ) ? Off : Unavailable; | 31 | return ( OT->isEnabled() ) ? Off : Unavailable; |
32 | } | 32 | } |
33 | 33 | ||
34 | QString BluetoothRFCOMMRun::setMyState( NodeCollection *, | 34 | QString BluetoothRFCOMMRun::setMyState( NodeCollection *, |
35 | Action_t A, | 35 | Action_t A, |
36 | bool ) { | 36 | bool ) { |
37 | 37 | ||
38 | if( OT ) { | 38 | if( OT ) { |
39 | OTGateway::getOTGateway(); | 39 | OTGateway::getOTGateway(); |
40 | } | 40 | } |
41 | 41 | ||
42 | if( A == Activate ) { | 42 | if( A == Activate ) { |
43 | // from OFF to Available | 43 | // from OFF to Available |
44 | RFCOMMChannel * Ch = getChannel( ); | 44 | RFCOMMChannel * Ch = getChannel( ); |
45 | System & Sys = NSResources->system(); | 45 | System & Sys = NSResources->system(); |
46 | 46 | ||
47 | if( Ch ) { | 47 | if( Ch ) { |
48 | // connect to this peer | 48 | // connect to this peer |
49 | DeviceNr = OT->getFreeRFCommDevice(); | 49 | DeviceNr = OT->getFreeRFCommDevice(); |
50 | QStringList S; | 50 | QStringList S; |
51 | 51 | ||
@@ -98,67 +98,67 @@ RFCOMMChannel * BluetoothRFCOMMRun::getChannel( void ) { | |||
98 | QLabel * L = new QLabel( | 98 | QLabel * L = new QLabel( |
99 | qApp->translate( "BluetoothRFCOMMRun", | 99 | qApp->translate( "BluetoothRFCOMMRun", |
100 | "Select device to connect to"), | 100 | "Select device to connect to"), |
101 | Dlg ); | 101 | Dlg ); |
102 | QListBox * LB = new QListBox( Dlg ); | 102 | QListBox * LB = new QListBox( Dlg ); |
103 | 103 | ||
104 | for( unsigned int i = 0; i < Data->Devices.count(); i ++ ) { | 104 | for( unsigned int i = 0; i < Data->Devices.count(); i ++ ) { |
105 | LB->insertItem( QString( "%1 (%2 Chnl %3)" ). | 105 | LB->insertItem( QString( "%1 (%2 Chnl %3)" ). |
106 | arg( Data->Devices[i]->Name ). | 106 | arg( Data->Devices[i]->Name ). |
107 | arg( Data->Devices[i]->BDAddress ). | 107 | arg( Data->Devices[i]->BDAddress ). |
108 | arg( Data->Devices[i]->Channel ) ); | 108 | arg( Data->Devices[i]->Channel ) ); |
109 | } | 109 | } |
110 | 110 | ||
111 | V->addWidget( L ); | 111 | V->addWidget( L ); |
112 | V->addWidget( LB ); | 112 | V->addWidget( LB ); |
113 | 113 | ||
114 | Dlg->resize( 100, 100 ); | 114 | Dlg->resize( 100, 100 ); |
115 | Dlg->move( 20, | 115 | Dlg->move( 20, |
116 | (qApp->desktop()->height()-100)/2 ); | 116 | (qApp->desktop()->height()-100)/2 ); |
117 | 117 | ||
118 | if( Dlg->exec() == QDialog::Accepted ) { | 118 | if( Dlg->exec() == QDialog::Accepted ) { |
119 | unsigned int i = 0; | 119 | unsigned int i = 0; |
120 | for( i = 0; i < Data->Devices.count(); i ++ ) { | 120 | for( i = 0; i < Data->Devices.count(); i ++ ) { |
121 | if( LB->isSelected(i) ) { | 121 | if( LB->isSelected(i) ) { |
122 | owarn << "Selected " << Data->Devices[i]->Name << oendl; | 122 | odebug << "Selected " << Data->Devices[i]->Name << oendl; |
123 | Ch = Data->Devices[i]; | 123 | Ch = Data->Devices[i]; |
124 | break; | 124 | break; |
125 | } | 125 | } |
126 | } | 126 | } |
127 | } | 127 | } |
128 | 128 | ||
129 | delete Dlg; | 129 | delete Dlg; |
130 | return Ch; | 130 | return Ch; |
131 | } | 131 | } |
132 | 132 | ||
133 | QString BluetoothRFCOMMRun::deviceFile( void ) { | 133 | QString BluetoothRFCOMMRun::deviceFile( void ) { |
134 | if( deviceNrOfConnection() >= 0 ) { | 134 | if( deviceNrOfConnection() >= 0 ) { |
135 | OTDevice * OTD = OT->getOTDevice(); | 135 | OTDevice * OTD = OT->getOTDevice(); |
136 | // there is a connection | 136 | // there is a connection |
137 | return OTD->getRFCommDevicePattern().arg(DeviceNr); | 137 | return OTD->getRFCommDevicePattern().arg(DeviceNr); |
138 | } | 138 | } |
139 | return QString(); | 139 | return QString(); |
140 | } | 140 | } |
141 | 141 | ||
142 | int BluetoothRFCOMMRun::deviceNrOfConnection( void ) { | 142 | int BluetoothRFCOMMRun::deviceNrOfConnection( void ) { |
143 | 143 | ||
144 | if( ! OT ) { | 144 | if( ! OT ) { |
145 | OT = OTGateway::getOTGateway(); | 145 | OT = OTGateway::getOTGateway(); |
146 | } | 146 | } |
147 | 147 | ||
148 | DeviceNr = -1; | 148 | DeviceNr = -1; |
149 | for( unsigned int i = 0; i < Data->Devices.count(); i ++ ) { | 149 | for( unsigned int i = 0; i < Data->Devices.count(); i ++ ) { |
150 | owarn << "Check for rfcomm on " | 150 | odebug << "Check for rfcomm on " |
151 | << Data->Devices[i]->BDAddress | 151 | << Data->Devices[i]->BDAddress |
152 | << " " | 152 | << " " |
153 | << Data->Devices[i]->Channel | 153 | << Data->Devices[i]->Channel |
154 | << oendl; | 154 | << oendl; |
155 | if( ( DeviceNr = OT->connectedToRFCommChannel( | 155 | if( ( DeviceNr = OT->connectedToRFCommChannel( |
156 | OTDeviceAddress( Data->Devices[i]->BDAddress ), | 156 | OTDeviceAddress( Data->Devices[i]->BDAddress ), |
157 | Data->Devices[i]->Channel ) ) >= 0 ) { | 157 | Data->Devices[i]->Channel ) ) >= 0 ) { |
158 | owarn << "Up " | 158 | odebug << "Up " |
159 | << oendl; | 159 | << oendl; |
160 | break; | 160 | break; |
161 | } | 161 | } |
162 | } | 162 | } |
163 | return DeviceNr; | 163 | return DeviceNr; |
164 | } | 164 | } |
diff --git a/noncore/settings/networksettings2/bluetooth/config.in b/noncore/settings/networksettings2/bluetooth/config.in index 398cff1..1a76f96 100644 --- a/noncore/settings/networksettings2/bluetooth/config.in +++ b/noncore/settings/networksettings2/bluetooth/config.in | |||
@@ -1,4 +1,4 @@ | |||
1 | config NS2BT | 1 | config NS2BT |
2 | boolean "opie-networksettings2plugin-bluetooth (set up BLUETOOTH)" | 2 | boolean "opie-networksettings2plugin-bluetooth (set up BLUETOOTH)" |
3 | default "n" if NS2 | 3 | default "n" if NS2 |
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && NS2CORE && NS2OPIETOOTH | 4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && NS2CORE && NS2OPIETOOTH && LIBBLUEZ_DEP |
diff --git a/noncore/settings/networksettings2/config.in b/noncore/settings/networksettings2/config.in index d2b5f26..0236bab 100644 --- a/noncore/settings/networksettings2/config.in +++ b/noncore/settings/networksettings2/config.in | |||
@@ -1,21 +1,21 @@ | |||
1 | source noncore/settings/networksettings2/networksettings2/config.in | 1 | source noncore/settings/networksettings2/networksettings2/config.in |
2 | source noncore/settings/networksettings2/opietooth2/config.in | 2 | source noncore/settings/networksettings2/opietooth2/config.in |
3 | source noncore/settings/networksettings2/opietooth2_applet/config.in | 3 | source noncore/settings/networksettings2/opietooth2_applet/config.in |
4 | 4 | ||
5 | config NS2 | 5 | config NS2 |
6 | boolean | 6 | boolean "opie-networksettings2 application" |
7 | default "y" | 7 | default "y" |
8 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && NS2CORE && NS2OPIETOOTH | 8 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && NS2CORE && NS2OPIETOOTH |
9 | 9 | ||
10 | source noncore/settings/networksettings2/profile/config.in | 10 | source noncore/settings/networksettings2/profile/config.in |
11 | source noncore/settings/networksettings2/network/config.in | 11 | source noncore/settings/networksettings2/network/config.in |
12 | source noncore/settings/networksettings2/lancard/config.in | 12 | source noncore/settings/networksettings2/lancard/config.in |
13 | source noncore/settings/networksettings2/ppp/config.in | 13 | source noncore/settings/networksettings2/ppp/config.in |
14 | source noncore/settings/networksettings2/wlan/config.in | 14 | source noncore/settings/networksettings2/wlan/config.in |
15 | source noncore/settings/networksettings2/usb/config.in | 15 | source noncore/settings/networksettings2/usb/config.in |
16 | source noncore/settings/networksettings2/irda/config.in | 16 | source noncore/settings/networksettings2/irda/config.in |
17 | source noncore/settings/networksettings2/vpn/config.in | 17 | source noncore/settings/networksettings2/vpn/config.in |
18 | source noncore/settings/networksettings2/bluetooth/config.in | 18 | source noncore/settings/networksettings2/bluetooth/config.in |
19 | source noncore/settings/networksettings2/cable/config.in | 19 | source noncore/settings/networksettings2/cable/config.in |
20 | source noncore/settings/networksettings2/modem/config.in | 20 | source noncore/settings/networksettings2/modem/config.in |
21 | source noncore/settings/networksettings2/gprs/config.in | 21 | source noncore/settings/networksettings2/gprs/config.in |
diff --git a/noncore/settings/networksettings2/editconnection.cpp b/noncore/settings/networksettings2/editconnection.cpp index 0c3ead6..717d9e9 100644 --- a/noncore/settings/networksettings2/editconnection.cpp +++ b/noncore/settings/networksettings2/editconnection.cpp | |||
@@ -134,49 +134,48 @@ NodeCollection * EditConnection::getTmpCollection( void ) { | |||
134 | */ | 134 | */ |
135 | ANetNodeInstance * NNI = | 135 | ANetNodeInstance * NNI = |
136 | (SelectedNodes) ? SelectedNodes->first() : 0 ; | 136 | (SelectedNodes) ? SelectedNodes->first() : 0 ; |
137 | 137 | ||
138 | TmpCollection.setModified( 0 ); | 138 | TmpCollection.setModified( 0 ); |
139 | 139 | ||
140 | // the listview always starts with the toplevel | 140 | // the listview always starts with the toplevel |
141 | // hierarchy. This is always a controller item | 141 | // hierarchy. This is always a controller item |
142 | while ( it ) { | 142 | while ( it ) { |
143 | NN = (*Mapping)[it]; | 143 | NN = (*Mapping)[it]; |
144 | if( NN == 0 ) { | 144 | if( NN == 0 ) { |
145 | // this item is a controller -> | 145 | // this item is a controller -> |
146 | // has radio items as children -> | 146 | // has radio items as children -> |
147 | // find selected one | 147 | // find selected one |
148 | it = it->firstChild(); | 148 | it = it->firstChild(); |
149 | while( it ) { | 149 | while( it ) { |
150 | if( ((QCheckListItem *)it)->isOn() ) { | 150 | if( ((QCheckListItem *)it)->isOn() ) { |
151 | // this radio is selected -> go deeper | 151 | // this radio is selected -> go deeper |
152 | break; | 152 | break; |
153 | } | 153 | } |
154 | it = it->nextSibling(); | 154 | it = it->nextSibling(); |
155 | } | 155 | } |
156 | 156 | ||
157 | if( ! it ) { | 157 | if( ! it ) { |
158 | owarn << "Radio not selected" << oendl; | ||
159 | TmpIsValid = 0; | 158 | TmpIsValid = 0; |
160 | return 0; | 159 | return 0; |
161 | } | 160 | } |
162 | 161 | ||
163 | // it now contains selected radio | 162 | // it now contains selected radio |
164 | NN = (*Mapping)[it]; | 163 | NN = (*Mapping)[it]; |
165 | } | 164 | } |
166 | 165 | ||
167 | // NN here contains the netnode of the | 166 | // NN here contains the netnode of the |
168 | // current item -> this node needs to | 167 | // current item -> this node needs to |
169 | // be stored in the collection | 168 | // be stored in the collection |
170 | if( NNI == 0 || | 169 | if( NNI == 0 || |
171 | it->text(0) != NNI->nodeClass()->name() ) { | 170 | it->text(0) != NNI->nodeClass()->name() ) { |
172 | // new item not in previous collection | 171 | // new item not in previous collection |
173 | ANetNodeInstance * NNI = NN->createInstance(); | 172 | ANetNodeInstance * NNI = NN->createInstance(); |
174 | NNI->initialize(); | 173 | NNI->initialize(); |
175 | // this node type not in collection | 174 | // this node type not in collection |
176 | TmpCollection.append( NNI ); | 175 | TmpCollection.append( NNI ); |
177 | // master collection changed because new item in it | 176 | // master collection changed because new item in it |
178 | TmpCollection.setModified( 1 ); | 177 | TmpCollection.setModified( 1 ); |
179 | // no more valid items in old list | 178 | // no more valid items in old list |
180 | NNI = 0; | 179 | NNI = 0; |
181 | } else { | 180 | } else { |
182 | // already in list -> copy pointer | 181 | // already in list -> copy pointer |
diff --git a/noncore/settings/networksettings2/gprs/GPRSrun.cpp b/noncore/settings/networksettings2/gprs/GPRSrun.cpp index e842b99..cccc71a 100644 --- a/noncore/settings/networksettings2/gprs/GPRSrun.cpp +++ b/noncore/settings/networksettings2/gprs/GPRSrun.cpp | |||
@@ -2,104 +2,104 @@ | |||
2 | #include <signal.h> | 2 | #include <signal.h> |
3 | #include <errno.h> | 3 | #include <errno.h> |
4 | #include <qdir.h> | 4 | #include <qdir.h> |
5 | #include <system.h> | 5 | #include <system.h> |
6 | #include <resources.h> | 6 | #include <resources.h> |
7 | #include <netnode.h> | 7 | #include <netnode.h> |
8 | #include "GPRSrun.h" | 8 | #include "GPRSrun.h" |
9 | 9 | ||
10 | State_t GPRSRun::detectState( void ) { | 10 | State_t GPRSRun::detectState( void ) { |
11 | 11 | ||
12 | // is pppd still running ? | 12 | // is pppd still running ? |
13 | // is rfcomm still active | 13 | // is rfcomm still active |
14 | NodeCollection * NC = nodeCollection(); | 14 | NodeCollection * NC = nodeCollection(); |
15 | InterfaceInfo * I = NC->assignedInterface(); | 15 | InterfaceInfo * I = NC->assignedInterface(); |
16 | 16 | ||
17 | QDir D("/var/run"); | 17 | QDir D("/var/run"); |
18 | 18 | ||
19 | if( I ) { | 19 | if( I ) { |
20 | // has some pppx attached | 20 | // has some pppx attached |
21 | return ( I->IsUp ) ? IsUp : Available; | 21 | return ( I->IsUp ) ? IsUp : Available; |
22 | } | 22 | } |
23 | 23 | ||
24 | // check ppp itself and figure out interface | 24 | // check ppp itself and figure out interface |
25 | 25 | ||
26 | owarn << "Check for ppp " << NC->name() << oendl; | 26 | odebug << "Check for ppp " << NC->name() << oendl; |
27 | if( D.exists( QString("ppp-")+removeSpaces(NC->name())+".pid") ) { | 27 | if( D.exists( QString("ppp-")+removeSpaces(NC->name())+".pid") ) { |
28 | // get pid and check if pppd is still running | 28 | // get pid and check if pppd is still running |
29 | QFile F( D.path()+"/ppp-"+removeSpaces(NC->name())+".pid"); | 29 | QFile F( D.path()+"/ppp-"+removeSpaces(NC->name())+".pid"); |
30 | 30 | ||
31 | owarn << "PPP PID " << F.name() << oendl; | 31 | odebug << "PPP PID " << F.name() << oendl; |
32 | if( F.open( IO_ReadOnly ) ) { | 32 | if( F.open( IO_ReadOnly ) ) { |
33 | QTextStream TS(&F); | 33 | QTextStream TS(&F); |
34 | QString X = TS.readLine(); | 34 | QString X = TS.readLine(); |
35 | PPPPid = X.toULong(); | 35 | PPPPid = X.toULong(); |
36 | int rv; | 36 | int rv; |
37 | 37 | ||
38 | rv = ::kill( PPPPid, 0 ); | 38 | rv = ::kill( PPPPid, 0 ); |
39 | if( rv == 0 || | 39 | if( rv == 0 || |
40 | ( rv < 0 && errno == EPERM ) | 40 | ( rv < 0 && errno == EPERM ) |
41 | ) { | 41 | ) { |
42 | // pppd is still up | 42 | // pppd is still up |
43 | X = TS.readLine(); | 43 | X = TS.readLine(); |
44 | I = NSResources->system().findInterface(X); | 44 | I = NSResources->system().findInterface(X); |
45 | 45 | ||
46 | owarn << "ppp running : IFace " << X << " = " << (long)I << oendl; | 46 | odebug << "ppp running : IFace " << X << " = " << (long)I << oendl; |
47 | 47 | ||
48 | if( I ) { | 48 | if( I ) { |
49 | NC->assignInterface( I ); | 49 | NC->assignInterface( I ); |
50 | return (I->IsUp) ? IsUp : Available; | 50 | return (I->IsUp) ? IsUp : Available; |
51 | } | 51 | } |
52 | 52 | ||
53 | return Available; | 53 | return Available; |
54 | 54 | ||
55 | } else { | 55 | } else { |
56 | // pppd is down | 56 | // pppd is down |
57 | PPPPid = 0; | 57 | PPPPid = 0; |
58 | } | 58 | } |
59 | } // else pppd is down | 59 | } // else pppd is down |
60 | } | 60 | } |
61 | NC->assignInterface( 0 ); | 61 | NC->assignInterface( 0 ); |
62 | return Unknown; | 62 | return Unknown; |
63 | } | 63 | } |
64 | 64 | ||
65 | QString GPRSRun::setMyState( NodeCollection * NC, Action_t A , bool ) { | 65 | QString GPRSRun::setMyState( NodeCollection * NC, Action_t A , bool ) { |
66 | 66 | ||
67 | if( A == Up ) { | 67 | if( A == Up ) { |
68 | // start ppp on deviceFile | 68 | // start ppp on deviceFile |
69 | QStringList SL; | 69 | QStringList SL; |
70 | SL << "pon" | 70 | SL << "pon" |
71 | << removeSpaces( NC->name() ) | 71 | << removeSpaces( NC->name() ) |
72 | << NC->device()->deviceFile(); | 72 | << NC->device()->deviceFile(); |
73 | 73 | ||
74 | if( ! NSResources->system().execAsUser( SL ) ) { | 74 | if( ! NSResources->system().execAsUser( SL ) ) { |
75 | return QString("Cannot start pppd for %1").arg(NC->name()); | 75 | return QString("Cannot start pppd for %1").arg(NC->name()); |
76 | } | 76 | } |
77 | } else if ( A == Down ) { | 77 | } else if ( A == Down ) { |
78 | if( PPPPid == 0 ) { | 78 | if( PPPPid == 0 ) { |
79 | detectState(); | 79 | detectState(); |
80 | } | 80 | } |
81 | if( PPPPid ) { | 81 | if( PPPPid ) { |
82 | QStringList SL; | 82 | QStringList SL; |
83 | 83 | ||
84 | SL << "poff" | 84 | SL << "poff" |
85 | << removeSpaces( NC->name() ); | 85 | << removeSpaces( NC->name() ); |
86 | 86 | ||
87 | if( ! NSResources->system().execAsUser( SL ) ) { | 87 | if( ! NSResources->system().execAsUser( SL ) ) { |
88 | return QString("Cannot terminate pppd for %1").arg(NC->name()); | 88 | return QString("Cannot terminate pppd for %1").arg(NC->name()); |
89 | } | 89 | } |
90 | NC->assignInterface( 0 ); | 90 | NC->assignInterface( 0 ); |
91 | owarn << "ppp stopped " << oendl; | 91 | odebug << "ppp stopped " << oendl; |
92 | PPPPid = 0; | 92 | PPPPid = 0; |
93 | } | 93 | } |
94 | } | 94 | } |
95 | 95 | ||
96 | return QString(); | 96 | return QString(); |
97 | } | 97 | } |
98 | 98 | ||
99 | bool GPRSRun::handlesInterface( const QString & S ) { | 99 | bool GPRSRun::handlesInterface( const QString & S ) { |
100 | return Pat.match( S ) >= 0; | 100 | return Pat.match( S ) >= 0; |
101 | } | 101 | } |
102 | 102 | ||
103 | bool GPRSRun::handlesInterface( InterfaceInfo * I ) { | 103 | bool GPRSRun::handlesInterface( InterfaceInfo * I ) { |
104 | return handlesInterface( I->Name ); | 104 | return handlesInterface( I->Name ); |
105 | } | 105 | } |
diff --git a/noncore/settings/networksettings2/network/networkrun.cpp b/noncore/settings/networksettings2/network/networkrun.cpp index c17aa7f..2c93d9d 100644 --- a/noncore/settings/networksettings2/network/networkrun.cpp +++ b/noncore/settings/networksettings2/network/networkrun.cpp | |||
@@ -1,51 +1,50 @@ | |||
1 | #include <system.h> | 1 | #include <system.h> |
2 | #include <netnode.h> | 2 | #include <netnode.h> |
3 | #include <resources.h> | 3 | #include <resources.h> |
4 | #include "networkrun.h" | 4 | #include "networkrun.h" |
5 | 5 | ||
6 | State_t NetworkRun::detectState( void ) { | 6 | State_t NetworkRun::detectState( void ) { |
7 | InterfaceInfo * II = nodeCollection()->assignedInterface(); | 7 | InterfaceInfo * II = nodeCollection()->assignedInterface(); |
8 | 8 | ||
9 | Log(( "Interface %p : %d\n", II, (II) ? II->IsUp : 0 )); | 9 | Log(( "Interface %p : %d\n", II, (II) ? II->IsUp : 0 )); |
10 | if( II && II->IsUp ) { | 10 | if( II && II->IsUp ) { |
11 | // device has assigned interface | 11 | // device has assigned interface |
12 | return IsUp; | 12 | return IsUp; |
13 | } | 13 | } |
14 | 14 | ||
15 | // had no interface or interface is no longer up -> release | 15 | // had no interface or interface is no longer up -> release |
16 | nodeCollection()->assignInterface( 0 ); | 16 | nodeCollection()->assignInterface( 0 ); |
17 | 17 | ||
18 | return Unknown; | 18 | return Unknown; |
19 | } | 19 | } |
20 | 20 | ||
21 | QString NetworkRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 21 | QString NetworkRun::setMyState( NodeCollection * NC, Action_t A, bool ) { |
22 | // we handle UP and DOWN | 22 | // we handle UP and DOWN |
23 | InterfaceInfo * II = NC->assignedInterface(); | 23 | InterfaceInfo * II = NC->assignedInterface(); |
24 | 24 | ||
25 | if( ! II ) { | ||
26 | Log(( "no interface assigned." )); | ||
27 | return QString(); | ||
28 | } | ||
29 | |||
30 | QStringList SL; | ||
31 | |||
25 | if( A == Up ) { | 32 | if( A == Up ) { |
26 | // we can bring UP if lower level is available | 33 | // we can bring UP if lower level is available |
27 | QStringList SL; | 34 | SL << "ifup"; |
28 | SL << "ifup" | 35 | } else if( A == Down ) { |
29 | << QString().sprintf( "%s=%s-c%d-allowed", | 36 | SL << "ifdown"; |
37 | } else { | ||
38 | return QString(); | ||
39 | } | ||
40 | |||
41 | SL << QString().sprintf( "%s=%s-c%d-allowed", | ||
30 | II->Name.latin1(), II->Name.latin1(), | 42 | II->Name.latin1(), II->Name.latin1(), |
31 | nodeCollection()->number() ); | 43 | nodeCollection()->number() ); |
32 | if( ! NSResources->system().runAsRoot( SL ) ) { | 44 | |
33 | return QString("Cannot call %1").arg(SL.join(" ")); | 45 | if( ! NSResources->system().runAsRoot( SL ) ) { |
34 | } | 46 | return QString("Cannot call %1").arg(SL.join(" ")); |
35 | return QString(); | 47 | } |
36 | } | 48 | |
37 | |||
38 | if( A == Down ) { | ||
39 | QStringList SL; | ||
40 | if( II ) { | ||
41 | SL << "ifdown" | ||
42 | << II->Name.latin1(); | ||
43 | if( ! NSResources->system().runAsRoot( SL ) ) { | ||
44 | return QString( "Cannot call %1" ).arg( SL.join( " " )); | ||
45 | } | ||
46 | } else { | ||
47 | Log(( "no interface assigned." )); | ||
48 | } | ||
49 | } | ||
50 | return QString(); | 49 | return QString(); |
51 | } | 50 | } |
diff --git a/noncore/settings/networksettings2/networksettings.cpp b/noncore/settings/networksettings2/networksettings.cpp index 9680a96..78b6cce 100644 --- a/noncore/settings/networksettings2/networksettings.cpp +++ b/noncore/settings/networksettings2/networksettings.cpp | |||
@@ -88,51 +88,49 @@ NetworkSettings::NetworkSettings( QWidget *parent, | |||
88 | connect( &(NSResources->system()), | 88 | connect( &(NSResources->system()), |
89 | SIGNAL( stdoutLine(const QString &) ), | 89 | SIGNAL( stdoutLine(const QString &) ), |
90 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); | 90 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); |
91 | 91 | ||
92 | connect( &(NSResources->system()), | 92 | connect( &(NSResources->system()), |
93 | SIGNAL( stderrLine(const QString &) ), | 93 | SIGNAL( stderrLine(const QString &) ), |
94 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); | 94 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); |
95 | 95 | ||
96 | connect( &(NSResources->system()), | 96 | connect( &(NSResources->system()), |
97 | SIGNAL( processEvent(const QString &) ), | 97 | SIGNAL( processEvent(const QString &) ), |
98 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); | 98 | this, SLOT( SLOT_CmdMessage(const QString &) ) ); |
99 | 99 | ||
100 | UpdateTimer->start( 5000 ); | 100 | UpdateTimer->start( 5000 ); |
101 | connect( UpdateTimer, SIGNAL( timeout() ), | 101 | connect( UpdateTimer, SIGNAL( timeout() ), |
102 | this, SLOT( SLOT_RefreshStates() ) ); | 102 | this, SLOT( SLOT_RefreshStates() ) ); |
103 | 103 | ||
104 | /* Add QCopChannel */ | 104 | /* Add QCopChannel */ |
105 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), | 105 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), |
106 | this, SLOT(SLOT_QCopMessage(const QCString&,const QByteArray&)) ); | 106 | this, SLOT(SLOT_QCopMessage(const QCString&,const QByteArray&)) ); |
107 | } | 107 | } |
108 | 108 | ||
109 | NetworkSettings::~NetworkSettings() { | 109 | NetworkSettings::~NetworkSettings() { |
110 | QString S; | 110 | QString S; |
111 | 111 | ||
112 | owarn << "Dispose NS" << oendl; | ||
113 | if( NSD.isModified() ) { | 112 | if( NSD.isModified() ) { |
114 | owarn << "Modified" << oendl; | ||
115 | S = NSD.saveSettings(); | 113 | S = NSD.saveSettings(); |
116 | if( ! S.isEmpty() ) { | 114 | if( ! S.isEmpty() ) { |
117 | S.insert( 0, "<p>" ); | 115 | S.insert( 0, "<p>" ); |
118 | S.append( "</p>" ); | 116 | S.append( "</p>" ); |
119 | // problem saving | 117 | // problem saving |
120 | QMessageBox::warning( | 118 | QMessageBox::warning( |
121 | 0, | 119 | 0, |
122 | tr( "Saving setup" ), S ); | 120 | tr( "Saving setup" ), S ); |
123 | } | 121 | } |
124 | 122 | ||
125 | SLOT_GenerateConfig(); | 123 | SLOT_GenerateConfig(); |
126 | NSD.setModified( 0 ); | 124 | NSD.setModified( 0 ); |
127 | } | 125 | } |
128 | 126 | ||
129 | } | 127 | } |
130 | 128 | ||
131 | void NetworkSettings::SLOT_CmdMessage( const QString & S ) { | 129 | void NetworkSettings::SLOT_CmdMessage( const QString & S ) { |
132 | Messages_LB->insertItem( S ); | 130 | Messages_LB->insertItem( S ); |
133 | Messages_LB->setCurrentItem( Messages_LB->count()-1 ); | 131 | Messages_LB->setCurrentItem( Messages_LB->count()-1 ); |
134 | Messages_LB->ensureCurrentVisible(); | 132 | Messages_LB->ensureCurrentVisible(); |
135 | } | 133 | } |
136 | 134 | ||
137 | void NetworkSettings::SLOT_RefreshStates( void ) { | 135 | void NetworkSettings::SLOT_RefreshStates( void ) { |
138 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); // remember | 136 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); // remember |
@@ -265,54 +263,52 @@ void NetworkSettings::SLOT_EditNode( QListBoxItem * LBI ) { | |||
265 | break; | 263 | break; |
266 | } | 264 | } |
267 | // reenable | 265 | // reenable |
268 | UpdateTimer->start( 5000 ); | 266 | UpdateTimer->start( 5000 ); |
269 | } | 267 | } |
270 | 268 | ||
271 | void NetworkSettings::SLOT_ShowNode( QListBoxItem * LBI ) { | 269 | void NetworkSettings::SLOT_ShowNode( QListBoxItem * LBI ) { |
272 | if( LBI == 0 ) | 270 | if( LBI == 0 ) |
273 | return; | 271 | return; |
274 | 272 | ||
275 | NodeCollection * NC = NSResources->findConnection( LBI->text() ); | 273 | NodeCollection * NC = NSResources->findConnection( LBI->text() ); |
276 | 274 | ||
277 | if( NC->description().isEmpty() ) { | 275 | if( NC->description().isEmpty() ) { |
278 | Description_LBL->setText( tr( "<<No description>>" ) ); | 276 | Description_LBL->setText( tr( "<<No description>>" ) ); |
279 | } else { | 277 | } else { |
280 | Description_LBL->setText( NC->description() ); | 278 | Description_LBL->setText( NC->description() ); |
281 | } | 279 | } |
282 | 280 | ||
283 | Profile_GB->setTitle( LBI->text() + " : " + NC->stateName() ); | 281 | Profile_GB->setTitle( LBI->text() + " : " + NC->stateName() ); |
284 | 282 | ||
285 | bool FrmActive = 1; | 283 | bool FrmActive = 1; |
286 | bool IsEnabled = 1; | 284 | bool IsEnabled = 1; |
287 | int leds = 0; | 285 | int leds = 0; |
288 | 286 | ||
289 | owarn << "State " << NC->state() << oendl; | ||
290 | switch( NC->state() ) { | 287 | switch( NC->state() ) { |
291 | case Disabled : // no further work | 288 | case Disabled : // no further work |
292 | IsEnabled = 0; | 289 | IsEnabled = 0; |
293 | FrmActive = 0; | 290 | FrmActive = 0; |
294 | owarn << "LEds " << leds << oendl; | ||
295 | break; | 291 | break; |
296 | case Unknown : | 292 | case Unknown : |
297 | case Unchecked : | 293 | case Unchecked : |
298 | case Unavailable : | 294 | case Unavailable : |
299 | FrmActive = 0; | 295 | FrmActive = 0; |
300 | break; | 296 | break; |
301 | case Off : | 297 | case Off : |
302 | leds = 1; | 298 | leds = 1; |
303 | break; | 299 | break; |
304 | case Available : | 300 | case Available : |
305 | leds = 2; | 301 | leds = 2; |
306 | break; | 302 | break; |
307 | case IsUp : | 303 | case IsUp : |
308 | leds = 3; | 304 | leds = 3; |
309 | break; | 305 | break; |
310 | } | 306 | } |
311 | 307 | ||
312 | Disable_TB->setOn( ! IsEnabled ); | 308 | Disable_TB->setOn( ! IsEnabled ); |
313 | LED_Frm->setEnabled( FrmActive ); | 309 | LED_Frm->setEnabled( FrmActive ); |
314 | 310 | ||
315 | for( int i = 0 ; i < leds; i ++ ) { | 311 | for( int i = 0 ; i < leds; i ++ ) { |
316 | Leds[i]->setColor( red ); | 312 | Leds[i]->setColor( red ); |
317 | Leds[i]->setOn( true ); | 313 | Leds[i]->setOn( true ); |
318 | } | 314 | } |
@@ -338,49 +334,49 @@ void NetworkSettings::updateProfileState( QListBoxItem * LBI ) { | |||
338 | } | 334 | } |
339 | } | 335 | } |
340 | 336 | ||
341 | void NetworkSettings::SLOT_GenerateConfig( void ) { | 337 | void NetworkSettings::SLOT_GenerateConfig( void ) { |
342 | QString S = NSD.generateSettings(); | 338 | QString S = NSD.generateSettings(); |
343 | if( ! S.isEmpty() ) { | 339 | if( ! S.isEmpty() ) { |
344 | S.insert( 0, "<p>" ); | 340 | S.insert( 0, "<p>" ); |
345 | S.append( "</p>" ); | 341 | S.append( "</p>" ); |
346 | QMessageBox::warning( | 342 | QMessageBox::warning( |
347 | 0, | 343 | 0, |
348 | tr( "Generate config" ), | 344 | tr( "Generate config" ), |
349 | S); | 345 | S); |
350 | } | 346 | } |
351 | } | 347 | } |
352 | 348 | ||
353 | void NetworkSettings::SLOT_Disable( bool T ) { | 349 | void NetworkSettings::SLOT_Disable( bool T ) { |
354 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); | 350 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); |
355 | QString Msg; | 351 | QString Msg; |
356 | 352 | ||
357 | if ( ! LBI ) | 353 | if ( ! LBI ) |
358 | return; | 354 | return; |
359 | 355 | ||
360 | NodeCollection * NC = NSResources->findConnection( LBI->text() ); | 356 | NodeCollection * NC = NSResources->findConnection( LBI->text() ); |
361 | 357 | ||
362 | owarn << "Prepare to disable" << oendl; | 358 | Log(( "Prepare to %sable\n", (T) ? "en" : "dis" )); |
363 | Msg = NC->setState( (T) ? Disable : Enable ); | 359 | Msg = NC->setState( (T) ? Disable : Enable ); |
364 | if( ! Msg.isEmpty() ) { | 360 | if( ! Msg.isEmpty() ) { |
365 | Msg.insert( 0, "<p>" ); | 361 | Msg.insert( 0, "<p>" ); |
366 | Msg.append( "</p>" ); | 362 | Msg.append( "</p>" ); |
367 | QMessageBox::warning( | 363 | QMessageBox::warning( |
368 | 0, | 364 | 0, |
369 | tr( "Activating profile" ), | 365 | tr( "Activating profile" ), |
370 | Msg ); | 366 | Msg ); |
371 | return; | 367 | return; |
372 | } | 368 | } |
373 | 369 | ||
374 | // reload new state | 370 | // reload new state |
375 | NC->state( true ); | 371 | NC->state( true ); |
376 | updateProfileState( LBI ); | 372 | updateProfileState( LBI ); |
377 | } | 373 | } |
378 | 374 | ||
379 | void NetworkSettings::SLOT_Up( void ) { | 375 | void NetworkSettings::SLOT_Up( void ) { |
380 | // bring more up | 376 | // bring more up |
381 | 377 | ||
382 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); | 378 | QListBoxItem * LBI = Profiles_LB->item( Profiles_LB->currentItem() ); |
383 | QString Msg; | 379 | QString Msg; |
384 | int led = -1; | 380 | int led = -1; |
385 | 381 | ||
386 | if ( ! LBI ) | 382 | if ( ! LBI ) |
diff --git a/noncore/settings/networksettings2/networksettings2/config.in b/noncore/settings/networksettings2/networksettings2/config.in index b384e18..56e971e 100644 --- a/noncore/settings/networksettings2/networksettings2/config.in +++ b/noncore/settings/networksettings2/networksettings2/config.in | |||
@@ -1,5 +1,5 @@ | |||
1 | config NS2CORE | 1 | config NS2CORE |
2 | boolean "opie-networksettings2 (TCP/IP network settings)" | 2 | boolean "opie-networksettings2 library" |
3 | default "y" | 3 | default "y" |
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2UI | 4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2UI |
5 | 5 | ||
diff --git a/noncore/settings/networksettings2/networksettings2/system.cpp b/noncore/settings/networksettings2/networksettings2/system.cpp index e642c08..f027d35 100644 --- a/noncore/settings/networksettings2/networksettings2/system.cpp +++ b/noncore/settings/networksettings2/networksettings2/system.cpp | |||
@@ -51,89 +51,89 @@ System::~System( void ) { | |||
51 | if( ProcDevNet ) | 51 | if( ProcDevNet ) |
52 | delete ProcDevNet; | 52 | delete ProcDevNet; |
53 | } | 53 | } |
54 | 54 | ||
55 | QDict<InterfaceInfo> & System::interfaces( void ) { | 55 | QDict<InterfaceInfo> & System::interfaces( void ) { |
56 | if( ProbedInterfaces.count() == 0 ) { | 56 | if( ProbedInterfaces.count() == 0 ) { |
57 | probeInterfaces(); | 57 | probeInterfaces(); |
58 | } | 58 | } |
59 | return ProbedInterfaces; | 59 | return ProbedInterfaces; |
60 | } | 60 | } |
61 | 61 | ||
62 | int System::runAsRoot( QStringList & S, MyProcess * Prc ) { | 62 | int System::runAsRoot( QStringList & S, MyProcess * Prc ) { |
63 | char * usr = getenv("USER"); | 63 | char * usr = getenv("USER"); |
64 | 64 | ||
65 | if( S.count() == 0 ) { | 65 | if( S.count() == 0 ) { |
66 | // loophole to start shell | 66 | // loophole to start shell |
67 | return 8888; | 67 | return 8888; |
68 | } | 68 | } |
69 | if( usr == 0 || strcmp( usr, "root" ) ) { | 69 | if( usr == 0 || strcmp( usr, "root" ) ) { |
70 | // unknown or non-root user -> use SUDO | 70 | // unknown or non-root user -> use SUDO |
71 | S.prepend( "sudo" ); | 71 | S.prepend( "sudo" ); |
72 | } | 72 | } |
73 | 73 | ||
74 | if( getenv( "NS2TESTMODE" ) ) { | 74 | if( getenv( "NS2TESTMODE" ) ) { |
75 | owarn << "TESTMODE !!! execute " | 75 | odebug << "TESTMODE !!! execute " |
76 | << S.join( " ") | 76 | << S.join( " ") |
77 | << oendl; | 77 | << oendl; |
78 | } else { | 78 | } else { |
79 | MyProcess * P; | 79 | MyProcess * P; |
80 | 80 | ||
81 | if( Prc ) { | 81 | if( Prc ) { |
82 | P = Prc; | 82 | P = Prc; |
83 | } else { | 83 | } else { |
84 | P = new MyProcess(); | 84 | P = new MyProcess(); |
85 | emit processEvent( tr("Command : ") + S.join( " " ) ); | 85 | emit processEvent( tr("Command : ") + S.join( " " ) ); |
86 | 86 | ||
87 | connect( P, | 87 | connect( P, |
88 | SIGNAL( stdoutLine( const QString & ) ), | 88 | SIGNAL( stdoutLine( const QString & ) ), |
89 | this, | 89 | this, |
90 | SIGNAL( stdoutLine( const QString & ) ) ); | 90 | SIGNAL( stdoutLine( const QString & ) ) ); |
91 | 91 | ||
92 | connect( P, | 92 | connect( P, |
93 | SIGNAL( stderrLine( const QString & ) ), | 93 | SIGNAL( stderrLine( const QString & ) ), |
94 | this, | 94 | this, |
95 | SIGNAL( stderrLine( const QString & ) ) ); | 95 | SIGNAL( stderrLine( const QString & ) ) ); |
96 | 96 | ||
97 | connect( P, | 97 | connect( P, |
98 | SIGNAL(processExited(MyProcess*) ), | 98 | SIGNAL(processExited(MyProcess*) ), |
99 | this, SLOT | 99 | this, SLOT |
100 | (SLOT_ProcessExited(MyProcess*) ) ); | 100 | (SLOT_ProcessExited(MyProcess*) ) ); |
101 | } | 101 | } |
102 | 102 | ||
103 | P->process() << S; | 103 | P->process() << S; |
104 | 104 | ||
105 | Log(("Executing %s\n", S.join( " " ).latin1() )); | 105 | Log(("Executing %s\n", S.join( " " ).latin1() )); |
106 | 106 | ||
107 | if( ! P->process().start( OProcess::DontCare, | 107 | if( ! P->process().start( OProcess::DontCare, |
108 | OProcess::AllOutput ) ) { | 108 | OProcess::AllOutput ) ) { |
109 | owarn << "Error starting " << S << oendl; | 109 | odebug << "Error starting " << S << oendl; |
110 | if( ! Prc ) | 110 | if( ! Prc ) |
111 | delete P; | 111 | delete P; |
112 | // error starting app | 112 | // error starting app |
113 | return 0; | 113 | return 0; |
114 | } | 114 | } |
115 | owarn << "Started " << S << oendl; | 115 | odebug << "Started " << S << oendl; |
116 | } | 116 | } |
117 | 117 | ||
118 | // all is fine | 118 | // all is fine |
119 | return 1; | 119 | return 1; |
120 | } | 120 | } |
121 | 121 | ||
122 | int System::execAsUser( QStringList & SL ) { | 122 | int System::execAsUser( QStringList & SL ) { |
123 | MyProcess * P = new MyProcess(); | 123 | MyProcess * P = new MyProcess(); |
124 | CurrentQPEUser CU = NSResources->currentUser(); | 124 | CurrentQPEUser CU = NSResources->currentUser(); |
125 | char * usr = getenv("USER"); | 125 | char * usr = getenv("USER"); |
126 | 126 | ||
127 | if( strcmp( usr, "root" ) == 0 ) { | 127 | if( strcmp( usr, "root" ) == 0 ) { |
128 | // find user running qpe | 128 | // find user running qpe |
129 | if( CU.UserName.isEmpty() ) { | 129 | if( CU.UserName.isEmpty() ) { |
130 | // if we come here, the exec was not successfull | 130 | // if we come here, the exec was not successfull |
131 | Log(("User not known \n" )); | 131 | Log(("User not known \n" )); |
132 | return 0; | 132 | return 0; |
133 | } | 133 | } |
134 | } | 134 | } |
135 | 135 | ||
136 | // now we are ready to exec the requested command | 136 | // now we are ready to exec the requested command |
137 | setuid( CU.Uid ); | 137 | setuid( CU.Uid ); |
138 | setgid( CU.Gid ); | 138 | setgid( CU.Gid ); |
139 | 139 | ||
@@ -249,61 +249,61 @@ void System::refreshStatistics( InterfaceInfo & I ) { | |||
249 | } | 249 | } |
250 | 250 | ||
251 | // | 251 | // |
252 | // THIS UPDATES THE LIST -> INTERFACES ARE NOT DELETED BUT | 252 | // THIS UPDATES THE LIST -> INTERFACES ARE NOT DELETED BUT |
253 | // FLAGGED AS ! 'IsUp' IF NO LONGER PRESENT | 253 | // FLAGGED AS ! 'IsUp' IF NO LONGER PRESENT |
254 | // | 254 | // |
255 | 255 | ||
256 | void System::probeInterfaces( void ) { | 256 | void System::probeInterfaces( void ) { |
257 | 257 | ||
258 | // probe interfaces | 258 | // probe interfaces |
259 | int sockfd; | 259 | int sockfd; |
260 | // get list of all interfaces | 260 | // get list of all interfaces |
261 | struct ifreq ifrs; | 261 | struct ifreq ifrs; |
262 | InterfaceInfo * IFI; | 262 | InterfaceInfo * IFI; |
263 | 263 | ||
264 | // flag all as 'down' | 264 | // flag all as 'down' |
265 | for( QDictIterator<InterfaceInfo> it( ProbedInterfaces ); | 265 | for( QDictIterator<InterfaceInfo> it( ProbedInterfaces ); |
266 | it.current(); | 266 | it.current(); |
267 | ++it ) { | 267 | ++it ) { |
268 | it.current()->IsUp = 0; | 268 | it.current()->IsUp = 0; |
269 | } | 269 | } |
270 | 270 | ||
271 | sockfd = socket(PF_INET, SOCK_DGRAM, 0); | 271 | sockfd = socket(PF_INET, SOCK_DGRAM, 0); |
272 | if(sockfd == -1) { | 272 | if(sockfd == -1) { |
273 | owarn << "Cannot open INET socket " | 273 | odebug << "Cannot open INET socket " |
274 | << errno | 274 | << errno |
275 | << " " | 275 | << " " |
276 | << strerror( errno ) | 276 | << strerror( errno ) |
277 | << oendl; | 277 | << oendl; |
278 | return; | 278 | return; |
279 | } | 279 | } |
280 | 280 | ||
281 | // read interfaces from /proc/dev/net | 281 | // read interfaces from /proc/dev/net |
282 | // SIOCGIFCONF does not return ALL interfaces ???!? | 282 | // SIOCGIFCONF does not return ALL interfaces ???!? |
283 | ProcDevNet = new QFile(PROCNETDEV); | 283 | ProcDevNet = new QFile(PROCNETDEV); |
284 | if( ! ProcDevNet->open(IO_ReadOnly) ) { | 284 | if( ! ProcDevNet->open(IO_ReadOnly) ) { |
285 | owarn << "Cannot open " | 285 | odebug << "Cannot open " |
286 | << PROCNETDEV | 286 | << PROCNETDEV |
287 | << " " | 287 | << " " |
288 | << errno | 288 | << errno |
289 | << " " | 289 | << " " |
290 | << strerror( errno ) | 290 | << strerror( errno ) |
291 | << oendl; | 291 | << oendl; |
292 | delete ProcDevNet; | 292 | delete ProcDevNet; |
293 | ProcDevNet =0; | 293 | ProcDevNet =0; |
294 | ::close( sockfd ); | 294 | ::close( sockfd ); |
295 | return; | 295 | return; |
296 | } | 296 | } |
297 | 297 | ||
298 | QString line; | 298 | QString line; |
299 | QString NicName; | 299 | QString NicName; |
300 | QTextStream procTs(ProcDevNet); | 300 | QTextStream procTs(ProcDevNet); |
301 | int loc = -1; | 301 | int loc = -1; |
302 | 302 | ||
303 | procTs.readLine(); // eat a line | 303 | procTs.readLine(); // eat a line |
304 | procTs.readLine(); // eat a line | 304 | procTs.readLine(); // eat a line |
305 | while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { | 305 | while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { |
306 | if((loc = line.find(":")) == -1) { | 306 | if((loc = line.find(":")) == -1) { |
307 | continue; | 307 | continue; |
308 | } | 308 | } |
309 | 309 | ||
@@ -488,100 +488,100 @@ void VLog( char * Format, ... ) { | |||
488 | } | 488 | } |
489 | 489 | ||
490 | if( (unsigned long)logf > 1 ) { | 490 | if( (unsigned long)logf > 1 ) { |
491 | vfprintf( logf, Format, l ); | 491 | vfprintf( logf, Format, l ); |
492 | } | 492 | } |
493 | va_end( l ); | 493 | va_end( l ); |
494 | fflush( logf ); | 494 | fflush( logf ); |
495 | 495 | ||
496 | } | 496 | } |
497 | 497 | ||
498 | void LogClose( void ) { | 498 | void LogClose( void ) { |
499 | if( (long)logf > 1 ) { | 499 | if( (long)logf > 1 ) { |
500 | fprintf( logf, "____ CLOSE LOGFILE ____\n"); | 500 | fprintf( logf, "____ CLOSE LOGFILE ____\n"); |
501 | if( logf != stderr ) { | 501 | if( logf != stderr ) { |
502 | fclose( logf ); | 502 | fclose( logf ); |
503 | } | 503 | } |
504 | logf = 0; | 504 | logf = 0; |
505 | } | 505 | } |
506 | } | 506 | } |
507 | 507 | ||
508 | QString removeSpaces( const QString & X ) { | 508 | QString removeSpaces( const QString & X ) { |
509 | QString Y; | 509 | QString Y; |
510 | Y = X.simplifyWhiteSpace(); | 510 | Y = X.simplifyWhiteSpace(); |
511 | Y.replace( QRegExp(" "), "_" ); | 511 | Y.replace( QRegExp(" "), "_" ); |
512 | owarn << X << " **" << Y << "**" << oendl; | 512 | odebug << X << " **" << Y << "**" << oendl; |
513 | return Y; | 513 | return Y; |
514 | } | 514 | } |
515 | 515 | ||
516 | // | 516 | // |
517 | // | 517 | // |
518 | // | 518 | // |
519 | // | 519 | // |
520 | // | 520 | // |
521 | 521 | ||
522 | MyProcess::MyProcess() : QObject(), StdoutBuffer(), StderrBuffer() { | 522 | MyProcess::MyProcess() : QObject(), StdoutBuffer(), StderrBuffer() { |
523 | P = new OProcess(); | 523 | P = new OProcess(); |
524 | connect( P, | 524 | connect( P, |
525 | SIGNAL( receivedStdout(Opie::Core::OProcess*, char*, int ) ), | 525 | SIGNAL( receivedStdout(Opie::Core::OProcess*, char*, int ) ), |
526 | this, | 526 | this, |
527 | SLOT( SLOT_Stdout(Opie::Core::OProcess*,char*,int) ) ); | 527 | SLOT( SLOT_Stdout(Opie::Core::OProcess*,char*,int) ) ); |
528 | 528 | ||
529 | connect( P, | 529 | connect( P, |
530 | SIGNAL( receivedStderr(Opie::Core::OProcess*, char*, int ) ), | 530 | SIGNAL( receivedStderr(Opie::Core::OProcess*, char*, int ) ), |
531 | this, | 531 | this, |
532 | SLOT( SLOT_Stderr(Opie::Core::OProcess*,char*,int) ) ); | 532 | SLOT( SLOT_Stderr(Opie::Core::OProcess*,char*,int) ) ); |
533 | connect( P, | 533 | connect( P, |
534 | SIGNAL( processExited(Opie::Core::OProcess*) ), | 534 | SIGNAL( processExited(Opie::Core::OProcess*) ), |
535 | this, | 535 | this, |
536 | SLOT( SLOT_ProcessExited(Opie::Core::OProcess*) ) ); | 536 | SLOT( SLOT_ProcessExited(Opie::Core::OProcess*) ) ); |
537 | } | 537 | } |
538 | 538 | ||
539 | MyProcess::~MyProcess() { | 539 | MyProcess::~MyProcess() { |
540 | delete P; | 540 | delete P; |
541 | } | 541 | } |
542 | 542 | ||
543 | void MyProcess::SLOT_Stdout( Opie::Core::OProcess * , char * Buf, int len ) { | 543 | void MyProcess::SLOT_Stdout( Opie::Core::OProcess * , char * Buf, int len ) { |
544 | char * LB = (char *)alloca( len + 1 ); | 544 | char * LB = (char *)alloca( len + 1 ); |
545 | memcpy( LB, Buf, len ); | 545 | memcpy( LB, Buf, len ); |
546 | LB[len] = '\0'; | 546 | LB[len] = '\0'; |
547 | 547 | ||
548 | // now input is zero terminated | 548 | // now input is zero terminated |
549 | StdoutBuffer += LB; | 549 | StdoutBuffer += LB; |
550 | 550 | ||
551 | owarn << "Received " << len << " bytes on stdout" << oendl; | 551 | odebug << "Received " << len << " bytes on stdout" << oendl; |
552 | // see if we have some lines (allow empty lines) | 552 | // see if we have some lines (allow empty lines) |
553 | QStringList SL = QStringList::split( "\n", StdoutBuffer, TRUE ); | 553 | QStringList SL = QStringList::split( "\n", StdoutBuffer, TRUE ); |
554 | 554 | ||
555 | for( unsigned int i = 0; i < SL.count()-1; i ++ ) { | 555 | for( unsigned int i = 0; i < SL.count()-1; i ++ ) { |
556 | Log(( "Stdout : \"%s\"\n", SL[i].latin1() ) ); | 556 | Log(( "Stdout : \"%s\"\n", SL[i].latin1() ) ); |
557 | emit stdoutLine( SL[i] ); | 557 | emit stdoutLine( SL[i] ); |
558 | } | 558 | } |
559 | 559 | ||
560 | // last line is rest | 560 | // last line is rest |
561 | StdoutBuffer = SL[ SL.count()-1 ]; | 561 | StdoutBuffer = SL[ SL.count()-1 ]; |
562 | } | 562 | } |
563 | 563 | ||
564 | void MyProcess::SLOT_Stderr( Opie::Core::OProcess * , char * Buf, int len ) { | 564 | void MyProcess::SLOT_Stderr( Opie::Core::OProcess * , char * Buf, int len ) { |
565 | char * LB = (char *)alloca( len + 1 ); | 565 | char * LB = (char *)alloca( len + 1 ); |
566 | memcpy( LB, Buf, len ); | 566 | memcpy( LB, Buf, len ); |
567 | LB[len] = '\0'; | 567 | LB[len] = '\0'; |
568 | 568 | ||
569 | // now input is zero terminated | 569 | // now input is zero terminated |
570 | StderrBuffer += LB; | 570 | StderrBuffer += LB; |
571 | 571 | ||
572 | owarn << "Received " << len << " bytes on stderr" << oendl; | 572 | odebug << "Received " << len << " bytes on stderr" << oendl; |
573 | // see if we have some lines (allow empty lines) | 573 | // see if we have some lines (allow empty lines) |
574 | QStringList SL = QStringList::split( "\n", StderrBuffer, TRUE ); | 574 | QStringList SL = QStringList::split( "\n", StderrBuffer, TRUE ); |
575 | 575 | ||
576 | for( unsigned int i = 0; i < SL.count()-1; i ++ ) { | 576 | for( unsigned int i = 0; i < SL.count()-1; i ++ ) { |
577 | Log(( "Stderr : \"%s\"\n", SL[i].latin1() ) ); | 577 | Log(( "Stderr : \"%s\"\n", SL[i].latin1() ) ); |
578 | emit stderrLine( SL[i] ); | 578 | emit stderrLine( SL[i] ); |
579 | } | 579 | } |
580 | 580 | ||
581 | // last line is rest | 581 | // last line is rest |
582 | StderrBuffer = SL[ SL.count()-1 ]; | 582 | StderrBuffer = SL[ SL.count()-1 ]; |
583 | } | 583 | } |
584 | 584 | ||
585 | void MyProcess::SLOT_ProcessExited( Opie::Core::OProcess * ) { | 585 | void MyProcess::SLOT_ProcessExited( Opie::Core::OProcess * ) { |
586 | emit processExited( this ); | 586 | emit processExited( this ); |
587 | } | 587 | } |
diff --git a/noncore/settings/networksettings2/networksettings2/systemfile.cpp b/noncore/settings/networksettings2/networksettings2/systemfile.cpp index 8deef94..1b1988e 100644 --- a/noncore/settings/networksettings2/networksettings2/systemfile.cpp +++ b/noncore/settings/networksettings2/networksettings2/systemfile.cpp | |||
@@ -78,86 +78,86 @@ SystemFile::SystemFile( const QString & N, bool KDI ){ | |||
78 | hasPostDeviceSection = 0; | 78 | hasPostDeviceSection = 0; |
79 | } | 79 | } |
80 | 80 | ||
81 | SystemFile::~SystemFile( void ) { | 81 | SystemFile::~SystemFile( void ) { |
82 | close(); | 82 | close(); |
83 | } | 83 | } |
84 | 84 | ||
85 | bool SystemFile::open( void ) { | 85 | bool SystemFile::open( void ) { |
86 | QString Prefix = getenv( "NS2OUTPUTTO" ); | 86 | QString Prefix = getenv( "NS2OUTPUTTO" ); |
87 | 87 | ||
88 | if( Prefix != "stderr" /* && Name != "interfaces" */ ) { | 88 | if( Prefix != "stderr" /* && Name != "interfaces" */ ) { |
89 | // generate files where the need to be | 89 | // generate files where the need to be |
90 | if( F ) { | 90 | if( F ) { |
91 | F->close(); | 91 | F->close(); |
92 | delete F; | 92 | delete F; |
93 | } | 93 | } |
94 | 94 | ||
95 | F = new QFile( Prefix + Path + ((InAppend)?"":"bup") ); | 95 | F = new QFile( Prefix + Path + ((InAppend)?"":"bup") ); |
96 | Log(( "Open systemfile %s\n", F->name().latin1() )); | 96 | Log(( "Open systemfile %s\n", F->name().latin1() )); |
97 | if( ! F->open( ((InAppend)?IO_Append : 0 ) | IO_WriteOnly ) ) { | 97 | if( ! F->open( ((InAppend)?IO_Append : 0 ) | IO_WriteOnly ) ) { |
98 | return 0; | 98 | return 0; |
99 | } | 99 | } |
100 | } else { | 100 | } else { |
101 | if( ! F ) { | 101 | if( ! F ) { |
102 | owarn << "!!!!!!!!!!!!!!!!!! " << oendl; | 102 | odebug << "!!!!!!!!!!!!!!!!!! " << oendl; |
103 | owarn << "!!!! TESTMODE !!!!" << oendl; | 103 | odebug << "!!!! TESTMODE !!!!" << oendl; |
104 | owarn << "!!!!!!!!!!!!!!!!!! " << oendl; | 104 | odebug << "!!!!!!!!!!!!!!!!!! " << oendl; |
105 | owarn << "!!!!" << oendl; | 105 | odebug << "!!!!" << oendl; |
106 | owarn << "!!!! GENERATE " << Path << oendl; | 106 | odebug << "!!!! GENERATE " << Path << oendl; |
107 | if( InAppend ) { | 107 | if( InAppend ) { |
108 | owarn << "!!!! In APPEND mode" << oendl; | 108 | odebug << "!!!! In APPEND mode" << oendl; |
109 | } | 109 | } |
110 | owarn << "!!!!" << oendl; | 110 | odebug << "!!!!" << oendl; |
111 | owarn << "!!!!!!!!!!!!!!!!!!" << oendl; | 111 | odebug << "!!!!!!!!!!!!!!!!!!" << oendl; |
112 | 112 | ||
113 | F = new QFile(); | 113 | F = new QFile(); |
114 | F->open( IO_WriteOnly, stderr ); | 114 | F->open( IO_WriteOnly, stderr ); |
115 | } | 115 | } |
116 | } | 116 | } |
117 | setDevice( F ); | 117 | setDevice( F ); |
118 | return 1; | 118 | return 1; |
119 | } | 119 | } |
120 | 120 | ||
121 | bool SystemFile::close( void ) { | 121 | bool SystemFile::close( void ) { |
122 | if( ! F || ! F->isOpen() ) { | 122 | if( ! F || ! F->isOpen() ) { |
123 | return 1 ; | 123 | return 1 ; |
124 | } | 124 | } |
125 | 125 | ||
126 | QString Prefix = getenv( "NS2OUTPUTTO" ); | 126 | QString Prefix = getenv( "NS2OUTPUTTO" ); |
127 | 127 | ||
128 | if( Prefix == "stderr" ) { | 128 | if( Prefix == "stderr" ) { |
129 | return 1; | 129 | return 1; |
130 | } | 130 | } |
131 | 131 | ||
132 | QString OldP = Prefix + Path + "bup"; | 132 | QString OldP = Prefix + Path + "bup"; |
133 | 133 | ||
134 | F->close(); | 134 | F->close(); |
135 | delete F; | 135 | delete F; |
136 | F = 0; | 136 | F = 0; |
137 | 137 | ||
138 | if( ! InAppend ) { | 138 | if( ! InAppend ) { |
139 | owarn << "Rename " << OldP << " to " << Path << oendl; | 139 | odebug << "Rename " << OldP << " to " << Path << oendl; |
140 | return ( rename( OldP.latin1(), Path.latin1() ) >= 0 ); | 140 | return ( rename( OldP.latin1(), Path.latin1() ) >= 0 ); |
141 | } | 141 | } |
142 | return 1; | 142 | return 1; |
143 | } | 143 | } |
144 | 144 | ||
145 | bool SystemFile::preSection( void ) { | 145 | bool SystemFile::preSection( void ) { |
146 | if( hasPreSection ) { | 146 | if( hasPreSection ) { |
147 | QFile Fl( TemplDir + Name + "/presection" ); | 147 | QFile Fl( TemplDir + Name + "/presection" ); |
148 | if( ! Fl.open( IO_ReadOnly ) ) | 148 | if( ! Fl.open( IO_ReadOnly ) ) |
149 | return 0; // error | 149 | return 0; // error |
150 | // copy file to this file | 150 | // copy file to this file |
151 | F->writeBlock( Fl.readAll() ); | 151 | F->writeBlock( Fl.readAll() ); |
152 | } | 152 | } |
153 | return 1; | 153 | return 1; |
154 | } | 154 | } |
155 | 155 | ||
156 | bool SystemFile::postSection( void ) { | 156 | bool SystemFile::postSection( void ) { |
157 | if( hasPostSection ) { | 157 | if( hasPostSection ) { |
158 | QFile Fl( TemplDir + Name + "/postsection" ); | 158 | QFile Fl( TemplDir + Name + "/postsection" ); |
159 | if( ! Fl.open( IO_ReadOnly ) ) | 159 | if( ! Fl.open( IO_ReadOnly ) ) |
160 | return 0; // error | 160 | return 0; // error |
161 | // copy file to this file | 161 | // copy file to this file |
162 | F->writeBlock( Fl.readAll() ); | 162 | F->writeBlock( Fl.readAll() ); |
163 | } | 163 | } |
diff --git a/noncore/settings/networksettings2/opie-networksettings2.postinst b/noncore/settings/networksettings2/opie-networksettings2.postinst index ce43274..d1d98ac 100755 --- a/noncore/settings/networksettings2/opie-networksettings2.postinst +++ b/noncore/settings/networksettings2/opie-networksettings2.postinst | |||
@@ -1,9 +1,9 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | 2 | ||
3 | QTPB=/opt/QtPalmtop/bin | 3 | QTPB=/opt/QtPalmtop/bin |
4 | 4 | ||
5 | [ ! -L ${QTPB}/networksettings2-request ] && ln -sf ${QTPB}/networksettings2 ${QTPB}/networksettings2-request | 5 | [ ! -L ${QTPB}/networksettings2-request ] && ln -sf ${QTPB}/networksettings2 ${QTPB}/networksettings2-request |
6 | 6 | ||
7 | qcop QPE/TaskBar "reloadApps()" | 7 | ${QTPB}/qcop QPE/TaskBar "reloadApps()" |
8 | 8 | ||
9 | exit 0 | 9 | exit 0 |
diff --git a/noncore/settings/networksettings2/opietooth2/OTDevice.cpp b/noncore/settings/networksettings2/opietooth2/OTDevice.cpp index 62f17a0..c6f7d5e 100644 --- a/noncore/settings/networksettings2/opietooth2/OTDevice.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTDevice.cpp | |||
@@ -82,49 +82,49 @@ bool OTDevice::attach(){ | |||
82 | // we need to start this in 'dontcare' mode because | 82 | // we need to start this in 'dontcare' mode because |
83 | // if qpe exists we want the hci to keep running | 83 | // if qpe exists we want the hci to keep running |
84 | if( ! m_hciattach->start( OProcess::DontCare, | 84 | if( ! m_hciattach->start( OProcess::DontCare, |
85 | OProcess::AllOutput | 85 | OProcess::AllOutput |
86 | ) ){ | 86 | ) ){ |
87 | emit error( tr( "Could not start hciattach" ) ); | 87 | emit error( tr( "Could not start hciattach" ) ); |
88 | delete m_hciattach; | 88 | delete m_hciattach; |
89 | m_hciattach = 0; | 89 | m_hciattach = 0; |
90 | return FALSE; | 90 | return FALSE; |
91 | } | 91 | } |
92 | } | 92 | } |
93 | 93 | ||
94 | return TRUE; | 94 | return TRUE; |
95 | } | 95 | } |
96 | 96 | ||
97 | bool OTDevice::detach(){ | 97 | bool OTDevice::detach(){ |
98 | 98 | ||
99 | if( needsAttach() && m_hciattachPid ) { | 99 | if( needsAttach() && m_hciattachPid ) { |
100 | if( m_hciattach ) { | 100 | if( m_hciattach ) { |
101 | delete m_hciattach; | 101 | delete m_hciattach; |
102 | m_hciattach = 0; | 102 | m_hciattach = 0; |
103 | } | 103 | } |
104 | 104 | ||
105 | if( kill( m_hciattachPid, 9) < 0 ) { | 105 | if( kill( m_hciattachPid, 9) < 0 ) { |
106 | owarn << "could not stop " << errno << oendl; | 106 | odebug << "could not stop " << errno << oendl; |
107 | emit error( tr( "Could not stop process" ) ); | 107 | emit error( tr( "Could not stop process" ) ); |
108 | return FALSE; | 108 | return FALSE; |
109 | } | 109 | } |
110 | m_hciattachPid = 0; | 110 | m_hciattachPid = 0; |
111 | emit isEnabled( m_deviceNr, 0 ); | 111 | emit isEnabled( m_deviceNr, 0 ); |
112 | m_deviceNr = -1; | 112 | m_deviceNr = -1; |
113 | } | 113 | } |
114 | 114 | ||
115 | return TRUE; | 115 | return TRUE; |
116 | } | 116 | } |
117 | 117 | ||
118 | bool OTDevice::isAttached()const{ | 118 | bool OTDevice::isAttached()const{ |
119 | return ! needsAttach() || m_hciattachPid != 0; | 119 | return ! needsAttach() || m_hciattachPid != 0; |
120 | } | 120 | } |
121 | 121 | ||
122 | bool OTDevice::checkAttach(){ | 122 | bool OTDevice::checkAttach(){ |
123 | if( ! needsAttach() ) { | 123 | if( ! needsAttach() ) { |
124 | m_deviceNr = 0; | 124 | m_deviceNr = 0; |
125 | emit isEnabled( 0, 1 ); | 125 | emit isEnabled( 0, 1 ); |
126 | return TRUE; | 126 | return TRUE; |
127 | } | 127 | } |
128 | 128 | ||
129 | if( m_hciattachPid ) { | 129 | if( m_hciattachPid ) { |
130 | QString S; | 130 | QString S; |
@@ -147,92 +147,92 @@ bool OTDevice::checkAttach(){ | |||
147 | return m_hciattachPid != 0; | 147 | return m_hciattachPid != 0; |
148 | } | 148 | } |
149 | 149 | ||
150 | void OTDevice::slotStdOut(OProcess* proc, char* , int ) { | 150 | void OTDevice::slotStdOut(OProcess* proc, char* , int ) { |
151 | if( proc == m_hciattach ) { | 151 | if( proc == m_hciattach ) { |
152 | m_hciattach->detach(); | 152 | m_hciattach->detach(); |
153 | 153 | ||
154 | // system enabled | 154 | // system enabled |
155 | // currently no way to figure out which attach produce which | 155 | // currently no way to figure out which attach produce which |
156 | // hci | 156 | // hci |
157 | if( m_deviceNr == -1 ) { | 157 | if( m_deviceNr == -1 ) { |
158 | m_deviceNr = 0; | 158 | m_deviceNr = 0; |
159 | emit isEnabled( m_deviceNr, 1 ); | 159 | emit isEnabled( m_deviceNr, 1 ); |
160 | } | 160 | } |
161 | } | 161 | } |
162 | } | 162 | } |
163 | 163 | ||
164 | void OTDevice::slotStdErr(OProcess* proc, char* chars, int len) { | 164 | void OTDevice::slotStdErr(OProcess* proc, char* chars, int len) { |
165 | 165 | ||
166 | if(proc == m_hciattach && len >= 1 ){ | 166 | if(proc == m_hciattach && len >= 1 ){ |
167 | // collect output | 167 | // collect output |
168 | QCString string( chars, len+1 ); // \0 == +1 | 168 | QCString string( chars, len+1 ); // \0 == +1 |
169 | QString m_output; | 169 | QString m_output; |
170 | m_output.append( string.data() ); | 170 | m_output.append( string.data() ); |
171 | owarn << m_output << oendl; | 171 | odebug << m_output << oendl; |
172 | } | 172 | } |
173 | } | 173 | } |
174 | 174 | ||
175 | pid_t OTDevice::getPidOfHCIAttach( void ) { | 175 | pid_t OTDevice::getPidOfHCIAttach( void ) { |
176 | 176 | ||
177 | if( needsAttach() ) { | 177 | if( needsAttach() ) { |
178 | // not yet attached -> perhaps now ? | 178 | // not yet attached -> perhaps now ? |
179 | // load /proc dir and check if command name contains hciattach | 179 | // load /proc dir and check if command name contains hciattach |
180 | QRegExp R("[0-9]+"); | 180 | QRegExp R("[0-9]+"); |
181 | QDir ProcDir( "/proc" ); | 181 | QDir ProcDir( "/proc" ); |
182 | QFileInfo FI; | 182 | QFileInfo FI; |
183 | QStringList EL = ProcDir.entryList( QDir::Dirs ); | 183 | QStringList EL = ProcDir.entryList( QDir::Dirs ); |
184 | 184 | ||
185 | // print it out | 185 | // print it out |
186 | for ( QStringList::Iterator it = EL.begin(); | 186 | for ( QStringList::Iterator it = EL.begin(); |
187 | it != EL.end(); | 187 | it != EL.end(); |
188 | ++it ) { | 188 | ++it ) { |
189 | if( R.match( (*it) ) >= 0 ) { | 189 | if( R.match( (*it) ) >= 0 ) { |
190 | // is pid | 190 | // is pid |
191 | 191 | ||
192 | // get command being executed | 192 | // get command being executed |
193 | FI.setFile( ProcDir.path()+"/"+ (*it) + "/exe" ); | 193 | FI.setFile( ProcDir.path()+"/"+ (*it) + "/exe" ); |
194 | 194 | ||
195 | // get the link | 195 | // get the link |
196 | if( FI.readLink().right( 9 ) == "hciattach" ) { | 196 | if( FI.readLink().right( 9 ) == "hciattach" ) { |
197 | // this is hci attach process | 197 | // this is hci attach process |
198 | 198 | ||
199 | return (*it).toULong(); | 199 | return (*it).toULong(); |
200 | break; | 200 | break; |
201 | } | 201 | } |
202 | } | 202 | } |
203 | } | 203 | } |
204 | } | 204 | } |
205 | 205 | ||
206 | return 0; | 206 | return 0; |
207 | } | 207 | } |
208 | 208 | ||
209 | void OTDevice::detectDeviceType( QString & Device, | 209 | void OTDevice::detectDeviceType( QString & Device, |
210 | QString & Mode, | 210 | QString & Mode, |
211 | unsigned long & Speed ) { | 211 | unsigned long & Speed ) { |
212 | 212 | ||
213 | // detect device type and determine parms | 213 | // detect device type and determine parms |
214 | owarn << "Detecting device" << oendl; | 214 | odebug << "Detecting device" << oendl; |
215 | switch ( ODevice::inst()->model() ) { | 215 | switch ( ODevice::inst()->model() ) { |
216 | case Model_iPAQ_H39xx: | 216 | case Model_iPAQ_H39xx: |
217 | Device = "/dev/tts/1"; | 217 | Device = "/dev/tts/1"; |
218 | Mode = "bcsp"; | 218 | Mode = "bcsp"; |
219 | Speed = 921600; | 219 | Speed = 921600; |
220 | NeedsAttach = 1; | 220 | NeedsAttach = 1; |
221 | break; | 221 | break; |
222 | 222 | ||
223 | case Model_iPAQ_H5xxx: | 223 | case Model_iPAQ_H5xxx: |
224 | Device = "/dev/tts/1"; | 224 | Device = "/dev/tts/1"; |
225 | Mode = "any"; | 225 | Mode = "any"; |
226 | Speed = 921600; | 226 | Speed = 921600; |
227 | NeedsAttach = 1; | 227 | NeedsAttach = 1; |
228 | break; | 228 | break; |
229 | 229 | ||
230 | case Model_GenuineIntel : | 230 | case Model_GenuineIntel : |
231 | Device = ""; | 231 | Device = ""; |
232 | Mode = ""; | 232 | Mode = ""; |
233 | Speed = 0; | 233 | Speed = 0; |
234 | NeedsAttach = 0; | 234 | NeedsAttach = 0; |
235 | break; | 235 | break; |
236 | 236 | ||
237 | default: | 237 | default: |
238 | Device = "/dev/ttySB0"; | 238 | Device = "/dev/ttySB0"; |
diff --git a/noncore/settings/networksettings2/opietooth2/OTDriver.cpp b/noncore/settings/networksettings2/opietooth2/OTDriver.cpp index 8bd7919..a7ee662 100644 --- a/noncore/settings/networksettings2/opietooth2/OTDriver.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTDriver.cpp | |||
@@ -129,49 +129,49 @@ static ClassMap_t MapPeripheralClass[] = { | |||
129 | 129 | ||
130 | typedef struct { | 130 | typedef struct { |
131 | int Major; | 131 | int Major; |
132 | ClassMap_t * Map; | 132 | ClassMap_t * Map; |
133 | } MainClassMap_t; | 133 | } MainClassMap_t; |
134 | 134 | ||
135 | static MainClassMap_t MainClasses[] = { | 135 | static MainClassMap_t MainClasses[] = { |
136 | { 0, MapMiscClass }, | 136 | { 0, MapMiscClass }, |
137 | { 1, MapComputerClass }, | 137 | { 1, MapComputerClass }, |
138 | { 2, MapPhoneClass }, | 138 | { 2, MapPhoneClass }, |
139 | { 3, 0 }, // special case | 139 | { 3, 0 }, // special case |
140 | { 4, MapAVClass }, | 140 | { 4, MapAVClass }, |
141 | { 5, MapPeripheralClass }, | 141 | { 5, MapPeripheralClass }, |
142 | { 6, 0 }, // special case | 142 | { 6, 0 }, // special case |
143 | { 63, MapUnclassifiedClass }, | 143 | { 63, MapUnclassifiedClass }, |
144 | { -1, 0 } | 144 | { -1, 0 } |
145 | }; | 145 | }; |
146 | 146 | ||
147 | OTDriver::OTDriver( OTGateway * _OT, struct hci_dev_info* di) : QObject( _OT ), Address() { | 147 | OTDriver::OTDriver( OTGateway * _OT, struct hci_dev_info* di) : QObject( _OT ), Address() { |
148 | OT = _OT; | 148 | OT = _OT; |
149 | IsUp = 0; | 149 | IsUp = 0; |
150 | Socket = 0; | 150 | Socket = 0; |
151 | 151 | ||
152 | init(di); | 152 | init(di); |
153 | owarn << "Driver " << devname() << oendl; | 153 | odebug << "Driver " << devname() << oendl; |
154 | 154 | ||
155 | AutoClose = new QTimer( this ); | 155 | AutoClose = new QTimer( this ); |
156 | connect( AutoClose, | 156 | connect( AutoClose, |
157 | SIGNAL( timeout() ), | 157 | SIGNAL( timeout() ), |
158 | this, | 158 | this, |
159 | SLOT( SLOT_CloseFd() ) | 159 | SLOT( SLOT_CloseFd() ) |
160 | ); | 160 | ); |
161 | } | 161 | } |
162 | 162 | ||
163 | OTDriver::~OTDriver() { | 163 | OTDriver::~OTDriver() { |
164 | closeSocket(); | 164 | closeSocket(); |
165 | SLOT_CloseFd(); | 165 | SLOT_CloseFd(); |
166 | } | 166 | } |
167 | 167 | ||
168 | void OTDriver::SLOT_CloseFd( void ){ | 168 | void OTDriver::SLOT_CloseFd( void ){ |
169 | if ( isOpen() ) { | 169 | if ( isOpen() ) { |
170 | AutoClose->stop(); | 170 | AutoClose->stop(); |
171 | ::close( fd() ); | 171 | ::close( fd() ); |
172 | setfd( -1 ); | 172 | setfd( -1 ); |
173 | } | 173 | } |
174 | } | 174 | } |
175 | 175 | ||
176 | void OTDriver::init(struct hci_dev_info* di) { | 176 | void OTDriver::init(struct hci_dev_info* di) { |
177 | 177 | ||
@@ -364,72 +364,72 @@ int OTDriver::reset() { | |||
364 | if( ioctl(fd(), HCIDEVRESET, devId()) < 0 ) { | 364 | if( ioctl(fd(), HCIDEVRESET, devId()) < 0 ) { |
365 | if( errno != EALREADY ) { | 365 | if( errno != EALREADY ) { |
366 | emit error( tr( "Reset failed for %1. %2 : %3" ). | 366 | emit error( tr( "Reset failed for %1. %2 : %3" ). |
367 | arg( devname() ). | 367 | arg( devname() ). |
368 | arg( errno ). | 368 | arg( errno ). |
369 | arg( strerror(errno) ) ); | 369 | arg( strerror(errno) ) ); |
370 | if (errno == EACCES) { | 370 | if (errno == EACCES) { |
371 | return EACCES; | 371 | return EACCES; |
372 | } | 372 | } |
373 | } | 373 | } |
374 | } | 374 | } |
375 | return 0; | 375 | return 0; |
376 | } | 376 | } |
377 | 377 | ||
378 | void OTDriver::setUp( bool M ) { | 378 | void OTDriver::setUp( bool M ) { |
379 | if( M && ! isUp() ) { | 379 | if( M && ! isUp() ) { |
380 | bringUp(); | 380 | bringUp(); |
381 | } else if( ! M && isUp() ) { | 381 | } else if( ! M && isUp() ) { |
382 | bringDown(); | 382 | bringDown(); |
383 | } | 383 | } |
384 | } | 384 | } |
385 | 385 | ||
386 | void OTDriver::bringUp() { | 386 | void OTDriver::bringUp() { |
387 | 387 | ||
388 | owarn << "bringUp : " << Dev << oendl; | 388 | odebug << "bringUp : " << Dev << oendl; |
389 | 389 | ||
390 | if( ! open() ) { | 390 | if( ! open() ) { |
391 | return; | 391 | return; |
392 | } | 392 | } |
393 | 393 | ||
394 | if (! isUp()) { | 394 | if (! isUp()) { |
395 | if( ioctl(fd(), HCIDEVUP, devId()) < 0 ) { | 395 | if( ioctl(fd(), HCIDEVUP, devId()) < 0 ) { |
396 | if( errno != EALREADY ) { | 396 | if( errno != EALREADY ) { |
397 | emit error( tr( "Cannot bring interface %1 up. %2 : %3" ). | 397 | emit error( tr( "Cannot bring interface %1 up. %2 : %3" ). |
398 | arg( devname() ). | 398 | arg( devname() ). |
399 | arg( errno ). | 399 | arg( errno ). |
400 | arg( strerror(errno) ) ); | 400 | arg( strerror(errno) ) ); |
401 | } | 401 | } |
402 | return; | 402 | return; |
403 | } | 403 | } |
404 | // have to wait a bit for the 'up' to become active | 404 | // have to wait a bit for the 'up' to become active |
405 | QTimer::singleShot( 3000, this, SLOT( reinit() ) ); | 405 | QTimer::singleShot( 3000, this, SLOT( reinit() ) ); |
406 | } | 406 | } |
407 | } | 407 | } |
408 | 408 | ||
409 | void OTDriver::bringDown() { | 409 | void OTDriver::bringDown() { |
410 | 410 | ||
411 | owarn << "bringDown : " << Dev << oendl; | 411 | odebug << "bringDown : " << Dev << oendl; |
412 | 412 | ||
413 | if( ! open() ) { | 413 | if( ! open() ) { |
414 | return; | 414 | return; |
415 | } | 415 | } |
416 | 416 | ||
417 | if ( isUp() ) { | 417 | if ( isUp() ) { |
418 | if( ioctl(fd(), HCIDEVDOWN, devId()) < 0 ) { | 418 | if( ioctl(fd(), HCIDEVDOWN, devId()) < 0 ) { |
419 | if( errno != EALREADY ) { | 419 | if( errno != EALREADY ) { |
420 | emit error( tr( "Cannot bring interface %1 down. %2 : %3" ). | 420 | emit error( tr( "Cannot bring interface %1 down. %2 : %3" ). |
421 | arg( devname() ). | 421 | arg( devname() ). |
422 | arg( errno ). | 422 | arg( errno ). |
423 | arg( strerror(errno) ) ); | 423 | arg( strerror(errno) ) ); |
424 | } | 424 | } |
425 | return; | 425 | return; |
426 | } | 426 | } |
427 | reinit(); | 427 | reinit(); |
428 | } | 428 | } |
429 | } | 429 | } |
430 | 430 | ||
431 | void OTDriver::setScanMode(bool iscan, bool pscan) { | 431 | void OTDriver::setScanMode(bool iscan, bool pscan) { |
432 | 432 | ||
433 | struct hci_dev_req dr; | 433 | struct hci_dev_req dr; |
434 | 434 | ||
435 | if( ! open() ) { | 435 | if( ! open() ) { |
@@ -640,105 +640,105 @@ void OTDriver::getClass( QString & service, | |||
640 | break; | 640 | break; |
641 | } | 641 | } |
642 | MCM ++; | 642 | MCM ++; |
643 | } | 643 | } |
644 | 644 | ||
645 | if( MCM->Major == -1 ) { | 645 | if( MCM->Major == -1 ) { |
646 | device = "Unknown (reserved) minor device class"; | 646 | device = "Unknown (reserved) minor device class"; |
647 | } | 647 | } |
648 | } | 648 | } |
649 | 649 | ||
650 | QString OTDriver::strType() { | 650 | QString OTDriver::strType() { |
651 | return QString( hci_dtypetostr(Type) ); | 651 | return QString( hci_dtypetostr(Type) ); |
652 | } | 652 | } |
653 | 653 | ||
654 | void OTDriver::setFeatures( unsigned char * _f) { | 654 | void OTDriver::setFeatures( unsigned char * _f) { |
655 | Features = lmp_featurestostr(_f, NULL, 255); | 655 | Features = lmp_featurestostr(_f, NULL, 255); |
656 | } | 656 | } |
657 | 657 | ||
658 | void OTDriver::setManufacturer(int compid) { | 658 | void OTDriver::setManufacturer(int compid) { |
659 | Manufacturer = bt_compidtostr(compid); | 659 | Manufacturer = bt_compidtostr(compid); |
660 | } | 660 | } |
661 | 661 | ||
662 | OTHCISocket * OTDriver::openSocket( void ) { | 662 | OTHCISocket * OTDriver::openSocket( void ) { |
663 | if( ! Socket ) { | 663 | if( ! Socket ) { |
664 | owarn << "Open HCI socket to " << devname() << oendl; | 664 | odebug << "Open HCI socket to " << devname() << oendl; |
665 | Socket = new OTHCISocket( this ); | 665 | Socket = new OTHCISocket( this ); |
666 | } | 666 | } |
667 | return Socket; | 667 | return Socket; |
668 | } | 668 | } |
669 | 669 | ||
670 | void OTDriver::closeSocket( void ) { | 670 | void OTDriver::closeSocket( void ) { |
671 | if( Socket ) { | 671 | if( Socket ) { |
672 | owarn << "Close HCI socket to " << devname() << oendl; | 672 | odebug << "Close HCI socket to " << devname() << oendl; |
673 | delete Socket; | 673 | delete Socket; |
674 | Socket = 0; | 674 | Socket = 0; |
675 | } | 675 | } |
676 | } | 676 | } |
677 | 677 | ||
678 | QString OTDriver::getPeerName( const OTDeviceAddress & PAddr ) { | 678 | QString OTDriver::getPeerName( const OTDeviceAddress & PAddr ) { |
679 | QString S; | 679 | QString S; |
680 | char name[100 ]; | 680 | char name[100 ]; |
681 | 681 | ||
682 | if( ! open() ) { | 682 | if( ! open() ) { |
683 | return QString("N/A"); | 683 | return QString("N/A"); |
684 | } | 684 | } |
685 | 685 | ||
686 | if( hci_read_remote_name( fd(), | 686 | if( hci_read_remote_name( fd(), |
687 | &(PAddr.getBDAddr()), | 687 | &(PAddr.getBDAddr()), |
688 | sizeof(name), | 688 | sizeof(name), |
689 | name, | 689 | name, |
690 | 100000 ) < 0 ) { | 690 | 100000 ) < 0 ) { |
691 | return QString( "N/A" ); | 691 | return QString( "N/A" ); |
692 | } | 692 | } |
693 | 693 | ||
694 | return QString( name ); | 694 | return QString( name ); |
695 | } | 695 | } |
696 | 696 | ||
697 | long OTDriver::getLinkQuality( const OTDeviceAddress & Addr ) { | 697 | long OTDriver::getLinkQuality( const OTDeviceAddress & Addr ) { |
698 | struct hci_conn_info_req *cr; | 698 | struct hci_conn_info_req *cr; |
699 | struct hci_request rq; | 699 | struct hci_request rq; |
700 | read_rssi_rp rp; | 700 | read_rssi_rp rp; |
701 | uint16_t handle; | 701 | uint16_t handle; |
702 | 702 | ||
703 | if( ! open() ) { | 703 | if( ! open() ) { |
704 | return 0; | 704 | return 0; |
705 | } | 705 | } |
706 | 706 | ||
707 | cr = (struct hci_conn_info_req *)malloc( | 707 | cr = (struct hci_conn_info_req *)malloc( |
708 | sizeof(*cr) + sizeof(struct hci_conn_info)); | 708 | sizeof(*cr) + sizeof(struct hci_conn_info)); |
709 | if (!cr) | 709 | if (!cr) |
710 | return 0; | 710 | return 0; |
711 | 711 | ||
712 | bacpy( &(cr->bdaddr), &(Addr.getBDAddr()) ); | 712 | bacpy( &(cr->bdaddr), &(Addr.getBDAddr()) ); |
713 | cr->type = ACL_LINK; | 713 | cr->type = ACL_LINK; |
714 | 714 | ||
715 | if (ioctl( fd(), HCIGETCONNINFO, (unsigned long) cr) < 0) { | 715 | if (ioctl( fd(), HCIGETCONNINFO, (unsigned long) cr) < 0) { |
716 | owarn << "Get connection info failed" << oendl; | 716 | odebug << "Get connection info failed" << oendl; |
717 | free(cr); | 717 | free(cr); |
718 | return 0; | 718 | return 0; |
719 | } | 719 | } |
720 | 720 | ||
721 | handle = htobs(cr->conn_info->handle); | 721 | handle = htobs(cr->conn_info->handle); |
722 | 722 | ||
723 | free(cr); | 723 | free(cr); |
724 | 724 | ||
725 | memset(&rq, 0, sizeof(rq)); | 725 | memset(&rq, 0, sizeof(rq)); |
726 | rq.ogf = OGF_STATUS_PARAM; | 726 | rq.ogf = OGF_STATUS_PARAM; |
727 | rq.ocf = OCF_READ_RSSI; | 727 | rq.ocf = OCF_READ_RSSI; |
728 | rq.cparam = &handle; | 728 | rq.cparam = &handle; |
729 | rq.clen = 2; | 729 | rq.clen = 2; |
730 | rq.rparam = &rp; | 730 | rq.rparam = &rp; |
731 | rq.rlen = GET_LINK_QUALITY_RP_SIZE; | 731 | rq.rlen = GET_LINK_QUALITY_RP_SIZE; |
732 | 732 | ||
733 | if (hci_send_req( fd(), &rq, 100) < 0) { | 733 | if (hci_send_req( fd(), &rq, 100) < 0) { |
734 | owarn << "Get connection info failed" << oendl; | 734 | odebug << "Get connection info failed" << oendl; |
735 | return 0; | 735 | return 0; |
736 | } | 736 | } |
737 | 737 | ||
738 | if( rp.status ) { | 738 | if( rp.status ) { |
739 | owarn << QString().sprintf("HCI get_link_quality cmd failed (0x%2.2X)", rp.status) << oendl; | 739 | odebug << QString().sprintf("HCI get_link_quality cmd failed (0x%2.2X)", rp.status) << oendl; |
740 | return 0; | 740 | return 0; |
741 | } | 741 | } |
742 | 742 | ||
743 | return rp.rssi+50; | 743 | return rp.rssi+50; |
744 | } | 744 | } |
diff --git a/noncore/settings/networksettings2/opietooth2/OTDriverList.cpp b/noncore/settings/networksettings2/opietooth2/OTDriverList.cpp index f703834..e5af742 100644 --- a/noncore/settings/networksettings2/opietooth2/OTDriverList.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTDriverList.cpp | |||
@@ -32,55 +32,55 @@ void OTDriverList::update() { | |||
32 | 32 | ||
33 | struct hci_dev_list_req *dl; | 33 | struct hci_dev_list_req *dl; |
34 | struct hci_dev_req *dr; | 34 | struct hci_dev_req *dr; |
35 | struct hci_dev_info di; | 35 | struct hci_dev_info di; |
36 | int cur; | 36 | int cur; |
37 | 37 | ||
38 | dl = 0; | 38 | dl = 0; |
39 | cur = 0; | 39 | cur = 0; |
40 | do { | 40 | do { |
41 | cur += 5; | 41 | cur += 5; |
42 | 42 | ||
43 | dl = (struct hci_dev_list_req*) | 43 | dl = (struct hci_dev_list_req*) |
44 | ::realloc( dl, sizeof( struct hci_dev_list_req ) + | 44 | ::realloc( dl, sizeof( struct hci_dev_list_req ) + |
45 | ( cur * sizeof(struct hci_dev_req) ) | 45 | ( cur * sizeof(struct hci_dev_req) ) |
46 | ); | 46 | ); |
47 | 47 | ||
48 | if( dl == 0 ) { | 48 | if( dl == 0 ) { |
49 | // memory problem | 49 | // memory problem |
50 | exit(1); | 50 | exit(1); |
51 | } | 51 | } |
52 | 52 | ||
53 | dl->dev_num = cur; | 53 | dl->dev_num = cur; |
54 | 54 | ||
55 | if( ioctl( OT->getSocket(), HCIGETDEVLIST, (void*)dl) ) { | 55 | if( ioctl( OT->getSocket(), HCIGETDEVLIST, (void*)dl) ) { |
56 | owarn << "WARNING : cannot read device list. " | 56 | odebug << "WARNING : cannot read device list. " |
57 | << errno | 57 | << errno |
58 | << strerror( errno ) << oendl; | 58 | << strerror( errno ) << oendl; |
59 | return; | 59 | return; |
60 | } | 60 | } |
61 | 61 | ||
62 | // if num == cur perhaps we did not get all devices yet | 62 | // if num == cur perhaps we did not get all devices yet |
63 | } while( dl->dev_num == cur ); | 63 | } while( dl->dev_num == cur ); |
64 | 64 | ||
65 | if( dl->dev_num != count() ) { | 65 | if( dl->dev_num != count() ) { |
66 | // new or missing devices | 66 | // new or missing devices |
67 | clear(); | 67 | clear(); |
68 | 68 | ||
69 | dr = dl->dev_req; | 69 | dr = dl->dev_req; |
70 | resize( dl->dev_num ); | 70 | resize( dl->dev_num ); |
71 | 71 | ||
72 | for( cur=0; cur < dl->dev_num; cur ++) { | 72 | for( cur=0; cur < dl->dev_num; cur ++) { |
73 | memset( &di, 0, sizeof( di ) ); | 73 | memset( &di, 0, sizeof( di ) ); |
74 | di.dev_id = (dr+cur)->dev_id; | 74 | di.dev_id = (dr+cur)->dev_id; |
75 | 75 | ||
76 | // get device info | 76 | // get device info |
77 | if( ioctl( OT->getSocket(), HCIGETDEVINFO, (void*)&di) != 0 ) | 77 | if( ioctl( OT->getSocket(), HCIGETDEVINFO, (void*)&di) != 0 ) |
78 | continue; // uh ? | 78 | continue; // uh ? |
79 | insert( cur, new OTDriver( OT, &di ) ); | 79 | insert( cur, new OTDriver( OT, &di ) ); |
80 | } | 80 | } |
81 | 81 | ||
82 | owarn << "Found " << count() << " devices" << oendl; | 82 | odebug << "Found " << count() << " devices" << oendl; |
83 | 83 | ||
84 | ::free( dl ); | 84 | ::free( dl ); |
85 | } | 85 | } |
86 | } | 86 | } |
diff --git a/noncore/settings/networksettings2/opietooth2/OTGateway.cpp b/noncore/settings/networksettings2/opietooth2/OTGateway.cpp index 6531cf6..e8137dd 100644 --- a/noncore/settings/networksettings2/opietooth2/OTGateway.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTGateway.cpp | |||
@@ -133,49 +133,49 @@ void OTGateway::SLOT_SetEnabled( bool Mode ) { | |||
133 | 133 | ||
134 | void OTGateway::SLOT_Enable() { | 134 | void OTGateway::SLOT_Enable() { |
135 | getOTDevice()->attach(); | 135 | getOTDevice()->attach(); |
136 | } | 136 | } |
137 | 137 | ||
138 | void OTGateway::SLOT_Disable() { | 138 | void OTGateway::SLOT_Disable() { |
139 | getOTDevice()->detach(); | 139 | getOTDevice()->detach(); |
140 | } | 140 | } |
141 | 141 | ||
142 | bool OTGateway::needsEnabling() { | 142 | bool OTGateway::needsEnabling() { |
143 | return getOTDevice()->needsAttach(); | 143 | return getOTDevice()->needsAttach(); |
144 | } | 144 | } |
145 | 145 | ||
146 | bool OTGateway::isEnabled() { | 146 | bool OTGateway::isEnabled() { |
147 | if( getOTDevice()->deviceNr() >= 0 && | 147 | if( getOTDevice()->deviceNr() >= 0 && |
148 | driver( getOTDevice()->deviceNr() )->isUp() ) | 148 | driver( getOTDevice()->deviceNr() )->isUp() ) |
149 | return TRUE; | 149 | return TRUE; |
150 | 150 | ||
151 | // else check system | 151 | // else check system |
152 | return getOTDevice()->isAttached(); | 152 | return getOTDevice()->isAttached(); |
153 | } | 153 | } |
154 | 154 | ||
155 | void OTGateway::SLOT_ShowError( const QString & S ) { | 155 | void OTGateway::SLOT_ShowError( const QString & S ) { |
156 | 156 | ||
157 | owarn << S << oendl; | 157 | odebug << S << oendl; |
158 | 158 | ||
159 | if( ErrorConnectCount > 0 ) { | 159 | if( ErrorConnectCount > 0 ) { |
160 | // pass error | 160 | // pass error |
161 | emit error( QString( "<p>" ) + S + "</p>" ); | 161 | emit error( QString( "<p>" ) + S + "</p>" ); |
162 | return; | 162 | return; |
163 | } | 163 | } |
164 | 164 | ||
165 | QMessageBox::warning( 0, | 165 | QMessageBox::warning( 0, |
166 | tr("OTGateway error"), | 166 | tr("OTGateway error"), |
167 | S ); | 167 | S ); |
168 | } | 168 | } |
169 | 169 | ||
170 | void OTGateway::connectNotify( const char * S ) { | 170 | void OTGateway::connectNotify( const char * S ) { |
171 | if( S && strcmp( S, "error(const QString&)" ) == 0 ) { | 171 | if( S && strcmp( S, "error(const QString&)" ) == 0 ) { |
172 | ErrorConnectCount ++; | 172 | ErrorConnectCount ++; |
173 | } | 173 | } |
174 | } | 174 | } |
175 | 175 | ||
176 | void OTGateway::disconnectNotify( const char * S ) { | 176 | void OTGateway::disconnectNotify( const char * S ) { |
177 | if( S && strcmp( S, "error(const QString&)" ) == 0 ) { | 177 | if( S && strcmp( S, "error(const QString&)" ) == 0 ) { |
178 | ErrorConnectCount --; | 178 | ErrorConnectCount --; |
179 | } | 179 | } |
180 | } | 180 | } |
181 | 181 | ||
@@ -189,104 +189,104 @@ void OTGateway::timerEvent( QTimerEvent * ) { | |||
189 | 189 | ||
190 | if( oldc != AllDrivers.count() ) { | 190 | if( oldc != AllDrivers.count() ) { |
191 | updateDrivers(); | 191 | updateDrivers(); |
192 | } else { | 192 | } else { |
193 | for( unsigned int i = 0; | 193 | for( unsigned int i = 0; |
194 | i < AllDrivers.count(); | 194 | i < AllDrivers.count(); |
195 | i ++ ) { | 195 | i ++ ) { |
196 | D = AllDrivers[i]; | 196 | D = AllDrivers[i]; |
197 | old = D->isUp(); | 197 | old = D->isUp(); |
198 | if( D->currentState() >= 0 ) { | 198 | if( D->currentState() >= 0 ) { |
199 | if( old != D->isUp() ) { | 199 | if( old != D->isUp() ) { |
200 | emit stateChange( D, D->isUp() ); | 200 | emit stateChange( D, D->isUp() ); |
201 | } | 201 | } |
202 | } else { | 202 | } else { |
203 | // if one driver is unable to provide info | 203 | // if one driver is unable to provide info |
204 | // we refresh all devices | 204 | // we refresh all devices |
205 | updateDrivers(); | 205 | updateDrivers(); |
206 | return; | 206 | return; |
207 | } | 207 | } |
208 | } | 208 | } |
209 | } | 209 | } |
210 | } | 210 | } |
211 | 211 | ||
212 | void OTGateway::SLOT_Enabled( int id, bool Up ) { | 212 | void OTGateway::SLOT_Enabled( int id, bool Up ) { |
213 | owarn << "device " << id << " state " << Up << oendl; | 213 | odebug << "device " << id << " state " << Up << oendl; |
214 | if( Up ) { | 214 | if( Up ) { |
215 | // device is up -> detect it | 215 | // device is up -> detect it |
216 | updateDrivers(); | 216 | updateDrivers(); |
217 | if( (unsigned)id >= AllDrivers.count() ) { | 217 | if( (unsigned)id >= AllDrivers.count() ) { |
218 | // to make sure that the driver really IS detected | 218 | // to make sure that the driver really IS detected |
219 | AllDrivers[id]->bringUp(); | 219 | AllDrivers[id]->bringUp(); |
220 | } | 220 | } |
221 | } // if DOWN device already down | 221 | } // if DOWN device already down |
222 | emit deviceEnabled( Up ); | 222 | emit deviceEnabled( Up ); |
223 | } | 223 | } |
224 | 224 | ||
225 | void OTGateway::updateDrivers( void ) { | 225 | void OTGateway::updateDrivers( void ) { |
226 | OTDriver * D; | 226 | OTDriver * D; |
227 | 227 | ||
228 | AllDrivers.update(); | 228 | AllDrivers.update(); |
229 | 229 | ||
230 | owarn << "updated drivers. now " << AllDrivers.count() << oendl; | 230 | odebug << "updated drivers. now " << AllDrivers.count() << oendl; |
231 | 231 | ||
232 | // connect signals for each driver | 232 | // connect signals for each driver |
233 | for( unsigned int i = 0; | 233 | for( unsigned int i = 0; |
234 | i < AllDrivers.count(); | 234 | i < AllDrivers.count(); |
235 | i ++ ) { | 235 | i ++ ) { |
236 | D = AllDrivers[i]; | 236 | D = AllDrivers[i]; |
237 | 237 | ||
238 | connect( D, | 238 | connect( D, |
239 | SIGNAL( error( const QString & ) ), | 239 | SIGNAL( error( const QString & ) ), |
240 | this, | 240 | this, |
241 | SLOT( SLOT_ShowError( const QString & ) ) | 241 | SLOT( SLOT_ShowError( const QString & ) ) |
242 | ); | 242 | ); |
243 | 243 | ||
244 | connect( D, | 244 | connect( D, |
245 | SIGNAL( stateChange( OTDriver *, bool ) ), | 245 | SIGNAL( stateChange( OTDriver *, bool ) ), |
246 | this, | 246 | this, |
247 | SIGNAL( stateChange( OTDriver *, bool ) ) | 247 | SIGNAL( stateChange( OTDriver *, bool ) ) |
248 | ); | 248 | ); |
249 | 249 | ||
250 | connect( D, | 250 | connect( D, |
251 | SIGNAL( driverDisappeared( OTDriver * ) ), | 251 | SIGNAL( driverDisappeared( OTDriver * ) ), |
252 | this, | 252 | this, |
253 | SLOT( SLOT_DriverDisappeared( OTDriver * ) ) | 253 | SLOT( SLOT_DriverDisappeared( OTDriver * ) ) |
254 | ); | 254 | ); |
255 | } | 255 | } |
256 | 256 | ||
257 | // verify main device too | 257 | // verify main device too |
258 | if( TheOTDevice ) | 258 | if( TheOTDevice ) |
259 | TheOTDevice->checkAttach(); | 259 | TheOTDevice->checkAttach(); |
260 | 260 | ||
261 | // set to default scanning hardware | 261 | // set to default scanning hardware |
262 | setScanWith( 0 ); | 262 | setScanWith( 0 ); |
263 | 263 | ||
264 | emit driverListChanged(); | 264 | emit driverListChanged(); |
265 | } | 265 | } |
266 | 266 | ||
267 | void OTGateway::SLOT_DriverDisappeared( OTDriver * D ) { | 267 | void OTGateway::SLOT_DriverDisappeared( OTDriver * D ) { |
268 | owarn << "Driver " << D->devname() << " when offline" << oendl; | 268 | odebug << "Driver " << D->devname() << " when offline" << oendl; |
269 | updateDrivers(); | 269 | updateDrivers(); |
270 | } | 270 | } |
271 | 271 | ||
272 | void OTGateway::scanNeighbourhood( OTDriver * D ) { | 272 | void OTGateway::scanNeighbourhood( OTDriver * D ) { |
273 | 273 | ||
274 | if( Scanning ) { | 274 | if( Scanning ) { |
275 | stopScanOfNeighbourhood(); | 275 | stopScanOfNeighbourhood(); |
276 | } | 276 | } |
277 | 277 | ||
278 | if( D ) { | 278 | if( D ) { |
279 | setScanWith( D ); | 279 | setScanWith( D ); |
280 | } | 280 | } |
281 | 281 | ||
282 | Scanning = new OTInquiry( scanWith() ); | 282 | Scanning = new OTInquiry( scanWith() ); |
283 | 283 | ||
284 | connect( Scanning, | 284 | connect( Scanning, |
285 | SIGNAL( peerFound( OTPeer *, bool )), | 285 | SIGNAL( peerFound( OTPeer *, bool )), |
286 | this, | 286 | this, |
287 | SLOT( SLOT_PeerDetected( OTPeer *, bool ) ) | 287 | SLOT( SLOT_PeerDetected( OTPeer *, bool ) ) |
288 | ); | 288 | ); |
289 | connect( Scanning, | 289 | connect( Scanning, |
290 | SIGNAL( finished()), | 290 | SIGNAL( finished()), |
291 | this, | 291 | this, |
292 | SLOT( SLOT_FinishedDetecting() ) | 292 | SLOT( SLOT_FinishedDetecting() ) |
@@ -297,49 +297,49 @@ void OTGateway::scanNeighbourhood( OTDriver * D ) { | |||
297 | } | 297 | } |
298 | 298 | ||
299 | OTPeer* OTGateway::findPeer( const OTDeviceAddress & Addr ) { | 299 | OTPeer* OTGateway::findPeer( const OTDeviceAddress & Addr ) { |
300 | for( unsigned int i = 0 ; i < AllPeers.count(); i ++ ) { | 300 | for( unsigned int i = 0 ; i < AllPeers.count(); i ++ ) { |
301 | if( AllPeers[i]->address() == Addr ) { | 301 | if( AllPeers[i]->address() == Addr ) { |
302 | return AllPeers[i]; | 302 | return AllPeers[i]; |
303 | } | 303 | } |
304 | } | 304 | } |
305 | return 0; | 305 | return 0; |
306 | } | 306 | } |
307 | 307 | ||
308 | OTDriver* OTGateway::findDriver( const OTDeviceAddress & Addr ) { | 308 | OTDriver* OTGateway::findDriver( const OTDeviceAddress & Addr ) { |
309 | for( unsigned int i = 0 ; i < AllDrivers.count(); i ++ ) { | 309 | for( unsigned int i = 0 ; i < AllDrivers.count(); i ++ ) { |
310 | if( AllDrivers[i]->address() == Addr ) { | 310 | if( AllDrivers[i]->address() == Addr ) { |
311 | return AllDrivers[i]; | 311 | return AllDrivers[i]; |
312 | } | 312 | } |
313 | } | 313 | } |
314 | return 0; | 314 | return 0; |
315 | } | 315 | } |
316 | 316 | ||
317 | void OTGateway::SLOT_PeerDetected( OTPeer * P, bool IsNew ) { | 317 | void OTGateway::SLOT_PeerDetected( OTPeer * P, bool IsNew ) { |
318 | 318 | ||
319 | if( IsNew ) { | 319 | if( IsNew ) { |
320 | // new peer | 320 | // new peer |
321 | owarn << "New peer " << P->name() << oendl; | 321 | odebug << "New peer " << P->name() << oendl; |
322 | addPeer( P ); | 322 | addPeer( P ); |
323 | } | 323 | } |
324 | 324 | ||
325 | emit detectedPeer( P, IsNew ); | 325 | emit detectedPeer( P, IsNew ); |
326 | } | 326 | } |
327 | 327 | ||
328 | void OTGateway::addPeer( OTPeer * P ) { | 328 | void OTGateway::addPeer( OTPeer * P ) { |
329 | AllPeers.resize( AllPeers.size()+1); | 329 | AllPeers.resize( AllPeers.size()+1); |
330 | AllPeers.insert( AllPeers.size()-1, P ); | 330 | AllPeers.insert( AllPeers.size()-1, P ); |
331 | AllPeersModified = 1; | 331 | AllPeersModified = 1; |
332 | } | 332 | } |
333 | 333 | ||
334 | void OTGateway::removePeer( OTPeer * P ) { | 334 | void OTGateway::removePeer( OTPeer * P ) { |
335 | int i = AllPeers.find( P ); | 335 | int i = AllPeers.find( P ); |
336 | if( i ) { | 336 | if( i ) { |
337 | AllPeers.remove( i ); | 337 | AllPeers.remove( i ); |
338 | AllPeersModified = 1; | 338 | AllPeersModified = 1; |
339 | } | 339 | } |
340 | } | 340 | } |
341 | 341 | ||
342 | void OTGateway::stopScanOfNeighbourhood( void ) { | 342 | void OTGateway::stopScanOfNeighbourhood( void ) { |
343 | if( Scanning ) { | 343 | if( Scanning ) { |
344 | delete Scanning; | 344 | delete Scanning; |
345 | Scanning = 0; | 345 | Scanning = 0; |
@@ -363,56 +363,56 @@ const char * OTGateway::deviceTypeToName( int cls ) { | |||
363 | return "lan"; | 363 | return "lan"; |
364 | case 0x04: | 364 | case 0x04: |
365 | return "av"; | 365 | return "av"; |
366 | case 0x05: | 366 | case 0x05: |
367 | return "peripheral"; | 367 | return "peripheral"; |
368 | case 0x06: | 368 | case 0x06: |
369 | return "imaging"; | 369 | return "imaging"; |
370 | case 0x07: | 370 | case 0x07: |
371 | default : | 371 | default : |
372 | break; | 372 | break; |
373 | } | 373 | } |
374 | return "unknown"; | 374 | return "unknown"; |
375 | } | 375 | } |
376 | 376 | ||
377 | PANConnectionVector OTGateway::getPANConnections( void ) { | 377 | PANConnectionVector OTGateway::getPANConnections( void ) { |
378 | PANConnectionVector V; | 378 | PANConnectionVector V; |
379 | 379 | ||
380 | struct bnep_connlist_req req; | 380 | struct bnep_connlist_req req; |
381 | struct bnep_conninfo ci[48]; | 381 | struct bnep_conninfo ci[48]; |
382 | 382 | ||
383 | V.setAutoDelete(TRUE); | 383 | V.setAutoDelete(TRUE); |
384 | 384 | ||
385 | int ctl = socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_BNEP); | 385 | int ctl = socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_BNEP); |
386 | if (ctl < 0) { | 386 | if (ctl < 0) { |
387 | owarn << "Failed to open control socket" << oendl; | 387 | odebug << "Failed to open control socket" << oendl; |
388 | return V; | 388 | return V; |
389 | } | 389 | } |
390 | 390 | ||
391 | req.cnum = 48; | 391 | req.cnum = 48; |
392 | req.ci = ci; | 392 | req.ci = ci; |
393 | if (ioctl(ctl, BNEPGETCONNLIST, &req)) { | 393 | if (ioctl(ctl, BNEPGETCONNLIST, &req)) { |
394 | owarn << "Failed to get connection list" << oendl; | 394 | odebug << "Failed to get connection list" << oendl; |
395 | ::close( ctl ); | 395 | ::close( ctl ); |
396 | return V; | 396 | return V; |
397 | } | 397 | } |
398 | 398 | ||
399 | for ( unsigned i=0; i < req.cnum; i++) { | 399 | for ( unsigned i=0; i < req.cnum; i++) { |
400 | V.resize( V.size() + 1 ); | 400 | V.resize( V.size() + 1 ); |
401 | if( ci[i].role == BNEP_SVC_PANU ) { | 401 | if( ci[i].role == BNEP_SVC_PANU ) { |
402 | // we are the client | 402 | // we are the client |
403 | V.insert( V.size()-1, new OTPANConnection( | 403 | V.insert( V.size()-1, new OTPANConnection( |
404 | ci[i].device, | 404 | ci[i].device, |
405 | batostr((bdaddr_t *) ci[i].dst) | 405 | batostr((bdaddr_t *) ci[i].dst) |
406 | ) ); | 406 | ) ); |
407 | } | 407 | } |
408 | } | 408 | } |
409 | 409 | ||
410 | ::close( ctl ); | 410 | ::close( ctl ); |
411 | return V; | 411 | return V; |
412 | } | 412 | } |
413 | 413 | ||
414 | struct link_key { | 414 | struct link_key { |
415 | bdaddr_t sba; | 415 | bdaddr_t sba; |
416 | bdaddr_t dba; | 416 | bdaddr_t dba; |
417 | uint8_t key[16]; | 417 | uint8_t key[16]; |
418 | uint8_t type; | 418 | uint8_t type; |
diff --git a/noncore/settings/networksettings2/opietooth2/OTHCISocket.cpp b/noncore/settings/networksettings2/opietooth2/OTHCISocket.cpp index 471c3bf..1997b44 100644 --- a/noncore/settings/networksettings2/opietooth2/OTHCISocket.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTHCISocket.cpp | |||
@@ -13,61 +13,61 @@ | |||
13 | #include <qtimer.h> | 13 | #include <qtimer.h> |
14 | #include <qdatastream.h> | 14 | #include <qdatastream.h> |
15 | #include <opie2/odebug.h> | 15 | #include <opie2/odebug.h> |
16 | 16 | ||
17 | #include <bluezlib.h> | 17 | #include <bluezlib.h> |
18 | 18 | ||
19 | // #include "deviceaddress.h" | 19 | // #include "deviceaddress.h" |
20 | #include <OTHCISocket.h> | 20 | #include <OTHCISocket.h> |
21 | #include <OTDriver.h> | 21 | #include <OTDriver.h> |
22 | 22 | ||
23 | using namespace Opietooth2; | 23 | using namespace Opietooth2; |
24 | 24 | ||
25 | OTHCISocket::OTHCISocket( OTDriver * D ) : | 25 | OTHCISocket::OTHCISocket( OTDriver * D ) : |
26 | QObject( D, D->devname() ) { | 26 | QObject( D, D->devname() ) { |
27 | BStatusSet = false; | 27 | BStatusSet = false; |
28 | Driver = D; | 28 | Driver = D; |
29 | HCIReadNotifier = 0; | 29 | HCIReadNotifier = 0; |
30 | } | 30 | } |
31 | 31 | ||
32 | OTHCISocket::~OTHCISocket() { | 32 | OTHCISocket::~OTHCISocket() { |
33 | close(); | 33 | close(); |
34 | } | 34 | } |
35 | 35 | ||
36 | void OTHCISocket::close() { | 36 | void OTHCISocket::close() { |
37 | owarn << "OTHCISocket::close()" << oendl; | 37 | odebug << "OTHCISocket::close()" << oendl; |
38 | if( HCIReadNotifier ) { | 38 | if( HCIReadNotifier ) { |
39 | delete HCIReadNotifier; | 39 | delete HCIReadNotifier; |
40 | } | 40 | } |
41 | 41 | ||
42 | if( HCISocket.isValid() ) { | 42 | if( HCISocket.isValid() ) { |
43 | HCISocket.close(); | 43 | HCISocket.close(); |
44 | } | 44 | } |
45 | } | 45 | } |
46 | 46 | ||
47 | bool OTHCISocket::open() { | 47 | bool OTHCISocket::open() { |
48 | 48 | ||
49 | owarn << "OTHCISocket::open()" << oendl; | 49 | odebug << "OTHCISocket::open()" << oendl; |
50 | int s; | 50 | int s; |
51 | 51 | ||
52 | s = ::socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI); | 52 | s = ::socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI); |
53 | 53 | ||
54 | if (s < 0) { | 54 | if (s < 0) { |
55 | emit error( tr( "Error creating socket on %1 : %2 %3"). | 55 | emit error( tr( "Error creating socket on %1 : %2 %3"). |
56 | arg( Driver->devname() ). | 56 | arg( Driver->devname() ). |
57 | arg( errno ). | 57 | arg( errno ). |
58 | arg( strerror(errno) ) | 58 | arg( strerror(errno) ) |
59 | ); | 59 | ); |
60 | return false; | 60 | return false; |
61 | } | 61 | } |
62 | 62 | ||
63 | /* Bind socket to the HCI device */ | 63 | /* Bind socket to the HCI device */ |
64 | struct sockaddr_hci sa; | 64 | struct sockaddr_hci sa; |
65 | sa.hci_family = AF_BLUETOOTH; | 65 | sa.hci_family = AF_BLUETOOTH; |
66 | sa.hci_dev = Driver->devId(); | 66 | sa.hci_dev = Driver->devId(); |
67 | if (bind(s, (struct sockaddr *)&sa, sizeof(sa)) < 0) { | 67 | if (bind(s, (struct sockaddr *)&sa, sizeof(sa)) < 0) { |
68 | ::close(s); | 68 | ::close(s); |
69 | emit error( tr( "Error binding to socket to %1 : %2 %3"). | 69 | emit error( tr( "Error binding to socket to %1 : %2 %3"). |
70 | arg( Driver->devname() ). | 70 | arg( Driver->devname() ). |
71 | arg( errno ). | 71 | arg( errno ). |
72 | arg( strerror(errno) ) | 72 | arg( strerror(errno) ) |
73 | ); | 73 | ); |
@@ -130,145 +130,145 @@ void OTHCISocket::slotSocketActivated() { | |||
130 | //kdDebug() << "HCI socket ready read." << endl; | 130 | //kdDebug() << "HCI socket ready read." << endl; |
131 | 131 | ||
132 | unsigned char buf[512]; | 132 | unsigned char buf[512]; |
133 | int psize = HCISocket.readBlock((char*)buf, 512); | 133 | int psize = HCISocket.readBlock((char*)buf, 512); |
134 | 134 | ||
135 | if (psize <= 0) { | 135 | if (psize <= 0) { |
136 | slotSocketError(HCISocket.error()); | 136 | slotSocketError(HCISocket.error()); |
137 | HCISocket.close(); | 137 | HCISocket.close(); |
138 | return; | 138 | return; |
139 | } | 139 | } |
140 | 140 | ||
141 | //unsigned char packetType = buf[0]; | 141 | //unsigned char packetType = buf[0]; |
142 | unsigned char eventCode = buf[1]; | 142 | unsigned char eventCode = buf[1]; |
143 | unsigned char len = buf[2]; | 143 | unsigned char len = buf[2]; |
144 | 144 | ||
145 | if (psize-3 == len) { | 145 | if (psize-3 == len) { |
146 | 146 | ||
147 | QByteArray databuf; | 147 | QByteArray databuf; |
148 | databuf.duplicate((char*)(buf+3), len); | 148 | databuf.duplicate((char*)(buf+3), len); |
149 | emit event(eventCode, databuf); | 149 | emit event(eventCode, databuf); |
150 | if (eventCode == EVT_CMD_STATUS) { | 150 | if (eventCode == EVT_CMD_STATUS) { |
151 | updateStatus( databuf ); | 151 | updateStatus( databuf ); |
152 | } | 152 | } |
153 | } else { | 153 | } else { |
154 | owarn << "Error reading hci packet: packetSize(" | 154 | odebug << "Error reading hci packet: packetSize(" |
155 | << psize | 155 | << psize |
156 | << ")-3 != dataSize(" | 156 | << ")-3 != dataSize(" |
157 | << len | 157 | << len |
158 | << ")" | 158 | << ")" |
159 | << oendl; | 159 | << oendl; |
160 | } | 160 | } |
161 | } else if (err == QSocketDevice::NoError) { | 161 | } else if (err == QSocketDevice::NoError) { |
162 | slotConnectionClosed(); | 162 | slotConnectionClosed(); |
163 | } else { | 163 | } else { |
164 | HCISocket.close(); | 164 | HCISocket.close(); |
165 | slotSocketError(err); | 165 | slotSocketError(err); |
166 | } | 166 | } |
167 | } | 167 | } |
168 | 168 | ||
169 | void OTHCISocket::updateStatus(const QByteArray& data) { | 169 | void OTHCISocket::updateStatus(const QByteArray& data) { |
170 | 170 | ||
171 | QDataStream stream(data, IO_ReadOnly); | 171 | QDataStream stream(data, IO_ReadOnly); |
172 | stream.setByteOrder(QDataStream::LittleEndian); | 172 | stream.setByteOrder(QDataStream::LittleEndian); |
173 | Q_UINT8 status, dummy; | 173 | Q_UINT8 status, dummy; |
174 | Q_UINT16 opcode; | 174 | Q_UINT16 opcode; |
175 | 175 | ||
176 | BStatusSet = true; | 176 | BStatusSet = true; |
177 | 177 | ||
178 | stream >> status >> dummy >> opcode; | 178 | stream >> status >> dummy >> opcode; |
179 | //kdDebug() << "updatestatus opcode=" << uint32_t(opcode) << endl; | 179 | //kdDebug() << "updatestatus opcode=" << uint32_t(opcode) << endl; |
180 | LastStatus = status; | 180 | LastStatus = status; |
181 | LastStatusOgf = cmd_opcode_ogf(opcode); | 181 | LastStatusOgf = cmd_opcode_ogf(opcode); |
182 | LastStatusOcf = cmd_opcode_ocf(opcode); | 182 | LastStatusOcf = cmd_opcode_ocf(opcode); |
183 | } | 183 | } |
184 | 184 | ||
185 | void OTHCISocket::slotConnectionClosed() { | 185 | void OTHCISocket::slotConnectionClosed() { |
186 | owarn << "HCI connection closed." << oendl; | 186 | odebug << "HCI connection closed." << oendl; |
187 | emit connectionClosed(); | 187 | emit connectionClosed(); |
188 | } | 188 | } |
189 | 189 | ||
190 | void OTHCISocket::readEvent() { | 190 | void OTHCISocket::readEvent() { |
191 | 191 | ||
192 | if (HCIReadNotifier) { | 192 | if (HCIReadNotifier) { |
193 | slotSocketActivated(); | 193 | slotSocketActivated(); |
194 | } | 194 | } |
195 | } | 195 | } |
196 | 196 | ||
197 | bool OTHCISocket::sendCommand( unsigned char ogf, | 197 | bool OTHCISocket::sendCommand( unsigned char ogf, |
198 | unsigned short ocf, | 198 | unsigned short ocf, |
199 | QByteArray buf | 199 | QByteArray buf |
200 | ) { | 200 | ) { |
201 | QBuffer packet; | 201 | QBuffer packet; |
202 | QDataStream stream(&packet); | 202 | QDataStream stream(&packet); |
203 | 203 | ||
204 | stream.setByteOrder(QDataStream::LittleEndian); | 204 | stream.setByteOrder(QDataStream::LittleEndian); |
205 | packet.open(IO_WriteOnly); | 205 | packet.open(IO_WriteOnly); |
206 | 206 | ||
207 | if (buf.size() > 255) return false; | 207 | if (buf.size() > 255) return false; |
208 | 208 | ||
209 | //kdDebug() << "sendCommand. ogf=" << ogf << " ocf=" << ocf << endl; | 209 | //kdDebug() << "sendCommand. ogf=" << ogf << " ocf=" << ocf << endl; |
210 | Q_UINT16 opcode = cmd_opcode_pack(ogf, ocf); | 210 | Q_UINT16 opcode = cmd_opcode_pack(ogf, ocf); |
211 | Q_UINT8 pType = HCI_COMMAND_PKT; | 211 | Q_UINT8 pType = HCI_COMMAND_PKT; |
212 | Q_UINT8 buflen = buf.size(); | 212 | Q_UINT8 buflen = buf.size(); |
213 | 213 | ||
214 | stream << pType << opcode << buflen; | 214 | stream << pType << opcode << buflen; |
215 | stream.writeRawBytes(buf.data(), buflen); | 215 | stream.writeRawBytes(buf.data(), buflen); |
216 | packet.close(); | 216 | packet.close(); |
217 | HCISocket.writeBlock((const char*)packet.buffer(), | 217 | HCISocket.writeBlock((const char*)packet.buffer(), |
218 | packet.buffer().size()); | 218 | packet.buffer().size()); |
219 | return true; | 219 | return true; |
220 | } | 220 | } |
221 | 221 | ||
222 | bool OTHCISocket::readStatus( unsigned char ogf, | 222 | bool OTHCISocket::readStatus( unsigned char ogf, |
223 | unsigned short ocf, | 223 | unsigned short ocf, |
224 | int *status, | 224 | int *status, |
225 | int timeout_ms) { | 225 | int timeout_ms) { |
226 | QTimer timer; | 226 | QTimer timer; |
227 | 227 | ||
228 | timer.start(timeout_ms, true); | 228 | timer.start(timeout_ms, true); |
229 | BStatusSet = false; | 229 | BStatusSet = false; |
230 | 230 | ||
231 | while (timer.isActive() && HCISocket.isValid()) { | 231 | while (timer.isActive() && HCISocket.isValid()) { |
232 | 232 | ||
233 | owarn << "OTHCISocket::readStatus()" << oendl; | 233 | odebug << "OTHCISocket::readStatus()" << oendl; |
234 | bool timeout = false; | 234 | bool timeout = false; |
235 | 235 | ||
236 | if( HCISocket.bytesAvailable() == 0) { | 236 | if( HCISocket.bytesAvailable() == 0) { |
237 | int rv = HCISocket.waitForMore(timeout_ms); | 237 | int rv = HCISocket.waitForMore(timeout_ms); |
238 | timeout = (rv == 0); | 238 | timeout = (rv == 0); |
239 | } | 239 | } |
240 | 240 | ||
241 | if (!timeout) { | 241 | if (!timeout) { |
242 | slotSocketActivated(); | 242 | slotSocketActivated(); |
243 | } | 243 | } |
244 | 244 | ||
245 | if( BStatusSet == true && | 245 | if( BStatusSet == true && |
246 | ogf == LastStatusOgf && | 246 | ogf == LastStatusOgf && |
247 | ocf == LastStatusOcf) { | 247 | ocf == LastStatusOcf) { |
248 | *status = LastStatus; | 248 | *status = LastStatus; |
249 | owarn << "OTHCISocket::readStatus(ogf=" | 249 | odebug << "OTHCISocket::readStatus(ogf=" |
250 | << ogf | 250 | << ogf |
251 | << ",ocf=" | 251 | << ",ocf=" |
252 | << ocf | 252 | << ocf |
253 | << ",timeout=" | 253 | << ",timeout=" |
254 | << LastStatus | 254 | << LastStatus |
255 | << ")" | 255 | << ")" |
256 | << oendl; | 256 | << oendl; |
257 | return true; | 257 | return true; |
258 | } | 258 | } |
259 | } | 259 | } |
260 | 260 | ||
261 | owarn << "OTHCISocket::readStatus(ogf=" | 261 | odebug << "OTHCISocket::readStatus(ogf=" |
262 | << ogf | 262 | << ogf |
263 | << ",ocf=" | 263 | << ",ocf=" |
264 | << ocf | 264 | << ocf |
265 | << ",timeout=" | 265 | << ",timeout=" |
266 | << LastStatus | 266 | << LastStatus |
267 | << ") : timeout " | 267 | << ") : timeout " |
268 | << oendl; | 268 | << oendl; |
269 | return false; | 269 | return false; |
270 | } | 270 | } |
271 | 271 | ||
272 | int OTHCISocket::socket() { | 272 | int OTHCISocket::socket() { |
273 | return HCISocket.socket(); | 273 | return HCISocket.socket(); |
274 | } | 274 | } |
diff --git a/noncore/settings/networksettings2/opietooth2/OTInquiry.cpp b/noncore/settings/networksettings2/opietooth2/OTInquiry.cpp index 8e94bbc..2bc63c7 100644 --- a/noncore/settings/networksettings2/opietooth2/OTInquiry.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTInquiry.cpp | |||
@@ -38,182 +38,182 @@ OTInquiry::OTInquiry( OTDriver * Drv ) : QObject( Drv ) { | |||
38 | 38 | ||
39 | InquiryTimeoutTimer = new QTimer(this); | 39 | InquiryTimeoutTimer = new QTimer(this); |
40 | 40 | ||
41 | connect( InquiryTimeoutTimer, | 41 | connect( InquiryTimeoutTimer, |
42 | SIGNAL(timeout()), | 42 | SIGNAL(timeout()), |
43 | this, | 43 | this, |
44 | SLOT(slotInquiryTimeout())); | 44 | SLOT(slotInquiryTimeout())); |
45 | 45 | ||
46 | Driver = Drv; | 46 | Driver = Drv; |
47 | Socket = Drv->openSocket(); | 47 | Socket = Drv->openSocket(); |
48 | Socket->open(); | 48 | Socket->open(); |
49 | 49 | ||
50 | connect( Socket, | 50 | connect( Socket, |
51 | SIGNAL( event(unsigned char, QByteArray)), | 51 | SIGNAL( event(unsigned char, QByteArray)), |
52 | this, | 52 | this, |
53 | SLOT(slotHCIEvent(unsigned char, QByteArray))); | 53 | SLOT(slotHCIEvent(unsigned char, QByteArray))); |
54 | } | 54 | } |
55 | 55 | ||
56 | OTInquiry::~OTInquiry() { | 56 | OTInquiry::~OTInquiry() { |
57 | stopInquiring(); | 57 | stopInquiring(); |
58 | } | 58 | } |
59 | 59 | ||
60 | void OTInquiry::stopInquiring( void ) { | 60 | void OTInquiry::stopInquiring( void ) { |
61 | if( Socket ) { | 61 | if( Socket ) { |
62 | owarn << "Stop inquiry" << oendl; | 62 | odebug << "Stop inquiry" << oendl; |
63 | Driver->closeSocket(); | 63 | Driver->closeSocket(); |
64 | Socket = 0; | 64 | Socket = 0; |
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 | ||
68 | bool OTInquiry::inquire( double timeout, int numResponses, int lap) { | 68 | bool OTInquiry::inquire( double timeout, int numResponses, int lap) { |
69 | 69 | ||
70 | QByteArray cmdBuf(5); | 70 | QByteArray cmdBuf(5); |
71 | 71 | ||
72 | cmdBuf[0] = lap & 0xFF; | 72 | cmdBuf[0] = lap & 0xFF; |
73 | cmdBuf[1] = (lap >> 8) & 0xFF; | 73 | cmdBuf[1] = (lap >> 8) & 0xFF; |
74 | cmdBuf[2] = (lap >> 16) & 0xFF; | 74 | cmdBuf[2] = (lap >> 16) & 0xFF; |
75 | cmdBuf[3] = max(0x01, min(0x30, int(timeout/1.28))); | 75 | cmdBuf[3] = max(0x01, min(0x30, int(timeout/1.28))); |
76 | cmdBuf[4] = (unsigned char)numResponses; | 76 | cmdBuf[4] = (unsigned char)numResponses; |
77 | 77 | ||
78 | owarn << "Send HCI inquiry command. wait for " << cmdBuf[3] << oendl; | 78 | odebug << "Send HCI inquiry command. wait for " << cmdBuf[3] << oendl; |
79 | 79 | ||
80 | Socket->sendCommand(0x01, 0x0001, cmdBuf); | 80 | Socket->sendCommand(0x01, 0x0001, cmdBuf); |
81 | 81 | ||
82 | int status; | 82 | int status; |
83 | 83 | ||
84 | if( Socket->readStatus(0x01, 0x0001, &status)) { | 84 | if( Socket->readStatus(0x01, 0x0001, &status)) { |
85 | if (status == 0) { | 85 | if (status == 0) { |
86 | SuccessfullyStarted = true; | 86 | SuccessfullyStarted = true; |
87 | InquiryTimeoutTimer->start( int(1000*(timeout+1.0)), true); | 87 | InquiryTimeoutTimer->start( int(1000*(timeout+1.0)), true); |
88 | return true; | 88 | return true; |
89 | } | 89 | } |
90 | else { | 90 | else { |
91 | QString S =QString().sprintf( "%x", status ); | 91 | QString S =QString().sprintf( "%x", status ); |
92 | owarn << "OTInquiry::inquiry() failed: 0x" << S << oendl; | 92 | odebug << "OTInquiry::inquiry() failed: 0x" << S << oendl; |
93 | emit finished(); | 93 | emit finished(); |
94 | return false; | 94 | return false; |
95 | } | 95 | } |
96 | } else { | 96 | } else { |
97 | owarn << "OTInquiry::inquiry(): Timeout." << oendl; | 97 | odebug << "OTInquiry::inquiry(): Timeout." << oendl; |
98 | return false; | 98 | return false; |
99 | } | 99 | } |
100 | } | 100 | } |
101 | 101 | ||
102 | bool OTInquiry::isInquiring() { | 102 | bool OTInquiry::isInquiring() { |
103 | return InquiryTimeoutTimer->isActive(); | 103 | return InquiryTimeoutTimer->isActive(); |
104 | } | 104 | } |
105 | 105 | ||
106 | bool OTInquiry::isFinished() { | 106 | bool OTInquiry::isFinished() { |
107 | return SuccessfullyStarted && SuccessfullyEnded; | 107 | return SuccessfullyStarted && SuccessfullyEnded; |
108 | } | 108 | } |
109 | 109 | ||
110 | void OTInquiry::reset() { | 110 | void OTInquiry::reset() { |
111 | 111 | ||
112 | SuccessfullyStarted = false; | 112 | SuccessfullyStarted = false; |
113 | SuccessfullyEnded = false; | 113 | SuccessfullyEnded = false; |
114 | //addrCache.clear(); | 114 | //addrCache.clear(); |
115 | //infoQueue.clear(); | 115 | //infoQueue.clear(); |
116 | } | 116 | } |
117 | 117 | ||
118 | 118 | ||
119 | void OTInquiry::onPeerFound( OTPeer * Peer, bool IsNew ) { | 119 | void OTInquiry::onPeerFound( OTPeer * Peer, bool IsNew ) { |
120 | emit peerFound( Peer, IsNew ); | 120 | emit peerFound( Peer, IsNew ); |
121 | } | 121 | } |
122 | 122 | ||
123 | void OTInquiry::slotInquiryTimeout() { | 123 | void OTInquiry::slotInquiryTimeout() { |
124 | emit error( tr( "Timeout while waiting for end of inquiry.") ); | 124 | emit error( tr( "Timeout while waiting for end of inquiry.") ); |
125 | } | 125 | } |
126 | 126 | ||
127 | void OTInquiry::slotHCIEvent(unsigned char eventCode, QByteArray buf) { | 127 | void OTInquiry::slotHCIEvent(unsigned char eventCode, QByteArray buf) { |
128 | 128 | ||
129 | owarn << "OTInquiry: hci packet received: eventCode=" | 129 | odebug << "OTInquiry: hci packet received: eventCode=" |
130 | << (unsigned int)eventCode | 130 | << (unsigned int)eventCode |
131 | << " packetLength=" | 131 | << " packetLength=" |
132 | << (unsigned int)buf.size() | 132 | << (unsigned int)buf.size() |
133 | << oendl; | 133 | << oendl; |
134 | 134 | ||
135 | unsigned char *data = (unsigned char*)buf.data(); | 135 | unsigned char *data = (unsigned char*)buf.data(); |
136 | switch (eventCode) { | 136 | switch (eventCode) { |
137 | case EVT_INQUIRY_COMPLETE: | 137 | case EVT_INQUIRY_COMPLETE: |
138 | { unsigned char status = data[0]; | 138 | { unsigned char status = data[0]; |
139 | owarn << "EVT_INQUIRY_COMPLETE status=" << status << oendl; | 139 | odebug << "EVT_INQUIRY_COMPLETE status=" << status << oendl; |
140 | InquiryTimeoutTimer->stop(); | 140 | InquiryTimeoutTimer->stop(); |
141 | if (status == 0) { | 141 | if (status == 0) { |
142 | if( SuccessfullyStarted == true) { | 142 | if( SuccessfullyStarted == true) { |
143 | owarn << "OTInquiry ended successfully" << oendl; | 143 | odebug << "OTInquiry ended successfully" << oendl; |
144 | SuccessfullyEnded = true; | 144 | SuccessfullyEnded = true; |
145 | } | 145 | } |
146 | emit finished(); | 146 | emit finished(); |
147 | } | 147 | } |
148 | else { | 148 | else { |
149 | emit error( tr( "OTInquiry completed with error (code %1)" ). | 149 | emit error( tr( "OTInquiry completed with error (code %1)" ). |
150 | arg(status)); | 150 | arg(status)); |
151 | } | 151 | } |
152 | } | 152 | } |
153 | break; | 153 | break; |
154 | case EVT_INQUIRY_RESULT: | 154 | case EVT_INQUIRY_RESULT: |
155 | { int numResults = data[0]; | 155 | { int numResults = data[0]; |
156 | OTPeer * P = 0; | 156 | OTPeer * P = 0; |
157 | bool IsNew; | 157 | bool IsNew; |
158 | OTDeviceAddress Addr; | 158 | OTDeviceAddress Addr; |
159 | QString N; | 159 | QString N; |
160 | 160 | ||
161 | inquiry_info *results = (inquiry_info*)(data+1); | 161 | inquiry_info *results = (inquiry_info*)(data+1); |
162 | 162 | ||
163 | for (int n=0; n<numResults; n++) { | 163 | for (int n=0; n<numResults; n++) { |
164 | Addr.setBDAddr( results[n].bdaddr ); | 164 | Addr.setBDAddr( results[n].bdaddr ); |
165 | 165 | ||
166 | owarn << "INQUIRY_RESULT: " | 166 | odebug << "INQUIRY_RESULT: " |
167 | << Addr.toString() | 167 | << Addr.toString() |
168 | << oendl; | 168 | << oendl; |
169 | 169 | ||
170 | P = Driver->gateway()->findPeer( Addr ); | 170 | P = Driver->gateway()->findPeer( Addr ); |
171 | 171 | ||
172 | if( P ) { | 172 | if( P ) { |
173 | // peer known | 173 | // peer known |
174 | if( P->state() != OTPeer::Peer_Up ) { | 174 | if( P->state() != OTPeer::Peer_Up ) { |
175 | P->setState( OTPeer::Peer_Up ); | 175 | P->setState( OTPeer::Peer_Up ); |
176 | } | 176 | } |
177 | IsNew = 0; | 177 | IsNew = 0; |
178 | } else { | 178 | } else { |
179 | IsNew = 1; | 179 | IsNew = 1; |
180 | // push the address to the address queue | 180 | // push the address to the address queue |
181 | // where it can be consumed by nextNeighbour() | 181 | // where it can be consumed by nextNeighbour() |
182 | P = new OTPeer( Driver->gateway() ); | 182 | P = new OTPeer( Driver->gateway() ); |
183 | P->setState( OTPeer::Peer_Up ); // we just detected it | 183 | P->setState( OTPeer::Peer_Up ); // we just detected it |
184 | P->setAddress( Addr ); | 184 | P->setAddress( Addr ); |
185 | //if( addrCache.find(info.addr) == addrCache.end()) { | 185 | //if( addrCache.find(info.addr) == addrCache.end()) { |
186 | // addrCache.insert(info.addr); | 186 | // addrCache.insert(info.addr); |
187 | 187 | ||
188 | P->setDeviceClass( (results[n].dev_class[0] << 16) | | 188 | P->setDeviceClass( (results[n].dev_class[0] << 16) | |
189 | (results[n].dev_class[1] << 8) | | 189 | (results[n].dev_class[1] << 8) | |
190 | (results[n].dev_class[2] << 0) ); | 190 | (results[n].dev_class[2] << 0) ); |
191 | // infoQueue.push_back(info); | 191 | // infoQueue.push_back(info); |
192 | P->setName( Driver->getPeerName( Addr ) ); | 192 | P->setName( Driver->getPeerName( Addr ) ); |
193 | } | 193 | } |
194 | 194 | ||
195 | // call the handler. Emits a signal if not overwritten | 195 | // call the handler. Emits a signal if not overwritten |
196 | onPeerFound( P, IsNew ); | 196 | onPeerFound( P, IsNew ); |
197 | 197 | ||
198 | // } | 198 | // } |
199 | } | 199 | } |
200 | } | 200 | } |
201 | break; | 201 | break; |
202 | case EVT_CMD_STATUS : | 202 | case EVT_CMD_STATUS : |
203 | { int status = data[0]; | 203 | { int status = data[0]; |
204 | int numHciCmdPkts = data[1]; | 204 | int numHciCmdPkts = data[1]; |
205 | int cmdOpcode = *((uint16_t*)(data+2)); | 205 | int cmdOpcode = *((uint16_t*)(data+2)); |
206 | owarn << "EVT_CMD_STATUS status=" | 206 | odebug << "EVT_CMD_STATUS status=" |
207 | << status | 207 | << status |
208 | << " numPkts=" | 208 | << " numPkts=" |
209 | << numHciCmdPkts | 209 | << numHciCmdPkts |
210 | << " cmdOpcode=" | 210 | << " cmdOpcode=" |
211 | << cmdOpcode | 211 | << cmdOpcode |
212 | << oendl; | 212 | << oendl; |
213 | if (cmdOpcode == OCF_INQUIRY) { | 213 | if (cmdOpcode == OCF_INQUIRY) { |
214 | 214 | ||
215 | } | 215 | } |
216 | } | 216 | } |
217 | break; | 217 | break; |
218 | } | 218 | } |
219 | } | 219 | } |
diff --git a/noncore/settings/networksettings2/opietooth2/OTPeer.cpp b/noncore/settings/networksettings2/opietooth2/OTPeer.cpp index 0d7e943..2272f04 100644 --- a/noncore/settings/networksettings2/opietooth2/OTPeer.cpp +++ b/noncore/settings/networksettings2/opietooth2/OTPeer.cpp | |||
@@ -30,78 +30,78 @@ using namespace Opietooth2; | |||
30 | 30 | ||
31 | OTPeer::OTPeer( OTGateway * _OT ) { | 31 | OTPeer::OTPeer( OTGateway * _OT ) { |
32 | OT = _OT; | 32 | OT = _OT; |
33 | State = Peer_Unknown; | 33 | State = Peer_Unknown; |
34 | ConnectedTo = 0; | 34 | ConnectedTo = 0; |
35 | } | 35 | } |
36 | 36 | ||
37 | OTPeer::OTPeer( QTextStream & TS, OTGateway * _OT ) { | 37 | OTPeer::OTPeer( QTextStream & TS, OTGateway * _OT ) { |
38 | OT = _OT; | 38 | OT = _OT; |
39 | State = Peer_Unknown; | 39 | State = Peer_Unknown; |
40 | ConnectedTo = 0; | 40 | ConnectedTo = 0; |
41 | 41 | ||
42 | load( TS ); | 42 | load( TS ); |
43 | } | 43 | } |
44 | 44 | ||
45 | OTPeer::~OTPeer( ) { | 45 | OTPeer::~OTPeer( ) { |
46 | 46 | ||
47 | } | 47 | } |
48 | 48 | ||
49 | void OTPeer::updateServices( void ) { | 49 | void OTPeer::updateServices( void ) { |
50 | sdp_session_t *session; | 50 | sdp_session_t *session; |
51 | 51 | ||
52 | serviceList.clear(); | 52 | serviceList.clear(); |
53 | 53 | ||
54 | owarn << "Get services from " << Addr.toString() << oendl; | 54 | odebug << "Get services from " << Addr.toString() << oendl; |
55 | 55 | ||
56 | session = sdp_connect( &(OTDeviceAddress::any.getBDAddr()), | 56 | session = sdp_connect( &(OTDeviceAddress::any.getBDAddr()), |
57 | &(Addr.getBDAddr()), | 57 | &(Addr.getBDAddr()), |
58 | 0); | 58 | 0); |
59 | 59 | ||
60 | if (!session) { | 60 | if (!session) { |
61 | owarn << "sdp_connect(" | 61 | odebug << "sdp_connect(" |
62 | << Addr.toString() | 62 | << Addr.toString() |
63 | << ") failed" | 63 | << ") failed" |
64 | << oendl; | 64 | << oendl; |
65 | return; // error | 65 | return; // error |
66 | } | 66 | } |
67 | 67 | ||
68 | uint32_t range = 0x0000ffff; | 68 | uint32_t range = 0x0000ffff; |
69 | sdp_list_t* attrId = sdp_list_append(0, &range); | 69 | sdp_list_t* attrId = sdp_list_append(0, &range); |
70 | 70 | ||
71 | // search all public features | 71 | // search all public features |
72 | uuid_t grp; | 72 | uuid_t grp; |
73 | sdp_uuid16_create( &grp, PUBLIC_BROWSE_GROUP ); | 73 | sdp_uuid16_create( &grp, PUBLIC_BROWSE_GROUP ); |
74 | sdp_list_t * search = sdp_list_append(0, &grp ); | 74 | sdp_list_t * search = sdp_list_append(0, &grp ); |
75 | 75 | ||
76 | // get data from peer | 76 | // get data from peer |
77 | sdp_list_t* seq; | 77 | sdp_list_t* seq; |
78 | if (sdp_service_search_attr_req( session, | 78 | if (sdp_service_search_attr_req( session, |
79 | search, | 79 | search, |
80 | SDP_ATTR_REQ_RANGE, | 80 | SDP_ATTR_REQ_RANGE, |
81 | attrId, | 81 | attrId, |
82 | &seq ) ) { | 82 | &seq ) ) { |
83 | owarn << "Service Search failed" << oendl; | 83 | odebug << "Service Search failed" << oendl; |
84 | sdp_close(session); | 84 | sdp_close(session); |
85 | return; | 85 | return; |
86 | } | 86 | } |
87 | 87 | ||
88 | sdp_list_free(attrId, 0); | 88 | sdp_list_free(attrId, 0); |
89 | sdp_list_free(search, 0); | 89 | sdp_list_free(search, 0); |
90 | 90 | ||
91 | // process result | 91 | // process result |
92 | sdp_list_t* next = NULL; | 92 | sdp_list_t* next = NULL; |
93 | 93 | ||
94 | for (; seq; seq = next) { | 94 | for (; seq; seq = next) { |
95 | sdp_record_t *rec = (sdp_record_t *) seq->data; | 95 | sdp_record_t *rec = (sdp_record_t *) seq->data; |
96 | 96 | ||
97 | sdp_list_t* attrlist = rec->attrlist; | 97 | sdp_list_t* attrlist = rec->attrlist; |
98 | AttributeVector alist; | 98 | AttributeVector alist; |
99 | OTSDPService * service; | 99 | OTSDPService * service; |
100 | 100 | ||
101 | service = new OTSDPService(); | 101 | service = new OTSDPService(); |
102 | 102 | ||
103 | for (; attrlist; attrlist = attrlist->next) { | 103 | for (; attrlist; attrlist = attrlist->next) { |
104 | int attrID = ((sdp_data_t*)(attrlist->data))->attrId; | 104 | int attrID = ((sdp_data_t*)(attrlist->data))->attrId; |
105 | service->addAttribute( | 105 | service->addAttribute( |
106 | attrID, | 106 | attrID, |
107 | new OTSDPAttribute( (sdp_data_t*)(attrlist->data) ) | 107 | new OTSDPAttribute( (sdp_data_t*)(attrlist->data) ) |
@@ -156,49 +156,49 @@ void OTPeer::load( QTextStream & TS ) { | |||
156 | QString S; | 156 | QString S; |
157 | S = TS.readLine(); | 157 | S = TS.readLine(); |
158 | setAddress( OTDeviceAddress( S.mid( 7 ) ) ); | 158 | setAddress( OTDeviceAddress( S.mid( 7 ) ) ); |
159 | 159 | ||
160 | S = TS.readLine(); | 160 | S = TS.readLine(); |
161 | setName( S.mid( 5 ) ); | 161 | setName( S.mid( 5 ) ); |
162 | 162 | ||
163 | S = TS.readLine(); | 163 | S = TS.readLine(); |
164 | setDeviceClass( S.mid( 6 ).toLong() ); | 164 | setDeviceClass( S.mid( 6 ).toLong() ); |
165 | } | 165 | } |
166 | 166 | ||
167 | #define MAGICNR -99999 | 167 | #define MAGICNR -99999 |
168 | #define POLLDELAY 1000 | 168 | #define POLLDELAY 1000 |
169 | #define PREMAGICNR (MAGICNR+POLLDELAY) | 169 | #define PREMAGICNR (MAGICNR+POLLDELAY) |
170 | 170 | ||
171 | void OTPeer::findOutState( int timeoutInSec, bool Force ) { | 171 | void OTPeer::findOutState( int timeoutInSec, bool Force ) { |
172 | ProbeFD = -1; | 172 | ProbeFD = -1; |
173 | if( Force && ConnectedTo == 0 ) { | 173 | if( Force && ConnectedTo == 0 ) { |
174 | State = OTPeer::Peer_Unknown; | 174 | State = OTPeer::Peer_Unknown; |
175 | } // else keep state or is connected to us | 175 | } // else keep state or is connected to us |
176 | 176 | ||
177 | if( State == OTPeer::Peer_Unknown ) { | 177 | if( State == OTPeer::Peer_Unknown ) { |
178 | ProbePhase = 0; | 178 | ProbePhase = 0; |
179 | ProbeTimeout = timeoutInSec*1000; | 179 | ProbeTimeout = timeoutInSec*1000; |
180 | owarn << "Ping " << address().toString() << oendl; | 180 | odebug << "Ping " << address().toString() << oendl; |
181 | startTimer( POLLDELAY ); | 181 | startTimer( POLLDELAY ); |
182 | } else { | 182 | } else { |
183 | ProbeTimeout = 0; | 183 | ProbeTimeout = 0; |
184 | startTimer( 0 ); | 184 | startTimer( 0 ); |
185 | } | 185 | } |
186 | } | 186 | } |
187 | 187 | ||
188 | #define PINGSIZE 20 | 188 | #define PINGSIZE 20 |
189 | void OTPeer::timerEvent( QTimerEvent * ev ) { | 189 | void OTPeer::timerEvent( QTimerEvent * ev ) { |
190 | 190 | ||
191 | ProbeTimeout -= POLLDELAY; | 191 | ProbeTimeout -= POLLDELAY; |
192 | 192 | ||
193 | if( State == OTPeer::Peer_Unknown ) { | 193 | if( State == OTPeer::Peer_Unknown ) { |
194 | switch( ProbePhase ) { | 194 | switch( ProbePhase ) { |
195 | case 0 : // connect nonblock | 195 | case 0 : // connect nonblock |
196 | { struct sockaddr_l2 addr; | 196 | { struct sockaddr_l2 addr; |
197 | 197 | ||
198 | if (( ProbeFD = ::socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_L2CAP)) < 0) { | 198 | if (( ProbeFD = ::socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_L2CAP)) < 0) { |
199 | ProbeTimeout = 0; | 199 | ProbeTimeout = 0; |
200 | break; | 200 | break; |
201 | } | 201 | } |
202 | 202 | ||
203 | memset(&addr, 0, sizeof(addr)); | 203 | memset(&addr, 0, sizeof(addr)); |
204 | 204 | ||
@@ -214,144 +214,144 @@ void OTPeer::timerEvent( QTimerEvent * ev ) { | |||
214 | if( ::fcntl( ProbeFD, F_SETFL, O_NONBLOCK ) < 0 ) { | 214 | if( ::fcntl( ProbeFD, F_SETFL, O_NONBLOCK ) < 0 ) { |
215 | ProbeTimeout = 0; | 215 | ProbeTimeout = 0; |
216 | break; | 216 | break; |
217 | } | 217 | } |
218 | 218 | ||
219 | // to this peer | 219 | // to this peer |
220 | addr.l2_bdaddr = address().getBDAddr(); | 220 | addr.l2_bdaddr = address().getBDAddr(); |
221 | if( ::connect( ProbeFD, (struct sockaddr *) &addr, sizeof(addr)) < 0) { | 221 | if( ::connect( ProbeFD, (struct sockaddr *) &addr, sizeof(addr)) < 0) { |
222 | if( errno != EAGAIN && errno != EINPROGRESS ) { | 222 | if( errno != EAGAIN && errno != EINPROGRESS ) { |
223 | ProbeTimeout = 0; | 223 | ProbeTimeout = 0; |
224 | break; | 224 | break; |
225 | } // wait for connect to fail or succeed | 225 | } // wait for connect to fail or succeed |
226 | } | 226 | } |
227 | } | 227 | } |
228 | ProbePhase = 1; // wait for connect | 228 | ProbePhase = 1; // wait for connect |
229 | break; | 229 | break; |
230 | case 1 : | 230 | case 1 : |
231 | { struct pollfd pf[1]; | 231 | { struct pollfd pf[1]; |
232 | char buf[L2CAP_CMD_HDR_SIZE + PINGSIZE + 20]; | 232 | char buf[L2CAP_CMD_HDR_SIZE + PINGSIZE + 20]; |
233 | int n; | 233 | int n; |
234 | 234 | ||
235 | pf[0].fd = ProbeFD; | 235 | pf[0].fd = ProbeFD; |
236 | pf[0].events = POLLOUT; | 236 | pf[0].events = POLLOUT; |
237 | if( (n = ::poll(pf, 1, 0)) < 0 ) { | 237 | if( (n = ::poll(pf, 1, 0)) < 0 ) { |
238 | owarn << address().toString() | 238 | odebug << address().toString() |
239 | << " : errno " | 239 | << " : errno " |
240 | << errno | 240 | << errno |
241 | << " " | 241 | << " " |
242 | << strerror(errno)<<oendl; | 242 | << strerror(errno)<<oendl; |
243 | ProbeTimeout = 0; | 243 | ProbeTimeout = 0; |
244 | break; | 244 | break; |
245 | } | 245 | } |
246 | 246 | ||
247 | if( ! n ) { | 247 | if( ! n ) { |
248 | // not ready -> try again | 248 | // not ready -> try again |
249 | break; | 249 | break; |
250 | } | 250 | } |
251 | 251 | ||
252 | // send ping | 252 | // send ping |
253 | for( unsigned int i = L2CAP_CMD_HDR_SIZE; i < sizeof(buf); i++) | 253 | for( unsigned int i = L2CAP_CMD_HDR_SIZE; i < sizeof(buf); i++) |
254 | buf[i] = (i % 40) + 'A'; | 254 | buf[i] = (i % 40) + 'A'; |
255 | 255 | ||
256 | l2cap_cmd_hdr *cmd = (l2cap_cmd_hdr *) buf; | 256 | l2cap_cmd_hdr *cmd = (l2cap_cmd_hdr *) buf; |
257 | 257 | ||
258 | /* Build command header */ | 258 | /* Build command header */ |
259 | cmd->code = L2CAP_ECHO_REQ; | 259 | cmd->code = L2CAP_ECHO_REQ; |
260 | cmd->ident = *(char *)this; // get some byte | 260 | cmd->ident = *(char *)this; // get some byte |
261 | cmd->len = PINGSIZE; | 261 | cmd->len = PINGSIZE; |
262 | 262 | ||
263 | /* Send Echo Request */ | 263 | /* Send Echo Request */ |
264 | if( ::send(ProbeFD, buf, PINGSIZE + L2CAP_CMD_HDR_SIZE, 0) <= 0) { | 264 | if( ::send(ProbeFD, buf, PINGSIZE + L2CAP_CMD_HDR_SIZE, 0) <= 0) { |
265 | if( errno == EACCES ) { | 265 | if( errno == EACCES ) { |
266 | // permission denied means that we could not | 266 | // permission denied means that we could not |
267 | // connect because the device does not allow us | 267 | // connect because the device does not allow us |
268 | // but it is UP | 268 | // but it is UP |
269 | owarn << address().toString() | 269 | odebug << address().toString() |
270 | << " good send error " | 270 | << " good send error " |
271 | << errno | 271 | << errno |
272 | << " " | 272 | << " " |
273 | << strerror( errno) | 273 | << strerror( errno) |
274 | << oendl; | 274 | << oendl; |
275 | State = OTPeer::Peer_Up; | 275 | State = OTPeer::Peer_Up; |
276 | ProbeTimeout = 0; | 276 | ProbeTimeout = 0; |
277 | break; | 277 | break; |
278 | } else if( errno != EBUSY ) { | 278 | } else if( errno != EBUSY ) { |
279 | owarn << address().toString() | 279 | odebug << address().toString() |
280 | << " : errno " | 280 | << " : errno " |
281 | << errno | 281 | << errno |
282 | << " " | 282 | << " " |
283 | << strerror(errno) | 283 | << strerror(errno) |
284 | << oendl; | 284 | << oendl; |
285 | ProbeTimeout = 0; | 285 | ProbeTimeout = 0; |
286 | break; | 286 | break; |
287 | } // else want some more | 287 | } // else want some more |
288 | } | 288 | } |
289 | 289 | ||
290 | ProbePhase = 2; // wait for ping reply | 290 | ProbePhase = 2; // wait for ping reply |
291 | } | 291 | } |
292 | break; | 292 | break; |
293 | case 2 : // wait for reply | 293 | case 2 : // wait for reply |
294 | { struct pollfd pf[1]; | 294 | { struct pollfd pf[1]; |
295 | char buf[L2CAP_CMD_HDR_SIZE + PINGSIZE + 20]; | 295 | char buf[L2CAP_CMD_HDR_SIZE + PINGSIZE + 20]; |
296 | l2cap_cmd_hdr *cmd = (l2cap_cmd_hdr *) buf; | 296 | l2cap_cmd_hdr *cmd = (l2cap_cmd_hdr *) buf; |
297 | int n; | 297 | int n; |
298 | 298 | ||
299 | pf[0].fd = ProbeFD; | 299 | pf[0].fd = ProbeFD; |
300 | pf[0].events = POLLIN; | 300 | pf[0].events = POLLIN; |
301 | if( (n = ::poll(pf, 1, 0)) < 0 ) { | 301 | if( (n = ::poll(pf, 1, 0)) < 0 ) { |
302 | owarn << address().toString() | 302 | odebug << address().toString() |
303 | << " : errno " | 303 | << " : errno " |
304 | << errno | 304 | << errno |
305 | << " " | 305 | << " " |
306 | << strerror(errno) | 306 | << strerror(errno) |
307 | <<oendl; | 307 | <<oendl; |
308 | ProbeTimeout = 0; | 308 | ProbeTimeout = 0; |
309 | break; | 309 | break; |
310 | } | 310 | } |
311 | 311 | ||
312 | if( ! n ) { | 312 | if( ! n ) { |
313 | // not ready -> try again | 313 | // not ready -> try again |
314 | break; | 314 | break; |
315 | } | 315 | } |
316 | 316 | ||
317 | if( (n = ::recv( ProbeFD, buf, sizeof(buf), 0)) < 0) { | 317 | if( (n = ::recv( ProbeFD, buf, sizeof(buf), 0)) < 0) { |
318 | owarn << address().toString() | 318 | odebug << address().toString() |
319 | << "errno " | 319 | << "errno " |
320 | << errno | 320 | << errno |
321 | << " " | 321 | << " " |
322 | << strerror(errno) | 322 | << strerror(errno) |
323 | << oendl; | 323 | << oendl; |
324 | ProbeTimeout = 0; | 324 | ProbeTimeout = 0; |
325 | break; | 325 | break; |
326 | } | 326 | } |
327 | 327 | ||
328 | /* Check for our id */ | 328 | /* Check for our id */ |
329 | if( cmd->ident != *(char *)this ) | 329 | if( cmd->ident != *(char *)this ) |
330 | // not our reply | 330 | // not our reply |
331 | break; | 331 | break; |
332 | 332 | ||
333 | owarn << "reply from " | 333 | odebug << "reply from " |
334 | << address().toString() | 334 | << address().toString() |
335 | << oendl; | 335 | << oendl; |
336 | // whatever reply we get is a valid reply | 336 | // whatever reply we get is a valid reply |
337 | State = OTPeer::Peer_Up; | 337 | State = OTPeer::Peer_Up; |
338 | ProbeTimeout = 0; | 338 | ProbeTimeout = 0; |
339 | } | 339 | } |
340 | break; | 340 | break; |
341 | } | 341 | } |
342 | 342 | ||
343 | if( State != OTPeer::Peer_Unknown ) { | 343 | if( State != OTPeer::Peer_Unknown ) { |
344 | ProbeTimeout = 0; | 344 | ProbeTimeout = 0; |
345 | } | 345 | } |
346 | } | 346 | } |
347 | 347 | ||
348 | if( ProbeTimeout <= 0 ) { | 348 | if( ProbeTimeout <= 0 ) { |
349 | // regular timeout | 349 | // regular timeout |
350 | emit peerStateReport( this ); | 350 | emit peerStateReport( this ); |
351 | if( State == Peer_Unknown ) { | 351 | if( State == Peer_Unknown ) { |
352 | State = Peer_Down; | 352 | State = Peer_Down; |
353 | } | 353 | } |
354 | if( ProbeFD >= 0 ) { | 354 | if( ProbeFD >= 0 ) { |
355 | // requested to stop by caller -> stop probing | 355 | // requested to stop by caller -> stop probing |
356 | ::close( ProbeFD ); | 356 | ::close( ProbeFD ); |
357 | } | 357 | } |
diff --git a/noncore/settings/networksettings2/opietooth2/Opietooth.cpp b/noncore/settings/networksettings2/opietooth2/Opietooth.cpp index b14cc2f..8323549 100644 --- a/noncore/settings/networksettings2/opietooth2/Opietooth.cpp +++ b/noncore/settings/networksettings2/opietooth2/Opietooth.cpp | |||
@@ -516,118 +516,118 @@ void OTScan::SLOT_DoScan( bool DoIt ) { | |||
516 | // double clicked on a device | 516 | // double clicked on a device |
517 | void OTScan::SLOT_Selected( QListViewItem * it ) { | 517 | void OTScan::SLOT_Selected( QListViewItem * it ) { |
518 | if( ! it ) | 518 | if( ! it ) |
519 | return; | 519 | return; |
520 | 520 | ||
521 | if( Filter.count() > 0 ) { | 521 | if( Filter.count() > 0 ) { |
522 | // filter on service | 522 | // filter on service |
523 | if( it->depth() == 0 ) { | 523 | if( it->depth() == 0 ) { |
524 | // select a service and not a device | 524 | // select a service and not a device |
525 | return; | 525 | return; |
526 | } | 526 | } |
527 | 527 | ||
528 | // store result | 528 | // store result |
529 | SelectedPeer = ((PeerLVI *)it->parent())->peer(); | 529 | SelectedPeer = ((PeerLVI *)it->parent())->peer(); |
530 | SelectedChannel = ((ChannelLVI *)it)->channel(); | 530 | SelectedChannel = ((ChannelLVI *)it)->channel(); |
531 | } else { | 531 | } else { |
532 | // click on device | 532 | // click on device |
533 | if( it->depth() != 0 ) { | 533 | if( it->depth() != 0 ) { |
534 | return; | 534 | return; |
535 | } | 535 | } |
536 | 536 | ||
537 | SelectedPeer = ((PeerLVI *)it)->peer(); | 537 | SelectedPeer = ((PeerLVI *)it)->peer(); |
538 | SelectedChannel = 0; | 538 | SelectedChannel = 0; |
539 | } | 539 | } |
540 | owarn << "Selected " << SelectedPeer->address().toString() << | 540 | odebug << "Selected " << SelectedPeer->address().toString() << |
541 | " Channel " << SelectedChannel << oendl; | 541 | " Channel " << SelectedChannel << oendl; |
542 | emit selected(); | 542 | emit selected(); |
543 | } | 543 | } |
544 | 544 | ||
545 | void OTScan::SLOT_FinishedDetecting( ) { | 545 | void OTScan::SLOT_FinishedDetecting( ) { |
546 | scanMode( false ); | 546 | scanMode( false ); |
547 | } | 547 | } |
548 | 548 | ||
549 | void OTScan::SLOT_CleanupOld( ) { | 549 | void OTScan::SLOT_CleanupOld( ) { |
550 | 550 | ||
551 | // iterate over all peers and find those that | 551 | // iterate over all peers and find those that |
552 | // are down and have no pairing info | 552 | // are down and have no pairing info |
553 | OTPeer * TheP; | 553 | OTPeer * TheP; |
554 | const LinkKeyArray & Keys = OT->getLinkKeys(); | 554 | const LinkKeyArray & Keys = OT->getLinkKeys(); |
555 | 555 | ||
556 | QListViewItem * Lit = DetectedPeers_LV->firstChild(); | 556 | QListViewItem * Lit = DetectedPeers_LV->firstChild(); |
557 | while( Lit ) { | 557 | while( Lit ) { |
558 | TheP = ((PeerLVI *)Lit)->peer(); | 558 | TheP = ((PeerLVI *)Lit)->peer(); |
559 | if( TheP->state() == OTPeer::Peer_Down ) { | 559 | if( TheP->state() == OTPeer::Peer_Down ) { |
560 | unsigned int k; | 560 | unsigned int k; |
561 | 561 | ||
562 | // what about linkkeys ? | 562 | // what about linkkeys ? |
563 | for( k = 0; k < Keys.count(); k ++ ) { | 563 | for( k = 0; k < Keys.count(); k ++ ) { |
564 | if( TheP->address() == Keys[k].to() || | 564 | if( TheP->address() == Keys[k].to() || |
565 | TheP->address() == Keys[k].from() | 565 | TheP->address() == Keys[k].from() |
566 | ) { | 566 | ) { |
567 | // part of linkkey | 567 | // part of linkkey |
568 | owarn << "LINKKEY " << TheP->address().toString() << oendl; | 568 | odebug << "LINKKEY " << TheP->address().toString() << oendl; |
569 | break; | 569 | break; |
570 | } | 570 | } |
571 | } | 571 | } |
572 | 572 | ||
573 | if( k == Keys.count() ) { | 573 | if( k == Keys.count() ) { |
574 | owarn << "RM LINKKEY " << TheP->address().toString() << oendl; | 574 | odebug << "RM LINKKEY " << TheP->address().toString() << oendl; |
575 | // not found -> remember to remove this peer | 575 | // not found -> remember to remove this peer |
576 | QListViewItem * Nit; | 576 | QListViewItem * Nit; |
577 | OT->removePeer( TheP ); | 577 | OT->removePeer( TheP ); |
578 | Nit = Lit->nextSibling(); | 578 | Nit = Lit->nextSibling(); |
579 | delete Lit; | 579 | delete Lit; |
580 | Lit = Nit; | 580 | Lit = Nit; |
581 | continue; | 581 | continue; |
582 | } | 582 | } |
583 | } else { | 583 | } else { |
584 | owarn << "NODOWN " << TheP->address().toString() << oendl; | 584 | odebug << "NODOWN " << TheP->address().toString() << oendl; |
585 | } | 585 | } |
586 | 586 | ||
587 | Lit = Lit->nextSibling(); | 587 | Lit = Lit->nextSibling(); |
588 | } | 588 | } |
589 | } | 589 | } |
590 | 590 | ||
591 | void OTScan::SLOT_NewPeer( OTPeer * P, bool IsNew ){ | 591 | void OTScan::SLOT_NewPeer( OTPeer * P, bool IsNew ){ |
592 | PeerLVI * it = 0; | 592 | PeerLVI * it = 0; |
593 | 593 | ||
594 | if( IsNew ) { | 594 | if( IsNew ) { |
595 | it = new PeerLVI( P, DetectedPeers_LV ); | 595 | it = new PeerLVI( P, DetectedPeers_LV ); |
596 | } else { | 596 | } else { |
597 | // find peer in table | 597 | // find peer in table |
598 | QListViewItem * Lit = DetectedPeers_LV->firstChild(); | 598 | QListViewItem * Lit = DetectedPeers_LV->firstChild(); |
599 | while( Lit ) { | 599 | while( Lit ) { |
600 | if( ((PeerLVI *)Lit)->peer() == P ) { | 600 | if( ((PeerLVI *)Lit)->peer() == P ) { |
601 | // this item | 601 | // this item |
602 | it = (PeerLVI *)Lit; | 602 | it = (PeerLVI *)Lit; |
603 | break; | 603 | break; |
604 | } | 604 | } |
605 | Lit = Lit->nextSibling(); | 605 | Lit = Lit->nextSibling(); |
606 | } | 606 | } |
607 | 607 | ||
608 | if( ! it ) { | 608 | if( ! it ) { |
609 | owarn << "Should not occur" << oendl; | 609 | odebug << "Should not occur" << oendl; |
610 | return; | 610 | return; |
611 | } | 611 | } |
612 | } | 612 | } |
613 | 613 | ||
614 | // update/show info | 614 | // update/show info |
615 | it->setText( 0, P->name() ); | 615 | it->setText( 0, P->name() ); |
616 | it->setPixmap(0, Icons->deviceIcon( | 616 | it->setPixmap(0, Icons->deviceIcon( |
617 | OT->deviceTypeToName( P->deviceClass() ) ) ); | 617 | OT->deviceTypeToName( P->deviceClass() ) ) ); |
618 | 618 | ||
619 | // tell peer to report its state async | 619 | // tell peer to report its state async |
620 | connect( P, | 620 | connect( P, |
621 | SIGNAL( peerStateReport( OTPeer *)), | 621 | SIGNAL( peerStateReport( OTPeer *)), |
622 | this, | 622 | this, |
623 | SLOT( SLOT_PeerState( OTPeer *)) | 623 | SLOT( SLOT_PeerState( OTPeer *)) |
624 | ); | 624 | ); |
625 | 625 | ||
626 | if( IsNew ) { | 626 | if( IsNew ) { |
627 | // find state | 627 | // find state |
628 | refreshState( (PeerLVI *)it, 1 ); | 628 | refreshState( (PeerLVI *)it, 1 ); |
629 | } else { | 629 | } else { |
630 | // update staet | 630 | // update staet |
631 | SLOT_PeerState( P ); | 631 | SLOT_PeerState( P ); |
632 | } | 632 | } |
633 | } | 633 | } |
@@ -908,49 +908,49 @@ OTManage::OTManage( QWidget * parent, OTIcons * _IC ) : | |||
908 | 908 | ||
909 | AllDrivers_LV->header()->hide(); | 909 | AllDrivers_LV->header()->hide(); |
910 | } | 910 | } |
911 | 911 | ||
912 | OTManage::~OTManage() { | 912 | OTManage::~OTManage() { |
913 | if( MyIcons ) | 913 | if( MyIcons ) |
914 | delete Icons; | 914 | delete Icons; |
915 | OTGateway::releaseOTGateway(); | 915 | OTGateway::releaseOTGateway(); |
916 | } | 916 | } |
917 | 917 | ||
918 | void OTManage::SLOT_ShowDriver( QListViewItem * It ) { | 918 | void OTManage::SLOT_ShowDriver( QListViewItem * It ) { |
919 | if( It == 0 || It->depth() > 0 ) | 919 | if( It == 0 || It->depth() > 0 ) |
920 | // not toplevel | 920 | // not toplevel |
921 | return; | 921 | return; |
922 | 922 | ||
923 | DriverLVI * it = (DriverLVI *) It; | 923 | DriverLVI * it = (DriverLVI *) It; |
924 | DriverIsUp_CB->setChecked( it->driver()->isUp() ); | 924 | DriverIsUp_CB->setChecked( it->driver()->isUp() ); |
925 | } | 925 | } |
926 | 926 | ||
927 | void OTManage::SLOT_UpDriver( bool Up ) { | 927 | void OTManage::SLOT_UpDriver( bool Up ) { |
928 | QListViewItem * it = AllDrivers_LV->firstChild(); | 928 | QListViewItem * it = AllDrivers_LV->firstChild(); |
929 | while( it ) { | 929 | while( it ) { |
930 | if( it->isSelected() ) { | 930 | if( it->isSelected() ) { |
931 | OTDriver * D = ((DriverLVI *)it)->driver(); | 931 | OTDriver * D = ((DriverLVI *)it)->driver(); |
932 | owarn << "UP driver " << D->devname() << oendl; | 932 | odebug << "UP driver " << D->devname() << oendl; |
933 | // this | 933 | // this |
934 | D->setUp( Up ); | 934 | D->setUp( Up ); |
935 | return; | 935 | return; |
936 | } | 936 | } |
937 | it = it->nextSibling(); | 937 | it = it->nextSibling(); |
938 | } | 938 | } |
939 | } | 939 | } |
940 | 940 | ||
941 | void OTManage::SLOT_StateChange( OTDriver * D, bool Up ) { | 941 | void OTManage::SLOT_StateChange( OTDriver * D, bool Up ) { |
942 | QListViewItem * it = AllDrivers_LV->firstChild(); | 942 | QListViewItem * it = AllDrivers_LV->firstChild(); |
943 | while( it ) { | 943 | while( it ) { |
944 | if( ((DriverLVI *)it)->driver() == D ) { | 944 | if( ((DriverLVI *)it)->driver() == D ) { |
945 | it->setPixmap( 0, | 945 | it->setPixmap( 0, |
946 | Icons->loadPixmap( ( Up ) ? "bluezon" : "bluezoff" ) ); | 946 | Icons->loadPixmap( ( Up ) ? "bluezon" : "bluezoff" ) ); |
947 | return; | 947 | return; |
948 | } | 948 | } |
949 | it = it->nextSibling(); | 949 | it = it->nextSibling(); |
950 | } | 950 | } |
951 | } | 951 | } |
952 | 952 | ||
953 | void OTManage::SLOT_DriverListChanged( ) { | 953 | void OTManage::SLOT_DriverListChanged( ) { |
954 | DriverLVI * It; | 954 | DriverLVI * It; |
955 | QListViewItem * Sub; | 955 | QListViewItem * Sub; |
956 | QListViewItem * First = 0; | 956 | QListViewItem * First = 0; |
diff --git a/noncore/settings/networksettings2/opietooth2/config.in b/noncore/settings/networksettings2/opietooth2/config.in index 720f49a..084e8c0 100644 --- a/noncore/settings/networksettings2/opietooth2/config.in +++ b/noncore/settings/networksettings2/opietooth2/config.in | |||
@@ -1,5 +1,5 @@ | |||
1 | config NS2OPIETOOTH | 1 | config NS2OPIETOOTH |
2 | boolean "opie-networksettings2 bluetooth library" | 2 | boolean "Opietooth2 bluetooth library" |
3 | default "y" | 3 | default "y" |
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE | 4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBBLUEZ_DEP && NS2CORE |
5 | 5 | ||
diff --git a/noncore/settings/networksettings2/opietooth2/libopietooth2.postinst b/noncore/settings/networksettings2/opietooth2/libopietooth2.postinst index cd605c2..2713c61 100755 --- a/noncore/settings/networksettings2/opietooth2/libopietooth2.postinst +++ b/noncore/settings/networksettings2/opietooth2/libopietooth2.postinst | |||
@@ -1,10 +1,10 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | 2 | ||
3 | QTPB=/opt/QtPalmtop/bin | 3 | QTPB=/opt/QtPalmtop/bin |
4 | 4 | ||
5 | [ ! -L ${QTPB}/networksettings2-opietooth ] && ln -sf ${QTPB}/networksettings2 ${QTPB}/networksettings2-opietooth | 5 | [ ! -L ${QTPB}/networksettings2-opietooth ] && ln -sf ${QTPB}/networksettings2 ${QTPB}/networksettings2-opietooth |
6 | 6 | ||
7 | # qcop QPE/Taskbar "linkChanged(opietooth)" | 7 | # qcop QPE/Taskbar "linkChanged(opietooth)" |
8 | qcop QPE/Taskbar "reloadApps()" | 8 | ${QTPB}/qcop QPE/Taskbar "reloadApps()" |
9 | 9 | ||
10 | exit 0 | 10 | exit 0 |
diff --git a/noncore/settings/networksettings2/opietooth2/opietooth2.pro b/noncore/settings/networksettings2/opietooth2/opietooth2.pro index e0057a9..16277cf 100644 --- a/noncore/settings/networksettings2/opietooth2/opietooth2.pro +++ b/noncore/settings/networksettings2/opietooth2/opietooth2.pro | |||
@@ -14,24 +14,31 @@ HEADERS = OTDevice.h \ | |||
14 | OTSDPService.h \ | 14 | OTSDPService.h \ |
15 | OTPeer.h \ | 15 | OTPeer.h \ |
16 | Opietooth.h | 16 | Opietooth.h |
17 | SOURCES = OTDevice.cpp \ | 17 | SOURCES = OTDevice.cpp \ |
18 | OTDriver.cpp \ | 18 | OTDriver.cpp \ |
19 | OTDriverList.cpp \ | 19 | OTDriverList.cpp \ |
20 | OTHCISocket.cpp \ | 20 | OTHCISocket.cpp \ |
21 | OTInquiry.cpp \ | 21 | OTInquiry.cpp \ |
22 | OTDeviceAddress.cpp \ | 22 | OTDeviceAddress.cpp \ |
23 | OTUUID.cpp \ | 23 | OTUUID.cpp \ |
24 | OTSDPAttribute.cpp \ | 24 | OTSDPAttribute.cpp \ |
25 | OTSDPService.cpp \ | 25 | OTSDPService.cpp \ |
26 | OTIcons.cpp \ | 26 | OTIcons.cpp \ |
27 | OTPeer.cpp \ | 27 | OTPeer.cpp \ |
28 | OTGateway.cpp \ | 28 | OTGateway.cpp \ |
29 | Opietooth.cpp | 29 | Opietooth.cpp |
30 | INCLUDEPATH+= $(OPIEDIR)/include ../networksettings2 | 30 | INCLUDEPATH+= $(OPIEDIR)/include ../networksettings2 |
31 | DEPENDPATH+= $(OPIEDIR)/include | 31 | DEPENDPATH+= $(OPIEDIR)/include |
32 | LIBS += -lqpe -lopiecore2 -lbluetooth -lnetworksettings2 | 32 | LIBS += -lqpe -lopiecore2 -lbluetooth -lnetworksettings2 |
33 | INTERFACES= OTMainGUI.ui OTSniffGUI.ui OTScanGUI.ui OTManageGUI.ui OTPairingGUI.ui | 33 | INTERFACES= OTMainGUI.ui OTSniffGUI.ui OTScanGUI.ui OTManageGUI.ui OTPairingGUI.ui |
34 | TARGET = opietooth2 | 34 | TARGET = opietooth2 |
35 | VERSION = 1.0.0 | 35 | VERSION = 1.0.0 |
36 | 36 | ||
37 | include ( $(OPIEDIR)/include.pro ) | 37 | include ( $(OPIEDIR)/include.pro ) |
38 | |||
39 | !isEmpty( LIBBLUEZ_INC_DIR ) { | ||
40 | INCLUDEPATH += $$LIBBLUEZ_INC_DIR | ||
41 | } | ||
42 | !isEmpty( LIBBLUEZ_LIB_DIR ) { | ||
43 | LIBS += -L$$LIBBLUEZ_LIB_DIR | ||
44 | } | ||
diff --git a/noncore/settings/networksettings2/profile/profilerun.cpp b/noncore/settings/networksettings2/profile/profilerun.cpp index ab57a00..acb67bd 100644 --- a/noncore/settings/networksettings2/profile/profilerun.cpp +++ b/noncore/settings/networksettings2/profile/profilerun.cpp | |||
@@ -1,27 +1,27 @@ | |||
1 | #include <resources.h> | 1 | #include <resources.h> |
2 | 2 | ||
3 | #include "profilerun.h" | 3 | #include "profilerun.h" |
4 | 4 | ||
5 | State_t ProfileRun::detectState( void ) { | 5 | State_t ProfileRun::detectState( void ) { |
6 | if( Data->Disabled ) { | 6 | if( Data->Disabled ) { |
7 | return Disabled; | 7 | return Disabled; |
8 | } | 8 | } |
9 | return Unknown; | 9 | return Unknown; |
10 | } | 10 | } |
11 | 11 | ||
12 | QString ProfileRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 12 | QString ProfileRun::setMyState( NodeCollection * NC, Action_t A, bool ) { |
13 | owarn << "Profile " << Data->Disabled << oendl; | 13 | odebug << "Profile " << Data->Disabled << oendl; |
14 | if( A == Disable ) { | 14 | if( A == Disable ) { |
15 | if( ! Data->Disabled ) { | 15 | if( ! Data->Disabled ) { |
16 | Data->Disabled = 1; | 16 | Data->Disabled = 1; |
17 | NC->setModified( 1 ); | 17 | NC->setModified( 1 ); |
18 | } | 18 | } |
19 | } else if( A == Enable ) { | 19 | } else if( A == Enable ) { |
20 | if( Data->Disabled ) { | 20 | if( Data->Disabled ) { |
21 | Data->Disabled = 0; | 21 | Data->Disabled = 0; |
22 | NC->setModified( 1 ); | 22 | NC->setModified( 1 ); |
23 | } | 23 | } |
24 | } | 24 | } |
25 | 25 | ||
26 | return QString(); | 26 | return QString(); |
27 | } | 27 | } |
diff --git a/noncore/settings/networksettings2/usb/usbrun.cpp b/noncore/settings/networksettings2/usb/usbrun.cpp index eb439c1..de8c8a2 100644 --- a/noncore/settings/networksettings2/usb/usbrun.cpp +++ b/noncore/settings/networksettings2/usb/usbrun.cpp | |||
@@ -17,103 +17,104 @@ State_t USBRun::detectState( void ) { | |||
17 | QFile F( S ); | 17 | QFile F( S ); |
18 | Log(("Detecting for %s\n", NC->name().latin1() )); | 18 | Log(("Detecting for %s\n", NC->name().latin1() )); |
19 | 19 | ||
20 | if( F.open( IO_ReadOnly ) ) { | 20 | if( F.open( IO_ReadOnly ) ) { |
21 | // could open file -> read interface and assign | 21 | // could open file -> read interface and assign |
22 | QString X; | 22 | QString X; |
23 | QTextStream TS(&F); | 23 | QTextStream TS(&F); |
24 | X = TS.readLine(); | 24 | X = TS.readLine(); |
25 | Log(("%s exists\n", S.latin1() )); | 25 | Log(("%s exists\n", S.latin1() )); |
26 | // find interface | 26 | // find interface |
27 | if( handlesInterface( X ) ) { | 27 | if( handlesInterface( X ) ) { |
28 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | 28 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); |
29 | It.current(); | 29 | It.current(); |
30 | ++It ) { | 30 | ++It ) { |
31 | Run = It.current(); | 31 | Run = It.current(); |
32 | if( X == Run->Name ) { | 32 | if( X == Run->Name ) { |
33 | NC->assignInterface( Run ); | 33 | NC->assignInterface( Run ); |
34 | return IsUp; | 34 | return IsUp; |
35 | } | 35 | } |
36 | } | 36 | } |
37 | } | 37 | } |
38 | } | 38 | } |
39 | 39 | ||
40 | Log(("Assigned %p\n", NC->assignedInterface() )); | 40 | Log(("Assigned %p\n", NC->assignedInterface() )); |
41 | |||
41 | if( ( Run = NC->assignedInterface() ) ) { | 42 | if( ( Run = NC->assignedInterface() ) ) { |
42 | // we already have an interface assigned -> still present ? | 43 | // we already have an interface assigned -> still present ? |
43 | if( ! Run->IsUp ) { | 44 | if( ! Run->IsUp ) { |
44 | // usb is still free -> keep assignment | 45 | // usb is still free -> keep assignment |
45 | return Available; | 46 | return Available; |
46 | } // else interface is up but NOT us -> some other profile | 47 | } // else interface is up but NOT us -> some other profile |
47 | } | 48 | } |
48 | 49 | ||
49 | // nothing (valid) assigned to us | 50 | // nothing (valid) assigned to us |
50 | NC->assignInterface( 0 ); | 51 | NC->assignInterface( 0 ); |
51 | 52 | ||
52 | // find possible interface | 53 | // find possible interface |
53 | for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); | 54 | if( getInterface() ) { |
54 | It.current(); | 55 | // proper type, and Not UP -> free |
55 | ++It ) { | 56 | // usb cables are currently always available when requested |
56 | Run = It.current(); | 57 | // until we can detect if we are plugged in |
57 | 58 | return Available; | |
58 | Log(("%s %d %d=%d %d\n", | ||
59 | Run->Name.latin1(), | ||
60 | handlesInterface( Run->Name ), | ||
61 | Run->CardType, ARPHRD_ETHER, | ||
62 | ! Run->IsUp )); | ||
63 | |||
64 | if( handlesInterface( Run->Name ) && | ||
65 | Run->CardType == ARPHRD_ETHER && | ||
66 | ! Run->IsUp | ||
67 | ) { | ||
68 | // proper type, and Not UP -> free | ||
69 | // usb cables are currently always available when requested | ||
70 | // until we can detect if we are plugged in | ||
71 | return Available; | ||
72 | } | ||
73 | } | 59 | } |
74 | 60 | ||
75 | return Unavailable; | 61 | return Unavailable; |
76 | } | 62 | } |
77 | 63 | ||
78 | QString USBRun::setMyState( NodeCollection * NC, Action_t A, bool ) { | 64 | QString USBRun::setMyState( NodeCollection * NC, Action_t A, bool ) { |
79 | 65 | ||
80 | // nothing needs to be done to 'activate' or 'deactivate' | 66 | InterfaceInfo * I = getInterface(); |
81 | // a cable | 67 | |
68 | if( ! I ) { | ||
69 | return QString("No usb device available"); | ||
70 | } | ||
71 | |||
72 | Log(( "Grabbed USB interface %s\n", I->Name.latin1() )); | ||
73 | // grab this interface | ||
74 | NC->assignInterface( I ); | ||
75 | |||
82 | return QString(); | 76 | return QString(); |
83 | } | 77 | } |
84 | 78 | ||
85 | // get interface that is free or assigned to us | 79 | // get interface that is free or assigned to us |
86 | InterfaceInfo * USBRun::getInterface( void ) { | 80 | InterfaceInfo * USBRun::getInterface( void ) { |
87 | 81 | ||
88 | System & S = NSResources->system(); | 82 | System & S = NSResources->system(); |
89 | InterfaceInfo * best = 0, * Run; | 83 | InterfaceInfo * best = 0, * Run; |
90 | QRegExp R( "usb[0-9abcdef]" ); | ||
91 | 84 | ||
92 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); | 85 | for( QDictIterator<InterfaceInfo> It(S.interfaces()); |
93 | It.current(); | 86 | It.current(); |
94 | ++It ) { | 87 | ++It ) { |
95 | Run = It.current(); | 88 | Run = It.current(); |
89 | |||
90 | Log(("%s %d %d=%d %d\n", | ||
91 | Run->Name.latin1(), | ||
92 | handlesInterface( Run->Name ), | ||
93 | Run->CardType, ARPHRD_ETHER, | ||
94 | ! Run->IsUp )); | ||
95 | |||
96 | if( handlesInterface( Run->Name ) && | 96 | if( handlesInterface( Run->Name ) && |
97 | Run->CardType == ARPHRD_ETHER | 97 | Run->CardType == ARPHRD_ETHER |
98 | ) { | 98 | ) { |
99 | // this is a USB card | 99 | // this is a USB card |
100 | if( Run->assignedConnection() == netNode()->connection() ) { | 100 | if( Run->assignedConnection() == netNode()->connection() ) { |
101 | // assigned to us | 101 | // assigned to us |
102 | return Run; | 102 | return Run; |
103 | } else if( Run->assignedConnection() == 0 ) { | 103 | } else if( ! Run->IsUp && |
104 | Run->assignedConnection() == 0 ) { | ||
104 | // free | 105 | // free |
105 | best = Run; | 106 | best = Run; |
106 | } | 107 | } // UP or not assigned to us |
107 | } | 108 | } |
108 | } | 109 | } |
109 | return best; // can be 0 | 110 | return best; // can be 0 |
110 | } | 111 | } |
111 | 112 | ||
112 | bool USBRun::handlesInterface( const QString & S ) { | 113 | bool USBRun::handlesInterface( const QString & S ) { |
113 | return Pat.match( S ) >= 0; | 114 | return Pat.match( S ) >= 0; |
114 | } | 115 | } |
115 | 116 | ||
116 | bool USBRun::handlesInterface( InterfaceInfo * I ) { | 117 | bool USBRun::handlesInterface( InterfaceInfo * I ) { |
117 | return handlesInterface( I->Name ); | 118 | return handlesInterface( I->Name ); |
118 | } | 119 | } |
119 | 120 | ||