summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/lancard/lancardrun.cpp
Unidiff
Diffstat (limited to 'noncore/settings/networksettings2/lancard/lancardrun.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings2/lancard/lancardrun.cpp110
1 files changed, 33 insertions, 77 deletions
diff --git a/noncore/settings/networksettings2/lancard/lancardrun.cpp b/noncore/settings/networksettings2/lancard/lancardrun.cpp
index 1544ddc..470b797 100644
--- a/noncore/settings/networksettings2/lancard/lancardrun.cpp
+++ b/noncore/settings/networksettings2/lancard/lancardrun.cpp
@@ -4,13 +4,15 @@
4#include <resources.h> 4#include <resources.h>
5#include "lancardrun.h" 5#include "lancardrun.h"
6 6
7void LanCardRun::detectState( NodeCollection * NC ) { 7State_t LanCardRun::detectState( void ) {
8 8
9 // unavailable : no card found 9 // unavailable : no card found
10 // available : card found and assigned to us or free 10 // available : card found and assigned to us or free
11 // up : card found and assigned to us and up 11 // up : card found and assigned to us and up
12 12
13 QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number()); 13 NodeCollection * NC = nodeCollection();
14 QString S = QString( "/tmp/profile-%1.up" ).
15 arg( NC->number());
14 System & Sys = NSResources->system(); 16 System & Sys = NSResources->system();
15 InterfaceInfo * Run; 17 InterfaceInfo * Run;
16 18
@@ -28,26 +30,23 @@ void LanCardRun::detectState( NodeCollection * NC ) {
28 ++It ) { 30 ++It ) {
29 Run = It.current(); 31 Run = It.current();
30 if( X == Run->Name ) { 32 if( X == Run->Name ) {
31 Run->assignNode( netNode() ); 33 NC->assignInterface( Run );
32 assignInterface( Run ); 34 return IsUp;
33 NC->setCurrentState( IsUp );
34 return;
35 } 35 }
36 } 36 }
37 } 37 }
38 } 38 }
39 39
40 if( ( Run = assignedInterface() ) ) { 40 if( ( Run = NC->assignedInterface() ) ) {
41 // we already have an interface assigned -> still present ? 41 // we already have an interface assigned -> still present ?
42 if( ! Run->IsUp ) { 42 if( ! Run->IsUp ) {
43 // usb is still free -> keep assignment 43 // usb is still free -> keep assignment
44 NC->setCurrentState( Available ); 44 return Available;
45 return;
46 } // else interface is up but NOT us -> some other profile 45 } // else interface is up but NOT us -> some other profile
47 } 46 }
48 47
49 // nothing (valid) assigned to us 48 // nothing (valid) assigned to us
50 assignInterface( 0 ); 49 NC->assignInterface( 0 );
51 50
52 // find possible interface 51 // find possible interface
53 for( QDictIterator<InterfaceInfo> It(Sys.interfaces()); 52 for( QDictIterator<InterfaceInfo> It(Sys.interfaces());
@@ -63,81 +62,38 @@ void LanCardRun::detectState( NodeCollection * NC ) {
63 ! Run->IsUp 62 ! Run->IsUp
64 ) { 63 ) {
65 // proper type, and Not UP -> free 64 // proper type, and Not UP -> free
66 NC->setCurrentState( Off ); 65 return Off;
67 return;
68 } 66 }
69 } 67 }
70 // no free found 68 // no free found
71 69
72 NC->setCurrentState( Unavailable ); 70 return Unavailable;
73
74} 71}
75 72
76bool LanCardRun::setState( NodeCollection * NC, Action_t A, bool ) { 73QString LanCardRun::setMyState( NodeCollection * NC, Action_t A, bool ) {
77 74
78 // we only handle activate and deactivate 75 if( A == Activate ) {
79 switch( A ) { 76 InterfaceInfo * N = getInterface();
80 case Activate : 77
81 { 78 if( ! N ) {
82 if( NC->currentState() != Off ) { 79 // no interface available
83 return 0; 80 NC->setCurrentState( Unavailable );
84 } 81 return tr("No interface found");
85 InterfaceInfo * N = getInterface(); 82 }
86 if( ! N ) { 83
87 // no interface available 84 // because we were OFF the interface
88 NC->setCurrentState( Unavailable ); 85 // we get back is NOT assigned
89 return 0; 86 NC->assignInterface( N );
90 } 87 NC->setCurrentState( Available );
91 // because we were OFF the interface 88 return QString();
92 // we get back is NOT assigned
93 N->assignNode( netNode() );
94 assignInterface( N );
95 NC->setCurrentState( Available );
96 return 1;
97 }
98 case Deactivate :
99 if( NC->currentState() == IsUp ) {
100 // bring down first
101 if( ! connection()->setState( Down ) )
102 // could not ...
103 return 0;
104 } else if( NC->currentState() != Available ) {
105 return 1;
106 }
107 assignedInterface()->assignNode( 0 ); // release
108 assignInterface( 0 );
109 NC->setCurrentState( Off );
110 return 1;
111 default :
112 // FT
113 break;
114 } 89 }
115 return 0;
116}
117 90
118bool LanCardRun::canSetState( State_t Curr, Action_t A ) { 91 if( A == Deactivate ) {
119 // we only handle up down activate and deactivate 92 NC->assignInterface( 0 );
120 switch( A ) { 93 NC->setCurrentState( Off );
121 case Activate :
122 { // at least available
123 if( Curr == Available ) {
124 return 1;
125 }
126 // or we can make one available
127 InterfaceInfo * N = getInterface();
128 if( ! N || N->assignedNode() != 0 ) {
129 // non available or assigned
130 return 0;
131 }
132 return 1;
133 }
134 case Deactivate :
135 return ( Curr >= Available );
136 default :
137 // FT
138 break;
139 } 94 }
140 return 0; 95
96 return QString();
141} 97}
142 98
143// get interface that is free or assigned to us 99// get interface that is free or assigned to us
@@ -158,10 +114,10 @@ InterfaceInfo * LanCardRun::getInterface( void ) {
158 ) 114 )
159 ) { 115 ) {
160 // this is a LAN card 116 // this is a LAN card
161 if( Run->assignedNode() == netNode() ) { 117 if( Run->assignedConnection() == netNode()->connection() ) {
162 // assigned to us 118 // assigned to us
163 return Run; 119 return Run;
164 } else if( Run->assignedNode() == 0 ) { 120 } else if( Run->assignedConnection() == 0 ) {
165 // free 121 // free
166 best = Run; 122 best = Run;
167 } 123 }