summaryrefslogtreecommitdiff
path: root/noncore/net/opietooth/lib/device.cc
authorzecke <zecke>2002-06-15 23:07:12 (UTC)
committer zecke <zecke>2002-06-15 23:07:12 (UTC)
commit0675d8e8ea5f599af9f433e1e86b63953b26639d (patch) (unidiff)
treefb3aaa512aa8f4600de119574999749758d38139 /noncore/net/opietooth/lib/device.cc
parent3f49c8a3006c4c51cf7d4a2f84a3926efd3e1820 (diff)
downloadopie-0675d8e8ea5f599af9f433e1e86b63953b26639d.zip
opie-0675d8e8ea5f599af9f433e1e86b63953b26639d.tar.gz
opie-0675d8e8ea5f599af9f433e1e86b63953b26639d.tar.bz2
fix it
Diffstat (limited to 'noncore/net/opietooth/lib/device.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/device.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/noncore/net/opietooth/lib/device.cc b/noncore/net/opietooth/lib/device.cc
index 5234996..5edfc03 100644
--- a/noncore/net/opietooth/lib/device.cc
+++ b/noncore/net/opietooth/lib/device.cc
@@ -1,39 +1,40 @@
1 1
2#include <signal.h> 2#include <signal.h>
3 3
4#include <opie/oprocess.h> 4#include <opie/oprocess.h>
5 5
6#include "device.h" 6#include "device.h"
7 7
8using namespace OpieTooth; 8using namespace OpieTooth;
9 9
10namespace { 10namespace {
11 int parsePid( const QCString& par ){ 11 int parsePid( const QCString& par ){
12 int id=0; 12 int id=0;
13 QString string( par ); 13 QString string( par );
14 QStringList list = QStringList::split( '\n', string ); 14 QStringList list = QStringList::split( '\n', string );
15 for( QStringList::Iterator it = list.begin(); it != list.end(); ++it ){ 15 for( QStringList::Iterator it = list.begin(); it != list.end(); ++it ){
16 qWarning("parsePID: %s", (*it).latin1() );
16 if( !(*it).startsWith("CSR") ){ 17 if( !(*it).startsWith("CSR") ){
17 id = (*it).toInt(); 18 id = (*it).toInt();
18 break; 19 break;
19 } 20 }
20 } 21 }
21 return id; 22 return id;
22 } 23 }
23} 24}
24 25
25Device::Device(const QString &device, const QString &mode ) 26Device::Device(const QString &device, const QString &mode )
26 : QObject(0, "device" ) { 27 : QObject(0, "device" ) {
27 qWarning("OpieTooth::Device create" ); 28 qWarning("OpieTooth::Device create" );
28 m_hci = 0; 29 m_hci = 0;
29 m_process = 0; 30 m_process = 0;
30 m_attached = false; 31 m_attached = false;
31 m_device = device; 32 m_device = device;
32 m_mode = mode; 33 m_mode = mode;
33 attach(); 34 attach();
34} 35}
35Device::~Device(){ 36Device::~Device(){
36 detach(); 37 detach();
37} 38}
38void Device::attach(){ 39void Device::attach(){
39 qWarning("attaching %s %s", m_device.latin1(), m_mode.latin1() ); 40 qWarning("attaching %s %s", m_device.latin1(), m_mode.latin1() );
@@ -57,86 +58,92 @@ void Device::attach(){
57 } 58 }
58 }; 59 };
59} 60}
60void Device::detach(){ 61void Device::detach(){
61 delete m_hci; 62 delete m_hci;
62 delete m_process; 63 delete m_process;
63 // kill the pid we got 64 // kill the pid we got
64 if(m_attached ){ 65 if(m_attached ){
65 //kill the pid 66 //kill the pid
66 qWarning( "killing" ); 67 qWarning( "killing" );
67 kill(pid, 9); 68 kill(pid, 9);
68 } 69 }
69 qWarning("detached" ); 70 qWarning("detached" );
70} 71}
71bool Device::isLoaded()const{ 72bool Device::isLoaded()const{
72 return m_attached; 73 return m_attached;
73} 74}
74QString Device::devName()const { 75QString Device::devName()const {
75 return QString::fromLatin1("hci0"); 76 return QString::fromLatin1("hci0");
76}; 77};
77void Device::slotExited( OProcess* proc) 78void Device::slotExited( OProcess* proc)
78{ 79{
79 qWarning("prcess exited" ); 80 qWarning("prcess exited" );
80 if(proc== m_process ){ 81 if(proc== m_process ){
82 qWarning("proc == m_process" );
81 if( m_process->normalExit() ){ // normal exit 83 if( m_process->normalExit() ){ // normal exit
84 qWarning("normalExit" );
82 int ret = m_process->exitStatus(); 85 int ret = m_process->exitStatus();
83 if( ret == 0 ){ // attached 86 if( ret == 0 ){ // attached
84 qWarning("attached" ); 87 qWarning("attached" );
85 qWarning("Output: %s", m_output.data() ); 88 qWarning("Output: %s", m_output.data() );
86 pid = parsePid( m_output ); 89 pid = parsePid( m_output );
87 qWarning("Pid = %d", pid ); 90 qWarning("Pid = %d", pid );
88 // now hciconfig hci0 up ( determine hciX FIXME) 91 // now hciconfig hci0 up ( determine hciX FIXME)
89 // and call hciconfig hci0 up 92 // and call hciconfig hci0 up
90 // FIXME hardcoded to hci0 now :( 93 // FIXME hardcoded to hci0 now :(
91 m_hci = new OProcess( ); 94 m_hci = new OProcess( );
92 *m_hci << "hciconfig"; 95 *m_hci << "hciconfig";
93 *m_hci << "hci0 up"; 96 *m_hci << "hci0 up";
94 connect(m_hci, SIGNAL( processExited(OProcess*) ), 97 connect(m_hci, SIGNAL( processExited(OProcess*) ),
95 this, SLOT( slotExited(OProcess* ) ) ); 98 this, SLOT( slotExited(OProcess* ) ) );
96 if(!m_hci->start() ){ 99 if(!m_hci->start() ){
97 qWarning("could not start" ); 100 qWarning("could not start" );
98 m_attached = false; 101 m_attached = false;
99 emit device("hci0", false ); 102 emit device("hci0", false );
100 } 103 }
101 }else{ 104 }else{
105 qWarning("crass" );
102 m_attached = false; 106 m_attached = false;
103 emit device("hci0", false ); 107 emit device("hci0", false );
104 108
105 } 109 }
106 } 110 }
107 delete m_process; 111 delete m_process;
108 m_process = 0; 112 m_process = 0;
109 }else if(proc== m_hci ){ 113 }else if(proc== m_hci ){
110 qWarning("M HCI exited" ); 114 qWarning("M HCI exited" );
111 if( m_hci->normalExit() ){ 115 if( m_hci->normalExit() ){
112 qWarning("normal exit" ); 116 qWarning("normal exit" );
113 int ret = m_hci->exitStatus(); 117 int ret = m_hci->exitStatus();
114 if( ret == 0 ){ 118 if( ret == 0 ){
115 qWarning("attached really really attached" ); 119 qWarning("attached really really attached" );
116 m_attached = true; 120 m_attached = true;
117 emit device("hci0", true ); 121 emit device("hci0", true );
118 }else{ 122 }else{
119 qWarning( "failed" ); 123 qWarning( "failed" );
120 emit device("hci0", false ); 124 emit device("hci0", false );
121 m_attached = false; 125 m_attached = false;
122 } 126 }
123 }// normal exit 127 }// normal exit
124 delete m_hci; 128 delete m_hci;
125 m_hci = 0; 129 m_hci = 0;
126 } 130 }
127} 131}
128void Device::slotStdOut(OProcess* proc, char* chars, int len) 132void Device::slotStdOut(OProcess* proc, char* chars, int len)
129{ 133{
130 qWarning("std out" ); 134 qWarning("std out" );
131 if( len <1 ) 135 if( len <1 ){
136 qWarning( "len < 1 " );
132 return; 137 return;
138 }
133 if(proc == m_process ){ 139 if(proc == m_process ){
134 QCString string( chars, len+1 ); // \0 == +1 140 QCString string( chars, len+1 ); // \0 == +1
135 qWarning("output: %s", string.data() ); 141 qWarning("output: %s", string.data() );
136 m_output.append( string.data() ); 142 m_output.append( string.data() );
137 } 143 }
138} 144}
139void Device::slotStdErr(OProcess*, char*, int ) 145void Device::slotStdErr(OProcess* proc, char* chars, int len)
140{ 146{
141 qWarning("std err" ); 147 qWarning("std err" );
148 slotStdOut( proc, chars, len );
142} 149}